diff options
-rw-r--r-- | libcxxabi/src/demangle/ItaniumDemangle.h | 2 | ||||
-rw-r--r-- | libcxxabi/test/test_demangle.pass.cpp | 1 | ||||
-rw-r--r-- | llvm/include/llvm/Demangle/ItaniumDemangle.h | 2 |
3 files changed, 3 insertions, 2 deletions
diff --git a/libcxxabi/src/demangle/ItaniumDemangle.h b/libcxxabi/src/demangle/ItaniumDemangle.h index be2cf882bfc2..a434868ce1a5 100644 --- a/libcxxabi/src/demangle/ItaniumDemangle.h +++ b/libcxxabi/src/demangle/ItaniumDemangle.h @@ -2885,7 +2885,7 @@ Node *AbstractManglingParser<Derived, Alloc>::parseUnqualifiedName( Result = getDerived().parseOperatorName(State); } - if (Module) + if (Result != nullptr && Module != nullptr) Result = make<ModuleEntity>(Module, Result); if (Result != nullptr) Result = getDerived().parseAbiTags(Result); diff --git a/libcxxabi/test/test_demangle.pass.cpp b/libcxxabi/test/test_demangle.pass.cpp index a0d9bad298b1..916fda6a929d 100644 --- a/libcxxabi/test/test_demangle.pass.cpp +++ b/libcxxabi/test/test_demangle.pass.cpp @@ -30172,6 +30172,7 @@ const char* invalid_cases[] = "_ZWDC3FOOEv", "_ZGI3Foo", "_ZGIW3Foov", + "W1x", }; const unsigned NI = sizeof(invalid_cases) / sizeof(invalid_cases[0]); diff --git a/llvm/include/llvm/Demangle/ItaniumDemangle.h b/llvm/include/llvm/Demangle/ItaniumDemangle.h index 778342e7fd59..f933e9a3262d 100644 --- a/llvm/include/llvm/Demangle/ItaniumDemangle.h +++ b/llvm/include/llvm/Demangle/ItaniumDemangle.h @@ -2885,7 +2885,7 @@ Node *AbstractManglingParser<Derived, Alloc>::parseUnqualifiedName( Result = getDerived().parseOperatorName(State); } - if (Module) + if (Result != nullptr && Module != nullptr) Result = make<ModuleEntity>(Module, Result); if (Result != nullptr) Result = getDerived().parseAbiTags(Result); |