[Libreoffice-commits] core.git: connectivity/source

Caolán McNamara caolanm at redhat.com
Fri Nov 18 11:13:17 UTC 2016


 connectivity/source/drivers/dbase/dindexnode.cxx |   20 ++++++++------------
 connectivity/source/inc/dbase/dindexnode.hxx     |    4 +++-
 2 files changed, 11 insertions(+), 13 deletions(-)

New commits:
commit c5c8790122bf7e13543b5b94fa70f437288afc0c
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Fri Nov 18 11:09:27 2016 +0000

    this is copied from SvRefBase, so copy the clang opt fix here too
    
    Change-Id: Ia3a2f086d66b5e15ddd4e7dcc600271d19e5d052

diff --git a/connectivity/source/drivers/dbase/dindexnode.cxx b/connectivity/source/drivers/dbase/dindexnode.cxx
index 60521a0..714ea87 100644
--- a/connectivity/source/drivers/dbase/dindexnode.cxx
+++ b/connectivity/source/drivers/dbase/dindexnode.cxx
@@ -56,7 +56,6 @@ ONDXKey::ONDXKey(const OUString& aStr, sal_uInt32 nRec)
     }
 }
 
-
 ONDXKey::ONDXKey(double aVal, sal_uInt32 nRec)
     : ONDXKey_BASE(css::sdbc::DataType::DOUBLE)
      ,nRecord(nRec)
@@ -64,24 +63,21 @@ ONDXKey::ONDXKey(double aVal, sal_uInt32 nRec)
 {
 }
 
-
 // index page
-
 ONDXPage::ONDXPage(ODbaseIndex& rInd, sal_uInt32 nPos, ONDXPage* pParent)
-           :bNoDelete(1)
-           ,nRefCount(0)
-           ,nPagePos(nPos)
-           ,bModified(false)
-           ,nCount(0)
-           ,aParent(pParent)
-           ,rIndex(rInd)
-           ,ppNodes(nullptr)
+    : nRefCount(0)
+    , bNoDelete(1)
+    , nPagePos(nPos)
+    , bModified(false)
+    , nCount(0)
+    , aParent(pParent)
+    , rIndex(rInd)
+    , ppNodes(nullptr)
 {
     sal_uInt16 nT = rIndex.getHeader().db_maxkeys;
     ppNodes = new ONDXNode[nT];
 }
 
-
 ONDXPage::~ONDXPage()
 {
     delete[] ppNodes;
diff --git a/connectivity/source/inc/dbase/dindexnode.hxx b/connectivity/source/inc/dbase/dindexnode.hxx
index 53d079c..ff73ce7 100644
--- a/connectivity/source/inc/dbase/dindexnode.hxx
+++ b/connectivity/source/inc/dbase/dindexnode.hxx
@@ -115,9 +115,11 @@ namespace connectivity
             friend  SvStream& WriteONDXPage(SvStream &rStream, const ONDXPage&);
             friend  SvStream& operator >> (SvStream &rStream, ONDXPage&);
 
+            // work around a clang 3.5 optimization bug: if the bNoDelete is *first*
+            // it mis-compiles "if (--nRefCount == 0)" and never deletes any object
+            unsigned int    nRefCount : 31;
             // the only reason this is not bool is because MSVC cannot handle mixed type bitfields
             unsigned int    bNoDelete : 1;
-            unsigned int    nRefCount : 31;
             sal_uInt32      nPagePos;       // Position in the index file
             bool            bModified : 1;
             sal_uInt16      nCount;


More information about the Libreoffice-commits mailing list