[demangler] Fix a mistake in r326797.
Thanks to Nico Weber for pointing this out!
git-svn-id: https://llvm.org/svn/llvm-project/libcxxabi/trunk@326871 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/src/cxa_demangle.cpp b/src/cxa_demangle.cpp
index d0362dc..ffd887a 100644
--- a/src/cxa_demangle.cpp
+++ b/src/cxa_demangle.cpp
@@ -4788,8 +4788,8 @@
Node *Encoding = parseEncoding();
if (Encoding == nullptr || !consumeIf("_block_invoke"))
return nullptr;
- consumeIf('_');
- if (parseNumber().empty())
+ bool RequireNumber = consumeIf('_');
+ if (parseNumber().empty() && RequireNumber)
return nullptr;
if (numLeft() != 0)
return nullptr;
diff --git a/test/test_demangle.pass.cpp b/test/test_demangle.pass.cpp
index b54f8d3..ef2821c 100644
--- a/test/test_demangle.pass.cpp
+++ b/test/test_demangle.pass.cpp
@@ -29716,6 +29716,8 @@
// ABI tags can apply to built-in substitutions.
{"_Z1fSsB1XS_", "f(std::string[abi:X], std::string[abi:X])"},
+
+ {"___Z10blocksNRVOv_block_invoke", "invocation function for block in blocksNRVO()"},
};
const unsigned N = sizeof(cases) / sizeof(cases[0]);