Scintilla can segfault when scroll_to_line is called from a NotifyPainted handler. When gtk is used, the scroll code calls down to the Paint method and, if a line layout cache is in use, can cause corruption because a layout object can be deleted in the inner method while it is referenced in the outer method.

The quick fix is not to scroll from the handler, but I'd like to prevent this bug from happening again. The options are to detect re-entry into the Paint method or to modify the layout cache so it handles re-entry. My initial thought is to modify the layout cache, but it would be better to add the re-entry check if other parts of Editor::Paint can't handle re-entry. Which approach should I implement?

Thanks,

John
_______________________________________________
Scintilla-interest mailing list
[email protected]
http://mailman.lyra.org/mailman/listinfo/scintilla-interest

Reply via email to