summaryrefslogtreecommitdiff
path: root/connectivity
diff options
context:
space:
mode:
authorNoel Grandin <noel.grandin@collabora.co.uk>2017-04-21 16:35:19 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2017-04-22 22:05:13 +0200
commit4d12bbef79b26d2c371d3b968690b46717c31045 (patch)
treee826842515a31d1fa39d1893a4d18fc01138981e /connectivity
parent42b40ede8c496aad1021e68a72523af4f57e89f6 (diff)
revert bits of "remove some old MSVC workarounds"
in commit 841e1a6f3619054ecc9240e061cd83d4e41d1ca9, since MSVC 2015 still does not pack heterogenous bitfields tightly Change-Id: I251c797492762cbd2381496b2f2c6c3223d563c6 Reviewed-on: https://gerrit.libreoffice.org/36800 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'connectivity')
-rw-r--r--connectivity/source/drivers/dbase/dindexnode.cxx4
-rw-r--r--connectivity/source/inc/dbase/dindexnode.hxx5
2 files changed, 5 insertions, 4 deletions
diff --git a/connectivity/source/drivers/dbase/dindexnode.cxx b/connectivity/source/drivers/dbase/dindexnode.cxx
index 81451234052d..0130de2905d0 100644
--- a/connectivity/source/drivers/dbase/dindexnode.cxx
+++ b/connectivity/source/drivers/dbase/dindexnode.cxx
@@ -66,7 +66,7 @@ ONDXKey::ONDXKey(double aVal, sal_uInt32 nRec)
// index page
ONDXPage::ONDXPage(ODbaseIndex& rInd, sal_uInt32 nPos, ONDXPage* pParent)
: nRefCount(0)
- , bNoDelete(true)
+ , bNoDelete(1)
, nPagePos(nPos)
, bModified(false)
, nCount(0)
@@ -110,7 +110,7 @@ void ONDXPage::QueryDelete()
ppNodes[i] = ONDXNode();
}
- bNoDelete = true;
+ bNoDelete = 1;
nCount = 0;
aParent.Clear();
diff --git a/connectivity/source/inc/dbase/dindexnode.hxx b/connectivity/source/inc/dbase/dindexnode.hxx
index d1a7c24e3255..00c359cbfad6 100644
--- a/connectivity/source/inc/dbase/dindexnode.hxx
+++ b/connectivity/source/inc/dbase/dindexnode.hxx
@@ -120,7 +120,8 @@ namespace connectivity
// 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;
- bool bNoDelete : 1;
+ // the only reason this is not bool is because MSVC cannot handle mixed type bitfields
+ unsigned int bNoDelete : 1;
sal_uInt32 nPagePos; // Position in the index file
bool bModified : 1;
sal_uInt16 nCount;
@@ -189,7 +190,7 @@ namespace connectivity
{
assert( nRefCount < (1 << 30) && "Do not add refs to dead objects" );
if( bNoDelete )
- bNoDelete = false;
+ bNoDelete = 0;
++nRefCount;
}