diff options
Diffstat (limited to 'lldb/source/API/SBModule.cpp')
-rw-r--r-- | lldb/source/API/SBModule.cpp | 36 |
1 files changed, 15 insertions, 21 deletions
diff --git a/lldb/source/API/SBModule.cpp b/lldb/source/API/SBModule.cpp index 0d7dda1aa1f..2d89b903037 100644 --- a/lldb/source/API/SBModule.cpp +++ b/lldb/source/API/SBModule.cpp @@ -211,34 +211,28 @@ SBModule::GetUUIDString () const { Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); - static char uuid_string_buffer[80]; - const char *uuid_c_string = NULL; - std::string uuid_string; + const char *uuid_cstr = NULL; ModuleSP module_sp (GetSP ()); if (module_sp) - uuid_string = module_sp->GetUUID().GetAsString(); - - if (!uuid_string.empty()) { - strncpy (uuid_string_buffer, uuid_string.c_str(), sizeof (uuid_string_buffer)); - uuid_string_buffer[sizeof (uuid_string_buffer) - 1] = '\0'; - uuid_c_string = uuid_string_buffer; + // We are going to return a "const char *" value through the public + // API, so we need to constify it so it gets added permanently the the + // string pool and then we don't need to worry about the lifetime of the + // string as it will never go away once it has been put into the ConstString + // string pool + uuid_cstr = ConstString(module_sp->GetUUID().GetAsString()).GetCString(); } - if (log) + if (uuid_cstr && uuid_cstr[0]) { - if (!uuid_string.empty()) - { - StreamString s; - module_sp->GetUUID().Dump (&s); - log->Printf ("SBModule(%p)::GetUUIDString () => %s", - static_cast<void*>(module_sp.get()), s.GetData()); - } - else - log->Printf ("SBModule(%p)::GetUUIDString () => NULL", - static_cast<void*>(module_sp.get())); + if (log) + log->Printf ("SBModule(%p)::GetUUIDString () => %s", static_cast<void*>(module_sp.get()), uuid_cstr); + return uuid_cstr; } - return uuid_c_string; + + if (log) + log->Printf ("SBModule(%p)::GetUUIDString () => NULL", static_cast<void*>(module_sp.get())); + return NULL; } |