Windows: Avoiding resizing, use uninitialized data() instead
authorDavid Majnemer <david.majnemer@gmail.com>
Mon, 7 Oct 2013 21:57:07 +0000 (21:57 +0000)
committerDavid Majnemer <david.majnemer@gmail.com>
Mon, 7 Oct 2013 21:57:07 +0000 (21:57 +0000)
This is ever-so faster but more importantly matches what we have elsewhere.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192137 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Support/Windows/Process.inc

index 50a204fe5faef5d8959fb6ab07f1bcc9dc7aaeb6..f9a3db9d918d30710beb2b111760816d938a0189 100644 (file)
@@ -161,8 +161,9 @@ Optional<std::string> Process::GetEnv(StringRef Name) {
   SmallVector<wchar_t, MAX_PATH> Buf;
   size_t Size = MAX_PATH;
   do {
-    Buf.resize(Size);
-    Size = GetEnvironmentVariableW(&NameUTF16[0], &Buf[0], Buf.capacity());
+    Buf.reserve(Size);
+    Size =
+        GetEnvironmentVariableW(NameUTF16.data(), Buf.data(), Buf.capacity());
     if (Size == 0)
       return None;
 
@@ -172,9 +173,9 @@ Optional<std::string> Process::GetEnv(StringRef Name) {
 
   // Convert the result from UTF-16 to UTF-8.
   SmallVector<char, MAX_PATH> Res;
-  if (error_code ec = windows::UTF16ToUTF8(&Buf[0], Size, Res))
+  if (error_code ec = windows::UTF16ToUTF8(Buf.data(), Size, Res))
     return None;
-  return std::string(&Res[0]);
+  return std::string(Res.data());
 }
 
 error_code