File cvs-useless-asnprintf.diff of Package cvs
--- m4/gnulib.m4
+++ m4/gnulib.m4
@@ -80,7 +80,6 @@
gl_TIMESPEC
gl_FUNC_TZSET_CLOBBER
gl_FUNC_GLIBC_UNLOCKED_IO
- gl_FUNC_VASNPRINTF
gl_FUNC_VASPRINTF
gl_XALLOC
gl_XGETCWD
--- src/error.c
+++ src/error.c
@@ -111,24 +111,14 @@
int save_errno = errno;
/* Various buffers we attempt to use to generate the error message. */
- char statbuf[256];
char *buf;
size_t length;
- char statbuf2[384];
char *buf2;
- char statcmdbuf[32];
- char *cmdbuf;
- char *emptybuf = "";
-
- /* Initialize these to avoid a lot of special case error handling. */
- buf = statbuf;
- buf2 = statbuf2;
- cmdbuf = emptybuf;
+ char *cmdbuf = 0;
/* Expand the message the user passed us. */
va_start (args, message);
- length = sizeof (statbuf);
- buf = vasnprintf (statbuf, &length, message, args);
+ length = vasprintf (&buf, message, args);
va_end (args);
if (!buf) goto memerror;
@@ -141,21 +131,19 @@
*/
if (cvs_cmd_name)
{
- length = sizeof (statcmdbuf);
- cmdbuf = asnprintf (statcmdbuf, &length, " %s%s%s",
- status ? "[" : "",
- cvs_cmd_name,
- status ? " aborted]" : "");
+ length = asprintf (&cmdbuf, " %s%s%s",
+ status ? "[" : "",
+ cvs_cmd_name,
+ status ? " aborted]" : "");
/* Else cmdbuf still = emptybuf. */
if (!cmdbuf) goto memerror;
}
/* Else cmdbuf still = emptybuf. */
/* Now put it all together. */
- length = sizeof (statbuf2);
- buf2 = asnprintf (statbuf2, &length, "%s%s: %s%s%s\n",
- program_name, cmdbuf, buf,
- errnum ? ": " : "", errnum ? strerror (errnum) : "");
+ length = asprintf (&buf2, "%s%s: %s%s%s\n",
+ program_name, cmdbuf ? cmdbuf : "", buf,
+ errnum ? ": " : "", errnum ? strerror (errnum) : "");
if (!buf2) goto memerror;
/* Send the final message to the client or log it. */
@@ -166,9 +154,9 @@
exit (EXIT_FAILURE);
/* Free anything we may have allocated. */
- if (buf != statbuf) free (buf);
- if (buf2 != statbuf2) free (buf2);
- if (cmdbuf != statcmdbuf && cmdbuf != emptybuf) free (cmdbuf);
+ free (buf);
+ free (buf2);
+ free (cmdbuf);
/* Restore errno per our charter. */
errno = save_errno;
--- src/subr.c
+++ src/subr.c
@@ -1881,8 +1881,8 @@
char *result;
va_start (args, format);
- result = vasnprintf (resultbuf, lengthp, format, args);
- if (result == NULL)
+ *lengthp = vasprintf (&result, format, args);
+ if (*lengthp < 0)
error (1, errno, "Failed to write to string.");
va_end (args);