Demangle: Fix crash-on-invalid demangling of a module name with no underlying entity
GitOrigin-RevId: 6f5ecd089f77e0da9af44bb7211ad1b11ea582d4
diff --git a/src/demangle/ItaniumDemangle.h b/src/demangle/ItaniumDemangle.h
index be2cf88..a434868 100644
--- a/src/demangle/ItaniumDemangle.h
+++ b/src/demangle/ItaniumDemangle.h
@@ -2885,7 +2885,7 @@
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/test/test_demangle.pass.cpp b/test/test_demangle.pass.cpp
index a0d9bad..916fda6 100644
--- a/test/test_demangle.pass.cpp
+++ b/test/test_demangle.pass.cpp
@@ -30172,6 +30172,7 @@
"_ZWDC3FOOEv",
"_ZGI3Foo",
"_ZGIW3Foov",
+ "W1x",
};
const unsigned NI = sizeof(invalid_cases) / sizeof(invalid_cases[0]);