diff --git a/ChangeLog b/ChangeLog
index 46337df57b8b080e64ea83795b6adbc7ff95d90a..931c74e3338f41b268a6347725ba08ecd5655791 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -61,6 +61,9 @@ CVS code -
   get_untranslated_kbinput()
 	- Make the ascii_digits variables ints instead of size_t's,
 	  since they will only hold very small values. (DLR)
+  get_verbatim_kbinput()
+	- Don't pass v_kbinput in as a parameter, since we're
+	  dynamically allocating it and then returning it. (DLR)
   get_shortcut(), get_toggle()
 	- Add debug messages. (DLR)
 
diff --git a/src/nano.c b/src/nano.c
index dbbdca9f518f980a4a97055998274b7a03c2a4f9..91819646f1999ca471527b4f3127a97b8acd9211 100644
--- a/src/nano.c
+++ b/src/nano.c
@@ -1225,8 +1225,7 @@ void do_verbatim_input(void)
 
     statusbar(_("Verbatim input"));
 
-    v_kbinput = get_verbatim_kbinput(edit, ERR, v_kbinput, &v_len,
-	TRUE);
+    v_kbinput = get_verbatim_kbinput(edit, ERR, &v_len, TRUE);
 
     /* Turn on DISABLE_CURPOS while inserting character(s) and turn it
      * off afterwards, so that if constant cursor position display is
diff --git a/src/proto.h b/src/proto.h
index bd7b952ff119c9c6f5e471c73288a5efaff5c537..d255948044834baa0f733c9bfaa06ddf4a2a5535 100644
--- a/src/proto.h
+++ b/src/proto.h
@@ -540,8 +540,8 @@ int get_control_kbinput(int kbinput);
 int get_escape_seq_kbinput(const int *escape_seq, size_t es_len, bool
 	*ignore_seq);
 int get_escape_seq_abcd(int kbinput);
-int *get_verbatim_kbinput(WINDOW *win, int first, int *v_kbinput, size_t
-	*v_len, bool allow_ascii);
+int *get_verbatim_kbinput(WINDOW *win, int v_first, size_t *v_len, bool
+	allow_ascii);
 int get_untranslated_kbinput(int kbinput, size_t position, bool
 	allow_ascii
 #ifndef NANO_SMALL
diff --git a/src/winio.c b/src/winio.c
index 2ac375d8be42004640fb6d0808e3007031ddc72e..b6caa518a12364f734f0fcd461841fa9b895d466 100644
--- a/src/winio.c
+++ b/src/winio.c
@@ -190,8 +190,8 @@ int get_kbinput(WINDOW *win, bool *meta_key, bool *func_key)
 	    int *sequence = NULL;
 	    size_t seq_len;
 
-	    sequence = get_verbatim_kbinput(win, kbinput, sequence,
-		&seq_len, FALSE);
+	    sequence = get_verbatim_kbinput(win, kbinput, &seq_len,
+		FALSE);
 
 	    /* Handle escape sequences. */
 	    if (seq == ESCAPE_SEQ) {
@@ -1168,13 +1168,13 @@ int get_escape_seq_abcd(int kbinput)
 }
 
 /* Read in a string of input characters (e.g. an escape sequence)
- * verbatim.  If first isn't ERR, make it the first character of the
- * string.  Store the string in v_kbinput and return the length of the
- * string in v_len.  Assume nodelay(win) is FALSE. */
-int *get_verbatim_kbinput(WINDOW *win, int first, int *v_kbinput, size_t
-	*v_len, bool allow_ascii)
+ * verbatim.  If v_first isn't ERR, make it the first character of the
+ * string.  Return the length of the string in v_len.  Assume
+ * nodelay(win) is FALSE. */
+int *get_verbatim_kbinput(WINDOW *win, int v_first, size_t *v_len, bool
+	allow_ascii)
 {
-    int kbinput;
+    int kbinput, *v_kbinput;
     size_t i = 0, v_newlen = 0;
 
 #ifndef NANO_SMALL
@@ -1193,12 +1193,12 @@ int *get_verbatim_kbinput(WINDOW *win, int first, int *v_kbinput, size_t
 
     /* If first is ERR, read the first character using blocking input,
      * since using non-blocking input will eat up all unused CPU.
-     * Otherwise, treat first as the first character.  Then increment
+     * Otherwise, treat v_first as the first character.  Then increment
      * v_len and save the character in v_kbinput. */
-    if (first == ERR)
+    if (v_first == ERR)
 	kbinput = wgetch(win);
     else
-	kbinput = first;
+	kbinput = v_first;
     (*v_len)++;
     v_kbinput[0] = kbinput;
 #ifdef DEBUG