diff options
| -rw-r--r-- | src/fstring.cpp | 11 | ||||
| -rw-r--r-- | src/fstring.h | 4 |
2 files changed, 13 insertions, 2 deletions
diff --git a/src/fstring.cpp b/src/fstring.cpp index f71d6c1..429dfef 100644 --- a/src/fstring.cpp +++ b/src/fstring.cpp | |||
| @@ -3,7 +3,16 @@ | |||
| 3 | 3 | ||
| 4 | template<> uint32_t Bu::__calcHashCode<Bu::FString>( const Bu::FString &k ) | 4 | template<> uint32_t Bu::__calcHashCode<Bu::FString>( const Bu::FString &k ) |
| 5 | { | 5 | { |
| 6 | return __calcHashCode( k.c_str() ); | 6 | long j, sz = k.getSize(); |
| 7 | const char *s = k.getStr(); | ||
| 8 | |||
| 9 | long nPos = 0; | ||
| 10 | for( j = 0; j < sz; j++, s++ ) | ||
| 11 | { | ||
| 12 | nPos = *s + (nPos << 6) + (nPos << 16) - nPos; | ||
| 13 | } | ||
| 14 | |||
| 15 | return nPos; | ||
| 7 | } | 16 | } |
| 8 | 17 | ||
| 9 | template<> bool Bu::__cmpHashKeys<Bu::FString>( | 18 | template<> bool Bu::__cmpHashKeys<Bu::FString>( |
diff --git a/src/fstring.h b/src/fstring.h index 73b04ab..31794d7 100644 --- a/src/fstring.h +++ b/src/fstring.h | |||
| @@ -418,12 +418,14 @@ namespace Bu | |||
| 418 | return true; | 418 | return true; |
| 419 | if( pFirst == NULL ) | 419 | if( pFirst == NULL ) |
| 420 | return false; | 420 | return false; |
| 421 | if( nLength != pData.nLength ) | ||
| 422 | return false; | ||
| 421 | 423 | ||
| 422 | flatten(); | 424 | flatten(); |
| 423 | pData.flatten(); | 425 | pData.flatten(); |
| 424 | const chr *a = pData.pFirst->pData; | 426 | const chr *a = pData.pFirst->pData; |
| 425 | chr *b = pFirst->pData; | 427 | chr *b = pFirst->pData; |
| 426 | for( ; *a!=(chr)0 || *b!=(chr)0; a++, b++ ) | 428 | for( long j = 0; j < nLength; j++, a++, b++ ) |
| 427 | { | 429 | { |
| 428 | if( *a != *b ) | 430 | if( *a != *b ) |
| 429 | return false; | 431 | return false; |
