summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2011-02-11 12:38:16 +0000
committerCaolán McNamara <caolanm@redhat.com>2011-02-11 12:38:16 +0000
commit74fa32edabf0765b0c9dbba01161b0d2aed81278 (patch)
tree4480a57ea8bc1025058559b6df75837a7815486a
parentbd8bd1125def758bc8342f6ceed0dda0336eec73 (diff)
(std|boost)::hash on a const char* hashes the pointer not the contents
-rw-r--r--sdext/source/minimizer/pppoptimizertoken.cxx9
1 files changed, 8 insertions, 1 deletions
diff --git a/sdext/source/minimizer/pppoptimizertoken.cxx b/sdext/source/minimizer/pppoptimizertoken.cxx
index b625547..5fbfb16 100644
--- a/sdext/source/minimizer/pppoptimizertoken.cxx
+++ b/sdext/source/minimizer/pppoptimizertoken.cxx
@@ -35,6 +35,13 @@
#include <boost/unordered_map.hpp>
#include <string.h>
+struct THash
+{
+ size_t operator()( const char* s ) const
+ {
+ return rtl_str_hashCode(s);
+ }
+};
struct TCheck
{
bool operator()( const char* s1, const char* s2 ) const
@@ -42,7 +49,7 @@ struct TCheck
return strcmp( s1, s2 ) == 0;
}
};
-typedef boost::unordered_map< const char*, PPPOptimizerTokenEnum, boost::hash<const char*>, TCheck> TypeNameHashMap;
+typedef boost::unordered_map< const char*, PPPOptimizerTokenEnum, THash, TCheck> TypeNameHashMap;
static TypeNameHashMap* pHashMap = NULL;
static ::osl::Mutex& getHashMapMutex()
{