commit 528d39b011afb7ef6fd794ba6b74155d4e69bc68 Author: NRK <n...@disroot.org> AuthorDate: Thu Sep 1 23:51:43 2022 +0600 Commit: Hiltjo Posthuma <hil...@codemadness.org> CommitDate: Fri Sep 2 13:00:48 2022 +0200
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). diff --git a/dmenu.c b/dmenu.c index 969f6d8..6b285df 100644 --- a/dmenu.c +++ b/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; }