]> git.wh0rd.org Git - nano.git/commitdiff
Now putting things in the proper order: setting 'prev_dir' only when
authorBenno Schulenberg <bensberg@justemail.net>
Thu, 25 Feb 2016 14:08:47 +0000 (14:08 +0000)
committerBenno Schulenberg <bensberg@justemail.net>
Thu, 25 Feb 2016 14:08:47 +0000 (14:08 +0000)
we've actually succeeded in changing directory.

git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@5677 35c25a1d-7b9e-4130-9fde-d3aeb78583b8

ChangeLog
src/browser.c

index 134220563baa76910d696574d1102b22f6f57dc0..700832c0d82893a513d3a3ea09677433e516255b 100644 (file)
--- 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):
index 5232733c72c1f03d8f5a637e8f7ea4dac6fdcc2f..383adb378d64bfe1fd8a1e739fcbe012b9eb932e 100644 (file)
@@ -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. */