summaryrefslogtreecommitdiffstats
path: root/src/corelib/io/qresource.cpp
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 /src/corelib/io/qresource.cpp
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>
Diffstat (limited to 'src/corelib/io/qresource.cpp')
-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)