diff --git a/noice.c b/noice.c index a0a8f175..4f48b2f3 100644 --- a/noice.c +++ b/noice.c @@ -577,26 +577,24 @@ nochange: return; case SEL_BACK: /* There is no going back */ - if (strcmp(path, "/") == 0) { + if (strcmp(path, "/") == 0) goto nochange; + dir = xdirname(path); + free(path); + path = dir; + free(filter); + filter = xstrdup(ifilter); /* Reset filter */ + /* Recall history */ + hist = SLIST_FIRST(&histhead); + if (hist != NULL) { + cur = hist->pos; + DPRINTF_D(hist->pos); + SLIST_REMOVE_HEAD(&histhead, entry); + free(hist); } else { - dir = xdirname(path); - free(path); - path = dir; - free(filter); - filter = xstrdup(ifilter); /* Reset filter */ - /* Recall history */ - hist = SLIST_FIRST(&histhead); - if (hist != NULL) { - cur = hist->pos; - DPRINTF_D(hist->pos); - SLIST_REMOVE_HEAD(&histhead, entry); - free(hist); - } else { - cur = 0; - } - goto out; + cur = 0; } + goto out; case SEL_GOIN: /* Cannot descend in empty directories */ if (n == 0)