diff options
Diffstat (limited to 'src/staticstring.cpp')
-rw-r--r-- | src/staticstring.cpp | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/src/staticstring.cpp b/src/staticstring.cpp index 9eac92e..0012b0f 100644 --- a/src/staticstring.cpp +++ b/src/staticstring.cpp | |||
@@ -243,10 +243,28 @@ bool StaticString::operator!=( StaticString &str ) | |||
243 | unsigned long int StaticString::getHashCode() | 243 | unsigned long int StaticString::getHashCode() |
244 | { | 244 | { |
245 | unsigned long int nPos = nLen; | 245 | unsigned long int nPos = nLen; |
246 | for( const char *s = (const char *)lpStr; *s; s++ ) | 246 | unsigned long int j = 0; |
247 | for( const char *s = (const char *)lpStr; j< nLen; s++, j++ ) | ||
247 | { | 248 | { |
248 | nPos = *s + (nPos << 6) + (nPos << 16) - nPos; | 249 | nPos = *s + (nPos << 6) + (nPos << 16) - nPos; |
249 | } | 250 | } |
250 | return nPos; | 251 | return nPos; |
251 | } | 252 | } |
252 | 253 | ||
254 | bool StaticString::compareForHash( Hashable &other ) | ||
255 | { | ||
256 | if( ((StaticString &)other).nLen != nLen ) | ||
257 | return false; | ||
258 | |||
259 | const char *a = ((StaticString &)other).lpStr; | ||
260 | const char *b = lpStr; | ||
261 | if( a == b ) | ||
262 | return true; | ||
263 | |||
264 | for( unsigned long j = 0; j < nLen; j++, a++, b++ ) | ||
265 | if( *a != *b ) | ||
266 | return false; | ||
267 | |||
268 | return true; | ||
269 | } | ||
270 | |||