From bb748a19aecc4955d12185a8a7922640654565ee Mon Sep 17 00:00:00 2001 From: Zachary Turner Date: Mon, 26 Sep 2016 20:08:05 +0000 Subject: [PATCH] Allow StringRef to be constructed from a null pointer. Differential Revision: https://reviews.llvm.org/D24904 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@282433 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/ADT/StringRef.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/include/llvm/ADT/StringRef.h b/include/llvm/ADT/StringRef.h index d3683c79e50..a053b414a10 100644 --- a/include/llvm/ADT/StringRef.h +++ b/include/llvm/ADT/StringRef.h @@ -73,14 +73,14 @@ namespace llvm { /// Construct an empty string ref. /*implicit*/ StringRef() : Data(nullptr), Length(0) {} + /// Disable conversion from nullptr. This prevents things like + /// if (S == nullptr) StringRef(std::nullptr_t) = delete; /// Construct a string ref from a cstring. + LLVM_ATTRIBUTE_ALWAYS_INLINE /*implicit*/ StringRef(const char *Str) - : Data(Str) { - assert(Str && "StringRef cannot be built from a NULL argument"); - Length = ::strlen(Str); // invoking strlen(NULL) is undefined behavior - } + : Data(Str), Length(Str ? ::strlen(Str) : 0) {} /// Construct a string ref from a pointer and length. LLVM_ATTRIBUTE_ALWAYS_INLINE -- 2.11.0