xmalloc: remove delim param from xstrjoin() and add separate xstrjoin3()

This avoids the need for an unused third argument for most xstrjoin()
calls and replaces the cases where it's needed with a more flexible
function. Code generation is the same in both cases, when there are 2
string params and a compile-time known delimiter.

This commit also converts 4 uses of xasprintf() to use xstrjoin*().

See also: https://godbolt.org/z/xsjrhv9b6
This commit is contained in:
Craig Barnes 2024-08-03 08:12:13 +01:00
parent 62b0b65d47
commit f87c9bb9f7
7 changed files with 44 additions and 31 deletions

8
osc.c
View file

@ -767,7 +767,7 @@ kitty_notification(struct terminal *term, char *string)
else {
/* Append, comma separated */
char *old_category = category;
category = xstrjoin(old_category, decoded, ',');
category = xstrjoin3(old_category, ",", decoded);
free(decoded);
free(old_category);
}
@ -910,7 +910,7 @@ kitty_notification(struct terminal *term, char *string)
category = NULL; /* Prevent double free */
} else {
/* Append, comma separated */
char *new_category = xstrjoin(notif->category, category, ',');
char *new_category = xstrjoin3(notif->category, ",", category);
free(notif->category);
notif->category = new_category;
}
@ -929,7 +929,7 @@ kitty_notification(struct terminal *term, char *string)
payload = NULL;
} else {
char *old = *ptr;
*ptr = xstrjoin(old, payload, 0);
*ptr = xstrjoin(old, payload);
free(old);
}
break;
@ -1002,7 +1002,7 @@ kitty_notification(struct terminal *term, char *string)
alive_ids = xstrdup(item_id);
else {
char *old_alive_ids = alive_ids;
alive_ids = xstrjoin(old_alive_ids, item_id, ',');
alive_ids = xstrjoin3(old_alive_ids, ",", item_id);
free(old_alive_ids);
}
}