Author: asl Date: Tue Feb 5 17:34:40 2008 New Revision: 46781 URL: http://llvm.org/viewvc/llvm-project?rev=46781&view=rev Log: Don't dereference an invalid pointer if string is empty.
Modified: llvm/trunk/include/llvm/ADT/StringMap.h Modified: llvm/trunk/include/llvm/ADT/StringMap.h URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/ADT/StringMap.h?rev=46781&r1=46780&r2=46781&view=diff ============================================================================== --- llvm/trunk/include/llvm/ADT/StringMap.h (original) +++ llvm/trunk/include/llvm/ADT/StringMap.h Tue Feb 5 17:34:40 2008 @@ -273,7 +273,7 @@ return find(Key, Key + strlen(Key)); } iterator find(const std::string &Key) { - const char* key_start = &Key[0]; + const char* key_start = (Key.empty() ? NULL : &Key[0]); return find(key_start, key_start + Key.size()); } @@ -286,7 +286,7 @@ return find(Key, Key + strlen(Key)); } const_iterator find(const std::string &Key) const { - const char* key_start = &Key[0]; + const char* key_start = (Key.empty() ? NULL : &Key[0]); return find(key_start, key_start + Key.size()); } @@ -295,7 +295,7 @@ return entry.getValue(); } ValueTy& operator[](const std::string &Key) { - const char* key_start = &Key[0]; + const char* key_start = (Key.empty() ? NULL : &Key[0]); value_type& entry = GetOrCreateValue(key_start, key_start + Key.size()); return entry.getValue(); } @@ -307,7 +307,7 @@ return count(Key, Key + strlen(Key)); } size_type count(const std::string &Key) const { - const char* key_start = &Key[0]; + const char* key_start = (Key.empty() ? NULL : &Key[0]); return count(key_start, key_start + Key.size()); } _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits