diff --git a/ChangeLog b/ChangeLog
index eb00c5a33b2ccaa401600e3e3c28f2e925b8bb65..74c671367f7bf6c16d34bff30add4b058d3bf5d7 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -2,6 +2,8 @@
 	* src/search.c (get_history_completion): Avoid leaking memory
 	when tabbing on a string that does not occur in the history.
 	This fixes Savannah bug #47124 reported by Mike Frysinger.
+	* src/files.c (input_tab): Parse a character in the correct
+	buffer.  This fixes Savannah bug #47199.
 
 2016-02-18  Benno Schulenberg  <bensberg@justemail.net>
 	* src/search.c (do_replace_loop), src/text.c (do_int_spell_fix),
diff --git a/src/files.c b/src/files.c
index cd420d912ae7016ccc78507897c8758488399d84..ad6779bdc6aa8cbe3a75632dc0b46de3b2a7b328 100644
--- a/src/files.c
+++ b/src/files.c
@@ -2830,7 +2830,7 @@ char *input_tab(char *buf, bool allow_files, size_t *place, bool
 	    if (match < num_matches || matches[0][common_len] == '\0')
 		break;
 
-	    common_len += parse_mbchar(buf + common_len, NULL, NULL);
+	    common_len += parse_mbchar(matches[0] + common_len, NULL, NULL);
 	}
 
 	free(match1_mb);