sw_redlinehide: fix assert caused by buggy lcl_ModifyOfst
commit0acde7514e666fc04805fd36503bd174162336ca
authorMichael Stahl <Michael.Stahl@cib.de>
Mon, 21 Jan 2019 11:30:20 +0000 (21 12:30 +0100)
committerMichael Stahl <Michael.Stahl@cib.de>
Mon, 21 Jan 2019 13:53:29 +0000 (21 14:53 +0100)
tree6a0f1d2cd4963cff538127076621ee8c171637ea
parent1b1999009962b9d79858139bd7573947f78e6669
sw_redlinehide: fix assert caused by buggy lcl_ModifyOfst

converting ooo67907-1.doc to ODT asserts in fillSoftPageBreakList()
while mapping an invalid (too large) GetOfst() of a follow frame.

There are some problems with the lcl_ModifyOfst() implementation and
usage:

1. the implementation iterates over all follows; but the follows will
   get the same SwClientNotify() call as the frame itself, so in effect
   the follows' Ofsts will be modified multiple times

2. the calls to lcl_ModifyOfst pass in a positive nLen whether the
   text is deleted or inserted; surely for deletions the Ofst should be
   subtracted from instead of added to

3. the special-casing of RES_DEL_CHR to COMPLETE_STRING while
   RES_DEL_TXT uses the length does not appear to be justified

The assert happens since b15f1ed2a1df45a57b587ac90efa90c1c18866fc
but the lcl_ModifyOfst logic never made sense.

Change-Id: Ie92628515bbee0fcc2123eb412057d8c0fd0b2f1
Reviewed-on: https://gerrit.libreoffice.org/66679
Tested-by: Jenkins
Reviewed-by: Michael Stahl <Michael.Stahl@cib.de>
sw/source/core/text/txtfrm.cxx