buf = malloc(len);
if (!buf) {
/* can't call debug or we would recurse */
- exit(1);
+ exit_cleanup(1);
}
}
- ret = vsprintf(buf, format, ap);
-
- if (ret < 0) {
- str[0] = 0;
- return -1;
- }
-
- if (ret < n) {
- n = ret;
- } else if (ret > n) {
- ret = -1;
+ vsprintf(buf, format, ap);
+ ret = strlen(buf);
+ if (ret > n) {
+ /* yikes! */
+ exit_cleanup(1);
}
-
- buf[n] = 0;
+ buf[ret] = 0;
- memcpy(str, buf, n+1);
+ memcpy(str, buf, ret+1);
return ret;
#endif
va_end(ap);
return ret;
}
+