From 761fa7cd3abd518a6c614c6e6947288884b3677f Mon Sep 17 00:00:00 2001 From: Benno Schulenberg Date: Thu, 25 Feb 2016 13:52:54 +0000 Subject: [PATCH] Plugging a memory leak by not copying a string twice. This fixes Savannah bug #47206. git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@5676 35c25a1d-7b9e-4130-9fde-d3aeb78583b8 --- ChangeLog | 4 ++++ src/browser.c | 4 +++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 0fea0a7e..13422056 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2016-02-25 Benno Schulenberg + * 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 * 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 857bec5d..5232733c 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; }