OSDN Git Service

Revert "QHashData cleanup"
authorIvailo Monev <xakepa10@laimg.moc>
Sat, 18 May 2019 17:41:02 +0000 (17:41 +0000)
committerIvailo Monev <xakepa10@laimg.moc>
Sat, 18 May 2019 17:41:02 +0000 (17:41 +0000)
This reverts commit 7b64a37abe5ee1f14eb8ec2e4f43910eff404c72.

src/core/tools/qhash.cpp
src/core/tools/qhash.h

index cc9311b..1fdb823 100644 (file)
@@ -166,7 +166,7 @@ static int countBits(int hint)
 const int MinNumBits = 4;
 
 QHashData QHashData::shared_null = {
-    0, QAtomicInt(1), 0, 0, MinNumBits, 0, 0, true
+    0, 0, QAtomicInt(1), 0, 0, MinNumBits, 0, 0, true
 };
 
 QHashData *QHashData::detach_helper(void (*node_duplicate)(Node *, void *),
@@ -178,6 +178,7 @@ QHashData *QHashData::detach_helper(void (*node_duplicate)(Node *, void *),
         Node *e;
     };
     d = new QHashData;
+    d->fakeNext = 0;
     d->buckets = 0;
     d->ref = 1;
     d->size = size;
@@ -372,6 +373,7 @@ void QHashData::dump()
     qDebug("Hash data (ref = %d, size = %d, nodeSize = %d, userNumBits = %d, numBits = %d, numBuckets = %d)",
             int(ref), size, nodeSize, userNumBits, numBits,
             numBuckets);
+    qDebug("    %p (fakeNode = %p)", this, fakeNext);
     for (int i = 0; i < numBuckets; ++i) {
         QString line;
         Node *n = buckets[i];
@@ -392,6 +394,9 @@ void QHashData::dump()
 
 void QHashData::checkSanity()
 {
+    if (fakeNext)
+        qFatal("Fake next isn't 0");
+
     for (int i = 0; i < numBuckets; ++i) {
         Node *n = buckets[i];
         Node *p = n;
index caa8c97..acb4a71 100644 (file)
@@ -104,6 +104,7 @@ struct Q_CORE_EXPORT QHashData
         uint h;
     };
 
+    Node *fakeNext;
     Node **buckets;
     QAtomicInt ref;
     int size;
@@ -111,7 +112,7 @@ struct Q_CORE_EXPORT QHashData
     short userNumBits;
     short numBits;
     int numBuckets;
-    bool sharable;
+    uint sharable : 1;
 
     QHashData *detach_helper(void (*node_duplicate)(Node *, void *), void (*node_delete)(Node *),
                               int nodeSize);