diff options
| author | Robert Schumacher <roschuma@microsoft.com> | 2017-03-31 17:41:24 -0700 |
|---|---|---|
| committer | Alexander Karatarakis <alkarata@microsoft.com> | 2017-03-31 17:41:24 -0700 |
| commit | 77c90c2df532bed65cd77ef85f6a0b6140a214d3 (patch) | |
| tree | ea0cf1d696833ed15936bcaba364acd8533df156 /toolsrc/src/vcpkg_System.cpp | |
| parent | 4792821a1d5d5fec764241f3d97284ec1579ce3a (diff) | |
| download | vcpkg-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.cpp | 11 |
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) |
