diff --git a/ChangeLog b/ChangeLog index 0fea0a7e737b132326ea968344119c6916de79be..134220563baa76910d696574d1102b22f6f57dc0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2016-02-25 Benno Schulenberg <bensberg@justemail.net> + * src/browser.c (do_browser): Plug a memory leak by not copying + a string twice. This fixes Savannah bug #47206. + 2016-02-23 Benno Schulenberg <bensberg@justemail.net> * src/prompt.c (do_statusbar_output, do_statusbar_delete): Rename a variable, for contrast and correctness. diff --git a/src/browser.c b/src/browser.c index 857bec5dc61a37da8719a00dbf03754d5e43c4eb..5232733c72c1f03d8f5a637e8f7ea4dac6fdcc2f 100644 --- a/src/browser.c +++ b/src/browser.c @@ -322,7 +322,7 @@ char *do_browser(char *path, DIR *dir) /* We've successfully opened the parent directory, * save the current directory in prev_dir, so that * we can easily return to it by hitting Enter. */ - prev_dir = mallocstrcpy(NULL, striponedir(filelist[selected])); + prev_dir = striponedir(filelist[selected]); dir = opendir(filelist[selected]); if (dir == NULL) { @@ -330,6 +330,8 @@ char *do_browser(char *path, DIR *dir) * Complain. */ statusbar(_("Error reading %s: %s"), filelist[selected], strerror(errno)); + free(prev_dir); + prev_dir = NULL; beep(); continue; }