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
This commit is contained in:
Benno Schulenberg 2016-02-25 14:08:47 +00:00
parent 761fa7cd3a
commit 3b8989b0a9
2 changed files with 8 additions and 9 deletions

View File

@ -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):

View 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. */