[Lldb-commits] [lldb] b14c37a - [lldb/Platform] Return a std::string from GetSDKPath
Jonas Devlieghere via lldb-commits
lldb-commits at lists.llvm.org
Tue Apr 28 20:05:29 PDT 2020
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 <jonas at 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 at 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 at lists.llvm.org
>> https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20200428/87439873/attachment-0001.html>
More information about the lldb-commits
mailing list