About b3dpolygon.cxx (basegfx)

Julien Nabet serval2412 at yahoo.fr
Mon Apr 1 12:37:00 PDT 2013


On 01/04/2013 19:15, Markus Mohrhard wrote:
> Hey julien,
> There are a lot of iterators stuff in
>
>     core/basegfx/source/polygon/b3dpolygon.cxx, I tried to fix 'prefix
>     ++/--
>     operators for non-primitive types' errors (provided by cppcheck)
>     but I saw
>     several iterator things I'm not sure, eg:
>     ...
>     Isn't aEnd invalidated by push_back call?
>
>
>
> No. Push_back only invalidates if it has to reallocate the memory for 
> the elements which does not happen if you make sure that enough space 
> is reserved. Additionally we have two different vectors here and 
> therefore we have no invalidation in any case.
Ok (I'll try to remember this)
>
>
>     Isn't aEnd += nCount dangerous? (if aEnd tries to go further than
>     rOriginal.maVector.end())
>
>
> It very much depends on what nCount is. If nCount is always <= 
> rOriginal.maVector.size then this call is perfectly safe. I would add 
> an assert statement into this method to make sure that the assumption 
> is always true.
Done, see 
http://cgit.freedesktop.org/libreoffice/core/commit/?id=9b40d14eb91573e62bdd8a6b9157f623a8c4cf7f
>
>
>     ....
>
>     Isn't aEnd iterator invalidated by insert call?
>
>
> No. Notice that there are two different vectors involved. 
> rSource.maVector which provides aStart and aEnd is not changed. This 
> is just the range version of the the insert method that insert all 
> elements between aStart and aEnd into maVector.
You're right (as always! :-)), I should have noticed this.
>
>
>     There are others in this file but again, I'm not sure, I'm just
>     wondering.
>
>
> Except for the case with nCount which depends on the context these 
> cases are correct. The way forward is to add an assert statement to 
> make sure that this assumption is true and check all the callers.
Thank you Markus for your detailed answer and your patience.

Regards,

Julien
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/libreoffice/attachments/20130401/fc476f0e/attachment.html>


More information about the LibreOffice mailing list