mirror of
https://gitlab.freedesktop.org/libinput/libei.git
synced 2026-05-14 19:18:09 +02:00
util: replace strcat memcpy in strv_join
Repeatedly using strcat means we rescan the string, making it O(n^2). Use memcpy and an offset instead because we can't affort to waste nanoseconds here. Assisted-by: Claude:claude-opus-4-6 Part-of: <https://gitlab.freedesktop.org/libinput/libei/-/merge_requests/388>
This commit is contained in:
parent
80e2b4e4d9
commit
7d42a95d12
1 changed files with 9 additions and 3 deletions
|
|
@ -150,11 +150,17 @@ strv_join(char **strv, const char *joiner)
|
|||
slen += (count - 1) * strlen(joiner);
|
||||
|
||||
str = xalloc(slen + 1); /* trailing \0 */
|
||||
size_t jlen = strlen(joiner);
|
||||
size_t offset = 0;
|
||||
for (s = strv; *s; s++) {
|
||||
strcat(str, *s);
|
||||
size_t l = strlen(*s);
|
||||
memcpy(str + offset, *s, l);
|
||||
offset += l;
|
||||
--count;
|
||||
if (count > 0)
|
||||
strcat(str, joiner);
|
||||
if (count > 0) {
|
||||
memcpy(str + offset, joiner, jlen);
|
||||
offset += jlen;
|
||||
}
|
||||
}
|
||||
|
||||
return str;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue