aboutsummaryrefslogtreecommitdiff
path: root/toolsrc/src/vcpkg_System.cpp
diff options
context:
space:
mode:
authorRobert Schumacher <roschuma@microsoft.com>2017-03-31 17:41:24 -0700
committerAlexander Karatarakis <alkarata@microsoft.com>2017-03-31 17:41:24 -0700
commit77c90c2df532bed65cd77ef85f6a0b6140a214d3 (patch)
treeea0cf1d696833ed15936bcaba364acd8533df156 /toolsrc/src/vcpkg_System.cpp
parent4792821a1d5d5fec764241f3d97284ec1579ce3a (diff)
downloadvcpkg-77c90c2df532bed65cd77ef85f6a0b6140a214d3.tar.gz
vcpkg-77c90c2df532bed65cd77ef85f6a0b6140a214d3.zip
Fix memory leak in get_environmental_variable()
Diffstat (limited to 'toolsrc/src/vcpkg_System.cpp')
-rw-r--r--toolsrc/src/vcpkg_System.cpp11
1 files changed, 6 insertions, 5 deletions
diff --git a/toolsrc/src/vcpkg_System.cpp b/toolsrc/src/vcpkg_System.cpp
index 589dd1924..688773aea 100644
--- a/toolsrc/src/vcpkg_System.cpp
+++ b/toolsrc/src/vcpkg_System.cpp
@@ -167,12 +167,13 @@ namespace vcpkg::System
if (sz == 0)
return nullopt;
- auto ret = std::make_unique<std::wstring>(sz, L'\0');
- Checks::check_exit(VCPKG_LINE_INFO, MAXDWORD >= ret->size());
- auto sz2 = GetEnvironmentVariableW(varname, ret->data(), static_cast<DWORD>(ret->size()));
+ std::wstring ret(sz, L'\0');
+
+ Checks::check_exit(VCPKG_LINE_INFO, MAXDWORD >= ret.size());
+ auto sz2 = GetEnvironmentVariableW(varname, ret.data(), static_cast<DWORD>(ret.size()));
Checks::check_exit(VCPKG_LINE_INFO, sz2 + 1 == sz);
- ret->pop_back();
- return *ret.release();
+ ret.pop_back();
+ return ret;
}
static bool is_string_keytype(DWORD hkey_type)