Blob Blame History Raw
From 25b8bcab289f13cab6c0a154a0c32ab19de2ef21 Mon Sep 17 00:00:00 2001
From: Bjoern Michaelsen <bjoern.michaelsen@canonical.com>
Date: Tue, 12 Apr 2016 12:20:07 +0200
Subject: [PATCH] lp#1566050: prevent cyclic reference zombies

regression, likely from 2660d24a07866e083c5135ea263030f3e3a2e729:

1/ Since that change mxAccessible in ScCsvGrid holds a rtl::Reference on
a ScAccessibleCsvGrid
2/ Which in turn holds a VclPtr<> (aka a rtl::Reference with lipstick)
on the ScCsvControl

These are a circular references, making both of them live forever and
leak past the point where on LibreOffice close all of Vcl is long gone,
when these are dtored. Clearing mxAccessible on disposing should help.

Change-Id: Iebb2635ec4ea143e7f0dbfebad2e6141a68e72e8
Reviewed-on: https://gerrit.libreoffice.org/24020
Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
Tested-by: Noel Grandin <noelgrandin@gmail.com>
(cherry picked from commit 941e891d16853e5eff3e40cf48cdafb3146b2750)
---
 sc/source/ui/dbgui/csvcontrol.cxx | 1 +
 1 file changed, 1 insertion(+)

diff --git a/sc/source/ui/dbgui/csvcontrol.cxx b/sc/source/ui/dbgui/csvcontrol.cxx
index b53b5bc..7449192 100644
--- a/sc/source/ui/dbgui/csvcontrol.cxx
+++ b/sc/source/ui/dbgui/csvcontrol.cxx
@@ -81,6 +81,7 @@ void ScCsvControl::dispose()
 {
     if( mxAccessible.is() )
         mxAccessible->dispose();
+    mxAccessible = nullptr; // lp#1566050: prevent cyclic reference zombies
     Control::dispose();
 }
 
-- 
2.9.3