summaryrefslogtreecommitdiff
path: root/connectivity
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2016-11-18 11:09:27 +0000
committerCaolán McNamara <caolanm@redhat.com>2016-11-18 11:12:50 +0000
commitc5c8790122bf7e13543b5b94fa70f437288afc0c (patch)
tree94e75f811197f56888f808af0d108e08f7173cfd /connectivity
parentd4460b70006d7987fa7646739334d67a2d6ae3b6 (diff)
this is copied from SvRefBase, so copy the clang opt fix here too
Change-Id: Ia3a2f086d66b5e15ddd4e7dcc600271d19e5d052
Diffstat (limited to 'connectivity')
-rw-r--r--connectivity/source/drivers/dbase/dindexnode.cxx20
-rw-r--r--connectivity/source/inc/dbase/dindexnode.hxx4
2 files changed, 11 insertions, 13 deletions
diff --git a/connectivity/source/drivers/dbase/dindexnode.cxx b/connectivity/source/drivers/dbase/dindexnode.cxx
index 60521a069b2b..714ea8736781 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 53d079c4c83a..ff73ce700099 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;