diff --git a/files.c b/files.c
index 372adde03bf993f410ea7af0cdbe4333ea31e9b0..fcab7f884029bcaae9637f61eb3b8e49182a448d 100644
--- a/files.c
+++ b/files.c
@@ -279,6 +279,10 @@ int do_insertfile(void)
 		free(realname);
 		realname = tmp;
 	    }
+	    else {
+		free(realname);
+		return do_insertfile();
+	    }
 	}
 #endif
 
@@ -529,6 +533,8 @@ int do_writeout(int exiting)
 		free(answer);
 		answer = tmp;
 	    }
+	    else
+		return do_writeout(exiting);
 	}
 #endif