diff options
author | Caolán McNamara <caolanm@redhat.com> | 2016-11-18 11:09:27 +0000 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2016-11-18 11:12:50 +0000 |
commit | c5c8790122bf7e13543b5b94fa70f437288afc0c (patch) | |
tree | 94e75f811197f56888f808af0d108e08f7173cfd /connectivity | |
parent | d4460b70006d7987fa7646739334d67a2d6ae3b6 (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.cxx | 20 | ||||
-rw-r--r-- | connectivity/source/inc/dbase/dindexnode.hxx | 4 |
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; |