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):
* 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. */