diff --git a/src/calc.c b/src/calc.c
index 79bd4ec976f025e7e12d367229c6ef492d200187..2be704c2226629665b414364a890465baad42faa 100644
--- a/src/calc.c
+++ b/src/calc.c
@@ -367,9 +367,9 @@ void calc_process() {
 
   /* start calculating */
   if(!calc_dir(root, name) && !failed) {
-    free(path);
     if(!path[1] && strcmp(name, "."))
       free(name);
+    free(path);
     if(root->sub == NULL) {
       freedir(root);
       failed = 1;
@@ -403,9 +403,9 @@ void calc_process() {
   }
 
   /* something went wrong... */
+  free(path);
   if(!path[1] && strcmp(name, "."))
     free(name);
-  free(path);
   freedir(root);
 calc_fail:
   while(failed && !input_handle(0))