diff --git a/src/winio.c b/src/winio.c index abacb65cf9a07943c48372ac73d41a06a0a671b5..221b1e74d1d6b63d2b2f5c62eff8d40e717d8399 100644 --- a/src/winio.c +++ b/src/winio.c @@ -2441,7 +2441,7 @@ int nanogetstr(bool allow_tabs, const char *buf, const char *curranswer, { int kbinput; bool meta_key, func_key, s_or_t, ran_func, finished; - size_t answer_len = strlen(curranswer); + size_t curranswer_len = strlen(curranswer); #ifndef DISABLE_TABCOMP bool tabbed = FALSE; /* Whether we've pressed Tab more than once consecutively. */ @@ -2455,16 +2455,16 @@ int nanogetstr(bool allow_tabs, const char *buf, const char *curranswer, * any. */ #endif + answer = mallocstrcpy(answer, curranswer); + /* Only put statusbar_x at the end of the string if it's - * uninitialized, if it would be past the end of the string as it - * is, or if resetstatuspos is TRUE. Otherwise, leave it alone. - * This is so the cursor position stays at the same place if a - * prompt-changing toggle is pressed. */ - if (statusbar_x == (size_t)-1 || statusbar_x > answer_len || + * uninitialized, if it would be past the end of curranswer, or if + * resetstatuspos is TRUE. Otherwise, leave it alone. This is so + * the cursor position stays at the same place if a prompt-changing + * toggle is pressed. */ + if (statusbar_x == (size_t)-1 || statusbar_x > curranswer_len || resetstatuspos) - statusbar_x = answer_len; - - answer = mallocstrcpy(answer, curranswer); + statusbar_x = curranswer_len; currshortcut = s;