commit 528d39b011afb7ef6fd794ba6b74155d4e69bc68 from: NRK via: Hiltjo Posthuma date: Fri Sep 2 11:00:48 2022 UTC tab-complete: figure out the size before copying we already need to know the string length since `cursor` needs to be adjusted. so just calculate the length beforehand and use `memcpy` to copy exactly as much as needed (as opposed to `strncpy` which always writes `n` bytes). commit - 32db2b125190d366be472ccb7cad833248696144 commit + 528d39b011afb7ef6fd794ba6b74155d4e69bc68 blob - 969f6d80622579da4b69dd65893aba7869b3d2b1 blob + 6b285df1cc5e66febdabc4f4997db298737ce419 --- dmenu.c +++ dmenu.c @@ -517,9 +517,9 @@ insert: case XK_Tab: if (!sel) return; - strncpy(text, sel->text, sizeof text - 1); + cursor = strnlen(sel->text, sizeof text - 1); + memcpy(text, sel->text, cursor); text[sizeof text - 1] = '\0'; - cursor = strlen(text); match(); break; }