[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]);