2004-06-28 Andrew Cagney <cagney@gnu.org>
authorAndrew Cagney <cagney@redhat.com>
Tue, 29 Jun 2004 14:57:39 +0000 (14:57 +0000)
committerAndrew Cagney <cagney@redhat.com>
Tue, 29 Jun 2004 14:57:39 +0000 (14:57 +0000)
* 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.

gdb/ChangeLog
gdb/complaints.c
gdb/defs.h
gdb/serial.c
gdb/utils.c

index d52c6c3840cf1561cabcec0411c87a92996cf3e3..063e6e3066e98f1dd02e8f811f595ef9cfbea9d4 100644 (file)
@@ -1,3 +1,21 @@
+? 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
index ec874da23d66dcc017357ca13a1008a1dd7f4b4b..bd869f0789e40d3efcfccf475e998594a982fe6d 100644 (file)
@@ -197,7 +197,7 @@ vcomplaint (struct complaints **c, const char *file, int line, const char *fmt,
        {
          char *msg;
          struct cleanup *cleanups;
-         xvasprintf (&msg, complaint->fmt, args);
+         msg = xstrvprintf (complaint->fmt, args);
          cleanups = make_cleanup (xfree, msg);
          wrap_here ("");
          if (series != SUBSEQUENT_MESSAGE)
index 99d64bb9c1e528ed29ffbd0dbdb5f5b377667130..8ccad526b6145c07c25d024f5a0fe1a4e09cdfa6 100644 (file)
@@ -892,8 +892,10 @@ extern void xfree (void *);
 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 **);
 
index ada5631dce939fc0bb2e5f2c40215716afc68660..72f02beb59384b4c7cb2eed30c2a8930b5da7469 100644 (file)
@@ -394,7 +394,7 @@ serial_printf (struct serial *desc, const char *format,...)
   char *buf;
   va_start (args, format);
 
-  xvasprintf (&buf, format, args);
+  buf = xstrvprintf (format, args);
   serial_write (desc, buf, strlen (buf));
 
   xfree (buf);
index f1c2fe443934a36463126a307b3aa96697879516..409e0bc568a994f44833a3c489ac7b2a1259b6ee 100644 (file)
@@ -752,7 +752,7 @@ internal_vproblem (struct internal_problem *problem,
      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\
@@ -1156,7 +1156,7 @@ xstrprintf (const char *format, ...)
   char *ret;
   va_list args;
   va_start (args, format);
-  xvasprintf (&ret, format, args);
+  ret = xstrvprintf (format, args);
   va_end (args);
   return ret;
 }
@@ -1166,7 +1166,7 @@ xasprintf (char **ret, const char *format, ...)
 {
   va_list args;
   va_start (args, format);
-  xvasprintf (ret, format, args);
+  (*ret) = xstrvprintf (format, args);
   va_end (args);
 }
 
@@ -1186,6 +1186,21 @@ xvasprintf (char **ret, const char *format, va_list ap)
                    "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.  */
@@ -2260,7 +2275,7 @@ vfprintf_maybe_filtered (struct ui_file *stream, const char *format,
   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);
@@ -2279,7 +2294,7 @@ vfprintf_unfiltered (struct ui_file *stream, const char *format, va_list args)
   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);