diff options
author | Robin Burchell <robin+qt@viroteck.net> | 2012-03-02 15:05:59 +0100 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-03-02 16:07:47 +0100 |
commit | db5c28fa0e392a68836d9a97bb2add3a94ddb37c (patch) | |
tree | bbbf55884ea9103319790ac4b0b314bd1ec8349d /src/corelib/io/qresource.cpp | |
parent | ab05682564da139a7b0bca6817854abc58486d49 (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.cpp | 8 |
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) |