diff --git a/src/prompt.c b/src/prompt.c
index 3ab5b510a22f3780678060b98c653c0381a72a68..597895ff82e510ea31b75eb7de1882f9e7cebe1e 100644
--- a/src/prompt.c
+++ b/src/prompt.c
@@ -652,7 +652,7 @@ int do_prompt(bool allow_tabs,
 	void (*refresh_func)(void), const char *msg, ...)
 {
     va_list ap;
-    int retval = KEY_WINCH;
+    int retval;
     functionptrtype func = NULL;
 #ifndef DISABLE_TABCOMP
     bool listed = FALSE;
@@ -664,15 +664,17 @@ int do_prompt(bool allow_tabs,
 
     answer = mallocstrcpy(answer, curranswer);
 
-    while (retval == KEY_WINCH) {
-	prompt = charalloc((COLS * mb_cur_max()) + 1);
-	va_start(ap, msg);
-	vsnprintf(prompt, COLS * mb_cur_max(), msg, ap);
-	va_end(ap);
-	/* Reserve five columns for colon plus angles plus answer, ":<aa>". */
-	null_at(&prompt, actual_x(prompt, (COLS < 5) ? 0 : COLS - 5));
-
-	func = acquire_an_answer(&retval, allow_tabs,
+#ifndef NANO_TINY
+  redo_theprompt:
+#endif
+    prompt = charalloc((COLS * mb_cur_max()) + 1);
+    va_start(ap, msg);
+    vsnprintf(prompt, COLS * mb_cur_max(), msg, ap);
+    va_end(ap);
+    /* Reserve five columns for colon plus angles plus answer, ":<aa>". */
+    null_at(&prompt, actual_x(prompt, (COLS < 5) ? 0 : COLS - 5));
+
+    func = acquire_an_answer(&retval, allow_tabs,
 #ifndef DISABLE_TABCOMP
 			allow_files, &listed,
 #endif
@@ -681,9 +683,13 @@ int do_prompt(bool allow_tabs,
 #endif
 			refresh_func);
 
-	free(prompt);
-	prompt = NULL;
-    }
+    free(prompt);
+    prompt = NULL;
+
+#ifndef NANO_TINY
+    if (retval == KEY_WINCH)
+	goto redo_theprompt;
+#endif
 
     /* If we're done with this prompt, restore the x position to what
      * it was at a possible previous prompt. */