summaryrefslogtreecommitdiffstats
path: root/lldb/source/Core/Module.cpp
diff options
context:
space:
mode:
authorGreg Clayton <gclayton@apple.com>2014-10-22 21:47:13 +0000
committerGreg Clayton <gclayton@apple.com>2014-10-22 21:47:13 +0000
commitc3795409c91affb53764d135a1c112d9bd808eef (patch)
treef2ed0e3340cc6e7805249d1d91d143df46176175 /lldb/source/Core/Module.cpp
parentfa226b74d18ff910fe069377fec7d05ee1c61975 (diff)
downloadbcm5719-llvm-c3795409c91affb53764d135a1c112d9bd808eef.tar.gz
bcm5719-llvm-c3795409c91affb53764d135a1c112d9bd808eef.zip
Fixed name lookups for names that contain "::" but aren't actually C++ qualified C++ names.
To do this, I fixed the CPPLanguageRuntime::StripNamespacesFromVariableName() function to use a regular expression that correctly determines if the name passed to it is a qualfied C++ name like "a::b::c" or "b::c". The old version of this function was treating '__54-[NSUserScriptTask executeWithInterpreter:arguments::]_block_invoke' as a match with a basename of ']_block_invoke'. Also fixed a case in the by name lookup of functions where we wouldn't look for the full name if we actually tried to call CPPLanguageRuntime::StripNamespacesFromVariableName() and got an empty basename back. <rdar://problem/18527866> llvm-svn: 220432
Diffstat (limited to 'lldb/source/Core/Module.cpp')
-rw-r--r--lldb/source/Core/Module.cpp2
1 files changed, 2 insertions, 0 deletions
diff --git a/lldb/source/Core/Module.cpp b/lldb/source/Core/Module.cpp
index 4e985c0e115..f2755282c61 100644
--- a/lldb/source/Core/Module.cpp
+++ b/lldb/source/Core/Module.cpp
@@ -1730,6 +1730,8 @@ Module::PrepareForFunctionNameLookup (const ConstString &name,
{
if (CPPLanguageRuntime::StripNamespacesFromVariableName (name_cstr, base_name_start, base_name_end))
lookup_name_type_mask |= (eFunctionNameTypeMethod | eFunctionNameTypeBase);
+ else
+ lookup_name_type_mask = eFunctionNameTypeFull;
}
else
{
OpenPOWER on IntegriCloud