diff options
author | ridiculousfish <corydoras@ridiculousfish.com> | 2015-01-20 01:04:01 -0800 |
---|---|---|
committer | ridiculousfish <corydoras@ridiculousfish.com> | 2015-01-20 01:04:07 -0800 |
commit | b0cbad84f4f2570d5742d0bbd82718ef1908d2a7 (patch) | |
tree | e38dbfcb200cd49e7ffeda2e40731805e255bd5b | |
parent | f920be5ea30ca05b8da1069d8830df02d3213c9a (diff) |
Stop leaking the result of wrealpath
-rw-r--r-- | expand.cpp | 16 |
1 files changed, 8 insertions, 8 deletions
@@ -1616,7 +1616,7 @@ static void expand_home_directory(wcstring &input) { size_t tail_idx; wcstring username = get_home_directory_name(input, &tail_idx); - + bool tilde_error = false; wcstring home; if (username.empty()) @@ -1639,18 +1639,18 @@ static void expand_home_directory(wcstring &input) home = str2wcstring(userinfo->pw_dir); } } - - wchar_t *realhome; - realhome = wrealpath(home, NULL); - + + wchar_t *realhome = wrealpath(home, NULL); + if (! tilde_error && realhome) { input.replace(input.begin(), input.begin() + tail_idx, realhome); } - else - { + else + { input[0] = L'~'; - } + } + free((void *)realhome); } } |