Start edit mode for the shape in the document, double-click on a word
which has a "level 2" bullet associated with it -> crash.
This is a regression from c8b607b7c0
(tdf#163883 editeng RTF export: fix broken offsets into the para style
table, 2024-11-19), the direct cause is that ImpEditEngine::WriteRTF()
maps all style pointers to a style ID and once we write the parent
property in the style table, we unconditionally dereference our search
result, because we know all styles should be in that map.
The root of the problem seems to be that once parent styles are marked
as used for the "only write used styles for the clipboard" case, those
parents themselves can have parents, and we didn't mark those as used.
Combined with the unconditional dereference, this leads to a crash. Fix
this by walking up the parent chain till we get no parent.
This assumes that importers create a valid document model, so there
can't be loops while walking the parent chain. If that would be a
problem in practice, we could check for that in the future.
Change-Id: I4b416e78f26bf455040d95ee8ed220cfe870e33a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178703
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
Tested-by: Jenkins
Edit Engine
In OpenOffice.org build DEV300m72 this module was split off from svx but it
has no dependencies on svx (nor on sfx2) while in turn svx depends on editeng
Read more in the mailing list post: http://www.mail-archive.com/dev@openoffice.org/msg13237.html
If you build LibreOffice with dbgutil, you have some extended debug keys:
- Ctrl+Alt+F1 - draws the paragraph rectangles in different colors
- Ctrl+Alt+F11 - toggles dumping the edit engine state to the "editenginedump.log" on draw
- Ctrl+Alt+F12 - dumps the current edit engine state to "editenginedump.log"