{
char *old = *s;
char *new_str;
- size_t oldlen = (old == NULL) ? 0 : strlen(old);
+ size_t oldlen = (old == nullptr) ? 0 : strlen(old);
size_t appendlen = strlen(append);
new_str = zmalloc<char>(oldlen + appendlen + 1);
{
char *new_str;
size_t oldlen = (*s) ? strlen(*s) : 0;
+ size_t addlen = 0;
int ret;
va_list args;
/* Compute length of formatted string we append. */
va_start(args, fmt);
- ret = vsnprintf(NULL, 0, fmt, args);
+ ret = vsnprintf(nullptr, 0, fmt, args);
va_end(args);
if (ret == -1) {
}
/* Allocate space for old string + new string + \0. */
- new_str = zmalloc<char>(oldlen + ret + 1);
+ addlen = ret + 1;
+ new_str = zmalloc<char>(oldlen + addlen);
if (!new_str) {
ret = -ENOMEM;
goto end;
/* Format new string in-place. */
va_start(args, fmt);
- ret = vsprintf(&new_str[oldlen], fmt, args);
+ ret = vsnprintf(&new_str[oldlen], addlen, fmt, args);
va_end(args);
if (ret == -1) {
free(*s);
*s = new_str;
- new_str = NULL;
+ new_str = nullptr;
end:
return ret;