commit 3b8989b0a9c1b2d8a558cd97bf6f2f714639cf81
parent 761fa7cd3abd518a6c614c6e6947288884b3677f
Author: Benno Schulenberg <bensberg@justemail.net>
Date: Thu, 25 Feb 2016 14:08:47 +0000
Now putting things in the proper order: setting 'prev_dir' only when
we've actually succeeded in changing directory.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@5677 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
Diffstat:
2 files changed, 8 insertions(+), 9 deletions(-)
diff --git a/ChangeLog b/ChangeLog
@@ -1,6 +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.
+ * src/browser.c (do_browser): Now put things in the proper order.
2016-02-23 Benno Schulenberg <bensberg@justemail.net>
* src/prompt.c (do_statusbar_output, do_statusbar_delete):
diff --git a/src/browser.c b/src/browser.c
@@ -318,24 +318,22 @@ char *do_browser(char *path, DIR *dir)
* get out. */
retval = mallocstrcpy(NULL, filelist[selected]);
break;
- } else if (strcmp(tail(filelist[selected]), "..") == 0)
- /* 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 = striponedir(filelist[selected]);
+ }
dir = opendir(filelist[selected]);
+
if (dir == NULL) {
- /* We can't open this directory for some reason.
- * Complain. */
statusbar(_("Error reading %s: %s"),
filelist[selected], strerror(errno));
- free(prev_dir);
- prev_dir = NULL;
beep();
continue;
}
+ /* If we moved up one level, remember where we came from, so
+ * this directory can be highlighted and easily reentered. */
+ if (strcmp(tail(filelist[selected]), "..") == 0)
+ prev_dir = striponedir(filelist[selected]);
+
path = mallocstrcpy(path, filelist[selected]);
/* Start over again with the new path value. */