[REVIEW-3-6] fix for fdo#52351, remove conditional formatting if all its cells are removed

Kohei Yoshida kohei.yoshida at gmail.com
Mon Aug 6 08:42:42 PDT 2012


On Mon, Aug 6, 2012 at 11:21 AM, Stephan Bergmann <sbergman at redhat.com> wrote:
> On 08/06/2012 04:08 PM, Kohei Yoshida wrote:
>>
>> Regarding
>>
>>          iterator itr = begin();
>>          while(itr != end())
>>          {
>>              if(itr->GetRange().empty())
>>                  maConditionalFormats.erase(itr++);
>>              else
>>                  ++itr;
>>          }
>>
>> that erase line causes an undefined behavior, and subtle, hard-to-find
>> bug later.  maConditionalFormats is a boost::ptr_set which uses
>> std::set in its implementation.  The std::set's erase call invalidates
>> the iterator of the element that has just been deleted, and that line
>> increments the iterator after it's been invalidated.
>
>
> No, the line first increments itr, then calls erase (on the old itr value).

Ok then.  I have no problem with it.

Kohei


More information about the LibreOffice mailing list