[UB] Fix another place where we would pass a null pointer to memcpy.
authorChandler Carruth <chandlerc@gmail.com>
Tue, 4 Aug 2015 00:53:01 +0000 (00:53 +0000)
committerChandler Carruth <chandlerc@gmail.com>
Tue, 4 Aug 2015 00:53:01 +0000 (00:53 +0000)
This too was found by UBSan. Down to 35 failures for me.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@243932 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/ADT/StringMap.h

index 8721c73b95b13f90b43554376732ebb5590f670b..9d038560bf92d173ac580d5df46766794d22addd 100644 (file)
@@ -158,7 +158,8 @@ public:
 
     // Copy the string information.
     char *StrBuffer = const_cast<char*>(NewItem->getKeyData());
-    memcpy(StrBuffer, Key.data(), KeyLength);
+    if (KeyLength > 0)
+      memcpy(StrBuffer, Key.data(), KeyLength);
     StrBuffer[KeyLength] = 0;  // Null terminate for convenience of clients.
     return NewItem;
   }