diff --git a/dmenu.c b/dmenu.c
index c0addad..44b4254 100644
--- a/dmenu.c
+++ b/dmenu.c
@@ -396,10 +396,7 @@ kpress(XKeyEvent * e) {
 	default:
 		if(num && !iscntrl((int) buf[0])) {
 			buf[num] = 0;
-			if(len > 0)
-				strncat(text, buf, sizeof text);
-			else
-				strncpy(text, buf, sizeof text);
+			strncpy(text + len, buf, sizeof text - len);
 			match(text);
 		}
 		break;