diff options
author | Noel Grandin <noel.grandin@collabora.co.uk> | 2020-08-20 11:27:29 +0200 |
---|---|---|
committer | Noel Grandin <noel.grandin@collabora.co.uk> | 2020-08-20 16:37:51 +0200 |
commit | 445cf499666f21c2d480ce1df9ce6004b9450b64 (patch) | |
tree | a9a085e5d8486176c6580261eaf686737927c4ac /include/svx | |
parent | 901add54cd5191b5a41ec11baddd669954c34025 (diff) |
tdf#132940 Crash in mergedlo!vcl::Region::operator=
We had a SdrPageWindow accessing a SdPaintWindow that had already been
freed.
Turns that SdrPageWindow can be "patched" more than once given enough
stuff going on in writer, so make the call sites restore the previous
state as the stack unwinds.
Change-Id: Ia1ef5c9b2f818b7873e8e739c9cdf257554e403a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/101044
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'include/svx')
-rw-r--r-- | include/svx/sdrpagewindow.hxx | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/include/svx/sdrpagewindow.hxx b/include/svx/sdrpagewindow.hxx index 1e6e9301b0cb..c7278233c313 100644 --- a/include/svx/sdrpagewindow.hxx +++ b/include/svx/sdrpagewindow.hxx @@ -66,8 +66,8 @@ public: rtl::Reference< sdr::overlay::OverlayManager > const & GetOverlayManager() const; // #i72752# allow patcing SdrPaintWindow from SdrPageView::DrawLayer if needed - void patchPaintWindow(SdrPaintWindow& rPaintWindow); - void unpatchPaintWindow(); + [[nodiscard]] SdrPaintWindow* patchPaintWindow(SdrPaintWindow& rPaintWindow); + void unpatchPaintWindow(SdrPaintWindow* pPreviousPaintWindow); // the repaint method. For migration from pPaintProc, use one more parameter void PrePaint(); |