Hi Julien,
julien2412 píše v So 21. 09. 2013 v 03:55 -0700:
I noticed some weird things in SwTable::CheckConsistency(), eg:
   2102     std::list< RowSpanCheck > aRowSpanCells;
   2103     std::list< RowSpanCheck >::iterator aIter = aRowSpanCells.end();
then I see ++aIter several times some lines later.
How can it work since:
aRowSpanCells isn't initialized
aIter is at the end of aRowSpanCells
?
The code is curious, so I'll just quickly answer without studying it
deeply :-) - I guess during the first pass the ++aIter is not accessed
at all.  Then at the end of the 1st pass, it is initialized (aIter =
aRowSpanCells.begin(); at the end), and the we can do ++aIter as we
want...
Just nitpicking but I think that this part:
   2128                     std::list< RowSpanCheck >::iterator aEraseIter =
aIter;
   2129                     ++aIter;
   2130                     aRowSpanCells.erase( aEraseIter );
could be replaced by:
aIter = aRowSpanCells.erase(aIter);
since "erase "returns an iterator even before C++11 standard (see
http://www.cplusplus.com/reference/list/list/erase/)
Could work - but as I did not look well enough at this code, please
don't take it as 'go ahead & clean it up' :-) - some checking of the
history of that file could give you more clues about that I guess.
Thanks for looking into this!
All the best,
Kendy
Context
   
 
  Privacy Policy |
  
Impressum (Legal Info) |
  
Copyright information: Unless otherwise specified, all text and images
  on this website are licensed under the
  
Creative Commons Attribution-Share Alike 3.0 License.
  This does not include the source code of LibreOffice, which is
  licensed under the Mozilla Public License (
MPLv2).
  "LibreOffice" and "The Document Foundation" are
  registered trademarks of their corresponding registered owners or are
  in actual use as trademarks in one or more countries. Their respective
  logos and icons are also subject to international copyright laws. Use
  thereof is explained in our 
trademark policy.