summaryrefslogtreecommitdiff
path: root/compilerplugins
diff options
context:
space:
mode:
authorMichael Stahl <mstahl@redhat.com>2018-01-31 14:34:31 +0100
committerNoel Grandin <noel.grandin@collabora.co.uk>2018-02-01 10:10:06 +0100
commit66baf6cf11e333936a4404d3a02d44a19e6a440c (patch)
treee560efb79729b9d86ba1ce9ec8db72cdb647a692 /compilerplugins
parenteba4d3b5a0667185e5a51a6e9996efbdbb51435d (diff)
tdf#114596 dbaccess: fix mysterious dataloss bug
OBookmarkContainer actually re-uses the reference count of ODatabaseSource, so converting ODatabaseSource::m_aBookmark to Reference created a cycle, which somehow causes the dataloss, because evidently something as important as storing the data must be done in the destructor. (regression from 2660d24a07866e083c5135ea263030f3e3a2e729) (cherry picked from commit 96ae2a3300811897c24cccb20f8c2faf382483df) tdf#114596 compilerplugins: add exception to [loplugin:refcounting] (cherry picked from commit e80da60895b45309fa1d018760d5f11cca4367f4) Change-Id: I4cad01dc9cdaf405c1eb31d6c0e161eb6712b78f Reviewed-on: https://gerrit.libreoffice.org/49025 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'compilerplugins')
-rw-r--r--compilerplugins/clang/refcounting.cxx4
1 files changed, 4 insertions, 0 deletions
diff --git a/compilerplugins/clang/refcounting.cxx b/compilerplugins/clang/refcounting.cxx
index 58a9884ede0d..8957221dbb22 100644
--- a/compilerplugins/clang/refcounting.cxx
+++ b/compilerplugins/clang/refcounting.cxx
@@ -148,6 +148,10 @@ bool containsXInterfaceSubclass(const clang::Type* pType0) {
if (isDerivedFrom(pRecordDecl, [](Decl const * decl) -> bool { return bool(loplugin::DeclCheck(decl).Class("XPropertyList").GlobalNamespace()); })) { // module svx
return false;
}
+ // tdf#114596
+ if (isDerivedFrom(pRecordDecl, [](Decl const * decl) -> bool { return bool(loplugin::DeclCheck(decl).Class("OBookmarkContainer").Namespace("dbaccess").GlobalNamespace()); })) { // module dbaccess
+ return false;
+ }
}
if (pRecordDecl) {
const ClassTemplateSpecializationDecl* pTemplate = dyn_cast<ClassTemplateSpecializationDecl>(pRecordDecl);