tab-complete: figure out the size before copying - dmenu - dynamic menu | |
git clone git://git.suckless.org/dmenu | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 528d39b011afb7ef6fd794ba6b74155d4e69bc68 | |
parent 32db2b125190d366be472ccb7cad833248696144 | |
Author: NRK <[email protected]> | |
Date: Thu, 1 Sep 2022 23:51:43 +0600 | |
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). | |
Diffstat: | |
M dmenu.c | 4 ++-- | |
1 file changed, 2 insertions(+), 2 deletions(-) | |
--- | |
diff --git 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; | |
} |