diff --git a/files.c b/files.c
index 97084093480427b54e8077453722a9f3f336c4e7..029a482efc080906102f34d8c73e926bb2f0722e 100644
--- a/files.c
+++ b/files.c
@@ -625,7 +625,8 @@ int input_tab(char *buf, int place, int lastWasTab)
 
 	/* Make a local copy of the string -- up to the position of the
 	   cursor */
-	matchBuf = (char *) calloc(strlen(buf), sizeof(char));
+	matchBuf = (char *) calloc(strlen(buf) + 2, sizeof(char));
+
 	strncpy(matchBuf, buf, place);
 	tmp = matchBuf;
 
@@ -656,14 +657,17 @@ int input_tab(char *buf, int place, int lastWasTab)
 	free(matchBuf);
 
 	/* Did we find exactly one match? */
-	if (matches && num_matches == 1) {
+	switch(num_matches) {
+	case 0:
+	    break;
+	case 1:
 	    buf = nrealloc(buf, strlen(buf) + strlen(matches[0]) - pos + 1);
 	    /* write out the matched command */
 	    strncpy(buf + pos, matches[0] + pos,
 		    strlen(matches[0]) - pos);
 	    newplace += strlen(matches[0]) - pos;
-	}
-	else {
+	    break;
+	default:
 	    /* Check to see if all matches share a beginning, and if so
 		tack it onto buf and then beep */
 
@@ -689,6 +693,7 @@ int input_tab(char *buf, int place, int lastWasTab)
 		    break;
 		}
 	    }
+	    break;
 	}
     } else {
 	/* Ok -- the last char was a TAB.  Since they
diff --git a/po/nano.pot b/po/nano.pot
index 736b7dafaf369931fa9aeaf22c1329e39bae1629..319165632e485a71f58bc96ef9b2c58fcf42820b 100644
--- a/po/nano.pot
+++ b/po/nano.pot
@@ -6,7 +6,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2000-11-05 23:04-0500\n"
+"POT-Creation-Date: 2000-11-06 00:38-0500\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -107,7 +107,7 @@ msgstr ""
 msgid "File exists, OVERWRITE ?"
 msgstr ""
 
-#: files.c:735
+#: files.c:740
 msgid "(more)"
 msgstr ""