diff options
author | Greg Clayton <gclayton@apple.com> | 2014-10-22 21:47:13 +0000 |
---|---|---|
committer | Greg Clayton <gclayton@apple.com> | 2014-10-22 21:47:13 +0000 |
commit | c3795409c91affb53764d135a1c112d9bd808eef (patch) | |
tree | f2ed0e3340cc6e7805249d1d91d143df46176175 /lldb/source/Core/Module.cpp | |
parent | fa226b74d18ff910fe069377fec7d05ee1c61975 (diff) | |
download | bcm5719-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.cpp | 2 |
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 { |