This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
+ version 3 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
return p;
}
-
/*
memdup with a talloc.
*/
/* append the string with the trailing \0 */
memcpy(&ret[olen], append, alenz);
+ _talloc_set_name_const(ret, ret);
+
return ret;
}
va_list ap2;
char c;
- va_copy(ap2, ap);
-
/* this call looks strange, but it makes it work on older solaris boxes */
- if ((len = vsnprintf(&c, 1, fmt, ap2)) < 0) {
+ va_copy(ap2, ap);
+ len = vsnprintf(&c, 1, fmt, ap2);
+ va_end(ap2);
+ if (len < 0) {
return NULL;
}
if (ret) {
va_copy(ap2, ap);
vsnprintf(ret, len+1, fmt, ap2);
+ va_end(ap2);
_talloc_set_name_const(ret, ret);
}
tc = talloc_chunk_from_ptr(s);
+ s_len = tc->size - 1;
+
va_copy(ap2, ap);
+ len = vsnprintf(&c, 1, fmt, ap2);
+ va_end(ap2);
- s_len = tc->size - 1;
- if ((len = vsnprintf(&c, 1, fmt, ap2)) <= 0) {
+ if (len <= 0) {
/* Either the vsnprintf failed or the format resulted in
* no characters being formatted. In the former case, we
* ought to return NULL, in the latter we ought to return
if (!s) return NULL;
va_copy(ap2, ap);
-
vsnprintf(s+s_len, len+1, fmt, ap2);
+ va_end(ap2);
_talloc_set_name_const(s, s);
return s;
return _talloc_zero(ctx, el_size * count, name);
}
-
/*
realloc an array, checking for integer overflow in the array size
*/