summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRobin Burchell <robin+qt@viroteck.net>2012-03-02 15:05:59 +0100
committerQt by Nokia <qt-info@nokia.com>2012-03-02 16:07:47 +0100
commitdb5c28fa0e392a68836d9a97bb2add3a94ddb37c (patch)
treebbbf55884ea9103319790ac4b0b314bd1ec8349d
parentab05682564da139a7b0bca6817854abc58486d49 (diff)
Use correct types in QResource.
qHash() returns uint, not int, so change all interactions with hashing to use uint to match. This blocks the introduction of a new (better) hashing algorithm because it currently breaks numerous tests: rcc would (correctly) write a uint hash value to the qrc files, but QResource would attempt to mangle it around as an int. This wasn't a problem with the old hash, because it deliberately threw away data (h &= 0x0fffffff), possibly because of someone not being able to diagnose precisly this problem. Change-Id: I46fb42acc100fdd3bedd714f6dc91aeca91d0351 Reviewed-by: hjk <qthjk@ovi.com>
-rw-r--r--src/corelib/io/qresource.cpp8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/corelib/io/qresource.cpp b/src/corelib/io/qresource.cpp
index e46ab260b0..fb3a24b940 100644
--- a/src/corelib/io/qresource.cpp
+++ b/src/corelib/io/qresource.cpp
@@ -114,7 +114,7 @@ class QResourceRoot
};
const uchar *tree, *names, *payloads;
inline int findOffset(int node) const { return node * 14; } //sizeof each tree element
- int hash(int node) const;
+ uint hash(int node) const;
QString name(int node) const;
short flags(int node) const;
public:
@@ -594,7 +594,7 @@ QResource::searchPaths()
return *resourceSearchPaths();
}
-inline int QResourceRoot::hash(int node) const
+inline uint QResourceRoot::hash(int node) const
{
if(!node) //root
return 0;
@@ -673,13 +673,13 @@ int QResourceRoot::findNode(const QString &_path, const QLocale &locale) const
qDebug() << " " << child+j << " :: " << name(child+j);
}
#endif
- const int h = qHash(segment);
+ const uint h = qHash(segment);
//do the binary search for the hash
int l = 0, r = child_count-1;
int sub_node = (l+r+1)/2;
while(r != l) {
- const int sub_node_hash = hash(child+sub_node);
+ const uint sub_node_hash = hash(child+sub_node);
if(h == sub_node_hash)
break;
else if(h < sub_node_hash)