+? diffs
+Index: ChangeLog
+===================================================================
+RCS file: /cvs/src/src/gdb/ChangeLog,v
+retrieving revision 1.6061
+diff -p -u -r1.6061 ChangeLog
+--- ChangeLog 29 Jun 2004 06:39:05 -0000 1.6061
++++ ChangeLog 29 Jun 2004 14:55:28 -0000
+@@ -1,3 +1,12 @@
+2004-06-28 Andrew Cagney <cagney@gnu.org>
+
+ * defs.h (xstrvprintf): Declare.
+ * utils.c (xstrvprintf): New function.
+ (internal_vproblem, xstrprintf, xasprintf)
+ (vfprintf_maybe_filtered, vfprintf_unfiltered): Use xstrvprintf.
+ * serial.c (serial_printf): Ditto.
+ * complaints.c (vcomplaint): Ditto.
+
2004-06-29 Corinna Vinschen <vinschen@redhat.com>
* infcmd.c (attach_command): Move call to target_terminal_inferior
extern void xasprintf (char **ret, const char *format, ...) ATTR_FORMAT (printf, 2, 3);
extern void xvasprintf (char **ret, const char *format, va_list ap);
-/* Like asprintf, but return the string, throw an error if no memory. */
+/* Like asprintf and vasprintf, but return the string, throw an error
+ if no memory. */
extern char *xstrprintf (const char *format, ...) ATTR_FORMAT (printf, 1, 2);
+extern char *xstrvprintf (const char *format, va_list ap);
extern int parse_escape (char **);
so that the user knows that they are living on the edge. */
{
char *msg;
- xvasprintf (&msg, fmt, ap);
+ msg = xstrvprintf (fmt, ap);
reason = xstrprintf ("\
%s:%d: %s: %s\n\
A problem internal to GDB has been detected,\n\
char *ret;
va_list args;
va_start (args, format);
- xvasprintf (&ret, format, args);
+ ret = xstrvprintf (format, args);
va_end (args);
return ret;
}
{
va_list args;
va_start (args, format);
- xvasprintf (ret, format, args);
+ (*ret) = xstrvprintf (format, args);
va_end (args);
}
"vasprintf call failed (errno %d)", errno);
}
+char *
+xstrvprintf (const char *format, va_list ap)
+{
+ char *ret = NULL;
+ int status = vasprintf (&ret, format, ap);
+ /* NULL is returned when there was a memory allocation problem. */
+ if (ret == NULL)
+ nomem (0);
+ /* A negative status (the printed length) with a non-NULL buffer
+ should never happen, but just to be sure. */
+ if (status < 0)
+ internal_error (__FILE__, __LINE__,
+ "vasprintf call failed (errno %d)", errno);
+ return ret;
+}
/* My replacement for the read system call.
Used like `read' but keeps going if `read' returns too soon. */
char *linebuffer;
struct cleanup *old_cleanups;
- xvasprintf (&linebuffer, format, args);
+ linebuffer = xstrvprintf (format, args);
old_cleanups = make_cleanup (xfree, linebuffer);
fputs_maybe_filtered (linebuffer, stream, filter);
do_cleanups (old_cleanups);
char *linebuffer;
struct cleanup *old_cleanups;
- xvasprintf (&linebuffer, format, args);
+ linebuffer = xstrvprintf (format, args);
old_cleanups = make_cleanup (xfree, linebuffer);
fputs_unfiltered (linebuffer, stream);
do_cleanups (old_cleanups);