[Lldb-commits] [lldb] r358550 - Clear the output string passed to GetHostName()

Aaron Smith via lldb-commits lldb-commits at lists.llvm.org
Tue Apr 16 20:13:06 PDT 2019


Author: asmith
Date: Tue Apr 16 20:13:06 2019
New Revision: 358550

URL: http://llvm.org/viewvc/llvm-project?rev=358550&view=rev
Log:
Clear the output string passed to GetHostName()

LLVM's wchar to UTF8 conversion routine expects an empty string to store the output.
GetHostName() on Windows is sometimes called with a non-empty string which triggers
an assert. The simple fix is to clear the output string before the conversion.


Modified:
    lldb/trunk/source/Host/windows/HostInfoWindows.cpp
    lldb/trunk/unittests/Host/HostInfoTest.cpp

Modified: lldb/trunk/source/Host/windows/HostInfoWindows.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Host/windows/HostInfoWindows.cpp?rev=358550&r1=358549&r2=358550&view=diff
==============================================================================
--- lldb/trunk/source/Host/windows/HostInfoWindows.cpp (original)
+++ lldb/trunk/source/Host/windows/HostInfoWindows.cpp Tue Apr 16 20:13:06 2019
@@ -95,6 +95,8 @@ bool HostInfoWindows::GetHostname(std::s
   if (!::GetComputerNameW(buffer, &dwSize))
     return false;
 
+  // The conversion requires an empty string.
+  s.clear();
   return llvm::convertWideToUTF8(buffer, s);
 }
 

Modified: lldb/trunk/unittests/Host/HostInfoTest.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/unittests/Host/HostInfoTest.cpp?rev=358550&r1=358549&r2=358550&view=diff
==============================================================================
--- lldb/trunk/unittests/Host/HostInfoTest.cpp (original)
+++ lldb/trunk/unittests/Host/HostInfoTest.cpp Tue Apr 16 20:13:06 2019
@@ -50,3 +50,9 @@ TEST_F(HostInfoTest, GetAugmentedArchSpe
   EXPECT_EQ(HostInfo::GetAugmentedArchSpec(LLDB_ARCH_DEFAULT).GetTriple(),
             HostInfo::GetArchitecture(HostInfo::eArchKindDefault).GetTriple());
 }
+
+TEST_F(HostInfoTest, GetHostname) {
+  // Check non-empty string input works correctly.
+  std::string s("abc");
+  EXPECT_TRUE(HostInfo::GetHostname(s));
+}




More information about the lldb-commits mailing list