My previous message is also bogus, I was looking at the updated code instead of the original code. I think it's time to call it a day before I say more nonsense. I'll take a fresh look tomorrow :-)
On Tue, Apr 28, 2020 at 8:01 PM Jonas Devlieghere <jo...@devlieghere.com> wrote: > Actually the statement in the commit message is incorrect, it looks like > StringMap does guarantee both key and value to be stable. The patch is > still correct though, because GetXcodeSDK does return a std::string, so we > were returning a reference to a temporary. > > On Tue, Apr 28, 2020 at 7:22 PM Jonas Devlieghere via lldb-commits < > lldb-commits@lists.llvm.org> wrote: > >> >> Author: Jonas Devlieghere >> Date: 2020-04-28T19:21:58-07:00 >> New Revision: b14c37a29a5455853419f5fe0605f6023c51de89 >> >> URL: >> https://github.com/llvm/llvm-project/commit/b14c37a29a5455853419f5fe0605f6023c51de89 >> DIFF: >> https://github.com/llvm/llvm-project/commit/b14c37a29a5455853419f5fe0605f6023c51de89.diff >> >> LOG: [lldb/Platform] Return a std::string from GetSDKPath >> >> Nothing guarantees that the objects in the StringMap remains at the same >> address when the StringMap grows. Therefore we shouldn't return a >> reference into the StringMap but return a copy of the string instead. >> >> Added: >> >> >> Modified: >> lldb/include/lldb/Target/Platform.h >> lldb/source/Plugins/Platform/MacOSX/PlatformDarwin.cpp >> lldb/source/Plugins/Platform/MacOSX/PlatformDarwin.h >> >> Removed: >> >> >> >> >> ################################################################################ >> diff --git a/lldb/include/lldb/Target/Platform.h >> b/lldb/include/lldb/Target/Platform.h >> index 872e5301d984..640261033c4b 100644 >> --- a/lldb/include/lldb/Target/Platform.h >> +++ b/lldb/include/lldb/Target/Platform.h >> @@ -435,7 +435,7 @@ class Platform : public PluginInterface { >> return lldb_private::ConstString(); >> } >> >> - virtual llvm::StringRef GetSDKPath(lldb_private::XcodeSDK sdk) { >> + virtual std::string GetSDKPath(lldb_private::XcodeSDK sdk) { >> return {}; >> } >> >> >> diff --git a/lldb/source/Plugins/Platform/MacOSX/PlatformDarwin.cpp >> b/lldb/source/Plugins/Platform/MacOSX/PlatformDarwin.cpp >> index 0777c78aa22d..5252d37a01c5 100644 >> --- a/lldb/source/Plugins/Platform/MacOSX/PlatformDarwin.cpp >> +++ b/lldb/source/Plugins/Platform/MacOSX/PlatformDarwin.cpp >> @@ -1761,11 +1761,11 @@ >> PlatformDarwin::FindXcodeContentsDirectoryInPath(llvm::StringRef path) { >> return {}; >> } >> >> -llvm::StringRef PlatformDarwin::GetSDKPath(XcodeSDK sdk) { >> +std::string PlatformDarwin::GetSDKPath(XcodeSDK sdk) { >> std::string &path = m_sdk_path[sdk.GetString()]; >> - if (path.empty()) >> - path = HostInfo::GetXcodeSDK(sdk); >> - return path; >> + if (!path.empty()) >> + return path; >> + return HostInfo::GetXcodeSDK(sdk); >> } >> >> FileSpec PlatformDarwin::GetXcodeContentsDirectory() { >> >> diff --git a/lldb/source/Plugins/Platform/MacOSX/PlatformDarwin.h >> b/lldb/source/Plugins/Platform/MacOSX/PlatformDarwin.h >> index 7d205be59689..d3b4181aafa0 100644 >> --- a/lldb/source/Plugins/Platform/MacOSX/PlatformDarwin.h >> +++ b/lldb/source/Plugins/Platform/MacOSX/PlatformDarwin.h >> @@ -89,7 +89,7 @@ class PlatformDarwin : public PlatformPOSIX { >> llvm::Expected<lldb_private::StructuredData::DictionarySP> >> FetchExtendedCrashInformation(lldb_private::Process &process) override; >> >> - llvm::StringRef GetSDKPath(lldb_private::XcodeSDK sdk) override; >> + std::string GetSDKPath(lldb_private::XcodeSDK sdk) override; >> >> static lldb_private::FileSpec GetXcodeContentsDirectory(); >> static lldb_private::FileSpec GetXcodeDeveloperDirectory(); >> >> >> >> _______________________________________________ >> lldb-commits mailing list >> lldb-commits@lists.llvm.org >> https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits >> >
_______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits