drawinglayer/source/primitive2d/BufferedDecompositionGroupPrimitive2D.cxx |    
2 ++
 drawinglayer/source/primitive2d/BufferedDecompositionPrimitive2D.cxx      |    
2 ++
 2 files changed, 4 insertions(+)

New commits:
commit e81f4656225cd474086340481a4505e3e932f8e6
Author:     Caolán McNamara <caolan.mcnam...@collabora.com>
AuthorDate: Mon Feb 19 10:59:03 2024 +0000
Commit:     Caolán McNamara <caolan.mcnam...@collabora.com>
CommitDate: Mon Feb 19 13:18:00 2024 +0100

    crashtesting: bump refcount during setBuffered2DDecomposition
    
    otherwise if another thread drops the refcounf to 0 while
    setBuffered2DDecomposition is in flight the object goes away underneath
    us.
    
    Change-Id: I65d458306bee0c4f2e80fd2925d22cf121920fc9
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/163591
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caolan.mcnam...@collabora.com>

diff --git 
a/drawinglayer/source/primitive2d/BufferedDecompositionGroupPrimitive2D.cxx 
b/drawinglayer/source/primitive2d/BufferedDecompositionGroupPrimitive2D.cxx
index a24816ad5f3a..4a09d0490ce9 100644
--- a/drawinglayer/source/primitive2d/BufferedDecompositionGroupPrimitive2D.cxx
+++ b/drawinglayer/source/primitive2d/BufferedDecompositionGroupPrimitive2D.cxx
@@ -53,7 +53,9 @@ namespace drawinglayer::primitive2d
 {
 void flushBufferedDecomposition(BufferedDecompositionGroupPrimitive2D& rTarget)
 {
+    rTarget.acquire();
     rTarget.setBuffered2DDecomposition(Primitive2DContainer());
+    rTarget.release();
 }
 
 const Primitive2DContainer&
diff --git 
a/drawinglayer/source/primitive2d/BufferedDecompositionPrimitive2D.cxx 
b/drawinglayer/source/primitive2d/BufferedDecompositionPrimitive2D.cxx
index 61eb34251913..ba8a4606cc83 100644
--- a/drawinglayer/source/primitive2d/BufferedDecompositionPrimitive2D.cxx
+++ b/drawinglayer/source/primitive2d/BufferedDecompositionPrimitive2D.cxx
@@ -53,7 +53,9 @@ namespace drawinglayer::primitive2d
 {
 void flushBufferedDecomposition(BufferedDecompositionPrimitive2D& rTarget)
 {
+    rTarget.acquire();
     rTarget.setBuffered2DDecomposition(nullptr);
+    rTarget.release();
 }
 
 const Primitive2DReference& 
BufferedDecompositionPrimitive2D::getBuffered2DDecomposition() const

Reply via email to