diff --git a/src/browser.c b/src/browser.c
index 01e8f42faf5ec32fdf93e40d0b7bb49a03424281..47cce33cb75c3f1f4311b609ba885a97c1ecc8ca 100644
--- a/src/browser.c
+++ b/src/browser.c
@@ -380,12 +380,13 @@ char *do_browse_from(const char *inpath)
 	path = mallocstrassn(path, striponedir(path));
 
 	if (stat(path, &st) == -1 || !S_ISDIR(st.st_mode)) {
-	    free(path);
+	    char * currentdir = charalloc(PATH_MAX + 1);
 
-	    path = charalloc(PATH_MAX + 1);
-	    path = getcwd(path, PATH_MAX + 1);
+	    free(path);
+	    path = getcwd(currentdir, PATH_MAX + 1);
 
 	    if (path == NULL) {
+		free(currentdir);
 		statusline(MILD, "The working directory has disappeared");
 		beep();
 		napms(1200);