diff --git a/src/calc.c b/src/calc.c index 9601d106f3b2c4e6ca653170dd48ece9dcf49161..8ae299e21ca63992209e8f6dd8d9b5703629d7c0 100644 --- a/src/calc.c +++ b/src/calc.c @@ -342,10 +342,16 @@ void calc_process() { } root = t; curdev = fs.st_dev; - free(path); /* start calculating */ if(!calc_dir(root, name) && !failed) { + free(path); + if(root->sub == NULL) { + freedir(root); + failed = 1; + strcpy(errmsg, "Directory empty."); + goto calc_fail; + } browse_init(root->sub); /* update references and free original item */ @@ -373,6 +379,7 @@ void calc_process() { } /* something went wrong... */ + free(path); freedir(root); calc_fail: while(failed && !input_handle(0))