* ui-file.h (ui_file_xstrdup): Mention that the length argument
authorPedro Alves <palves@redhat.com>
Fri, 14 Aug 2009 00:32:33 +0000 (00:32 +0000)
committerPedro Alves <palves@redhat.com>
Fri, 14 Aug 2009 00:32:33 +0000 (00:32 +0000)
may be NULL.
* ui-file.c (ui_file_xstrdup): Don't dereference LENGTH if it is
NULL.
* aix-thread.c (aix_thread_extra_thread_info): Pass NULL as length
parameter to ui_file_xstrdup.
* arm-tdep.c (_initialize_arm_tdep): Ditto.
* infrun.c (print_target_wait_results): Ditto.
* language.c (add_language): Ditto.
* linespec.c (cplusplus_error): Ditto.
* remote.c (escape_buffer): Ditto.
* typeprint.c (type_to_string): Ditto.
* utils.c (error_stream): Ditto.
* varobj.c (value_get_print_value): Ditto.
* xtensa-tdep.c (xtensa_verify_config): Replace `dummy' local with
`length' local.  Pass it to ui_file_xstrdup, and avoid an strlen
call.
* gdbarch.sh (verify_gdbarch): Ditto.
* gdbarch.c: Regenerate.
* cli/cli-setshow.c (do_setshow_command): Pass NULL as length
parameter to ui_file_xstrdup.
* python/python-frame.c (frapy_str): Ditto.
* python/python-type.c (typy_str): Use the length local instead of
calling strlen.
* python/python-value.c (valpy_str): Pass NULL as length parameter
to ui_file_xstrdup.

19 files changed:
gdb/ChangeLog
gdb/aix-thread.c
gdb/arm-tdep.c
gdb/cli/cli-setshow.c
gdb/gdbarch.c
gdb/gdbarch.sh
gdb/infrun.c
gdb/language.c
gdb/linespec.c
gdb/python/python-frame.c
gdb/python/python-type.c
gdb/python/python-value.c
gdb/remote.c
gdb/typeprint.c
gdb/ui-file.c
gdb/ui-file.h
gdb/utils.c
gdb/varobj.c
gdb/xtensa-tdep.c

index ee829d1c155c927acebdb973ef63bf97a5be932a..2a42ffeb1806374ba09ef9fe391defbdfcdcec23 100644 (file)
@@ -1,3 +1,32 @@
+2009-08-14  Pedro Alves  <pedro@codesourcery.com>
+
+       * ui-file.h (ui_file_xstrdup): Mention that the length argument
+       may be NULL.
+       * ui-file.c (ui_file_xstrdup): Don't dereference LENGTH if it is
+       NULL.
+       * aix-thread.c (aix_thread_extra_thread_info): Pass NULL as length
+       parameter to ui_file_xstrdup.
+       * arm-tdep.c (_initialize_arm_tdep): Ditto.
+       * infrun.c (print_target_wait_results): Ditto.
+       * language.c (add_language): Ditto.
+       * linespec.c (cplusplus_error): Ditto.
+       * remote.c (escape_buffer): Ditto.
+       * typeprint.c (type_to_string): Ditto.
+       * utils.c (error_stream): Ditto.
+       * varobj.c (value_get_print_value): Ditto.
+       * xtensa-tdep.c (xtensa_verify_config): Replace `dummy' local with
+       `length' local.  Pass it to ui_file_xstrdup, and avoid an strlen
+       call.
+       * gdbarch.sh (verify_gdbarch): Ditto.
+       * gdbarch.c: Regenerate.
+       * cli/cli-setshow.c (do_setshow_command): Pass NULL as length
+       parameter to ui_file_xstrdup.
+       * python/python-frame.c (frapy_str): Ditto.
+       * python/python-type.c (typy_str): Use the length local instead of
+       calling strlen.
+       * python/python-value.c (valpy_str): Pass NULL as length parameter
+       to ui_file_xstrdup.
+
 2009-08-13  Doug Evans  <dje@google.com>
 
        * utils.c (gnu_debuglink_crc32): Store crc32_table as unsigned int
index 92e434c6b5e4fcfa13a124eba7f3f4390ce50e49..f1b34d58683e4ab77779e18be5e2bf1027cabbe9 100644 (file)
@@ -1734,7 +1734,6 @@ aix_thread_extra_thread_info (struct thread_info *thread)
   pthdb_suspendstate_t suspendstate;
   pthdb_detachstate_t detachstate;
   int cancelpend;
-  long length;
   static char *ret = NULL;
 
   if (!PD_TID (thread->ptid))
@@ -1775,7 +1774,7 @@ aix_thread_extra_thread_info (struct thread_info *thread)
 
   xfree (ret);                 /* Free old buffer.  */
 
-  ret = ui_file_xstrdup (buf, &length);
+  ret = ui_file_xstrdup (buf, NULL);
   ui_file_delete (buf);
 
   return ret;
index 30b1df696b2a28383d0167132a9b9851719c8d8a..a2523f5ff349a5faee45a12d2093396f58a4bee8 100644 (file)
@@ -6081,7 +6081,7 @@ _initialize_arm_tdep (void)
                      _("The valid values are:\n"),
                      regdesc,
                      _("The default is \"std\"."));
-  helptext = ui_file_xstrdup (stb, &length);
+  helptext = ui_file_xstrdup (stb, NULL);
   ui_file_delete (stb);
 
   add_setshow_enum_cmd("disassembler", no_class,
index 851f042b6c38e95700b42838172b37f030bf52d9..ab422a425d89cefcaa6d884bc15d59d5562fcc18 100644 (file)
@@ -383,8 +383,7 @@ do_setshow_command (char *arg, int from_tty, struct cmd_list_element *c)
        ui_out_field_stream (uiout, "value", stb);
       else
        {
-         long length;
-         char *value = ui_file_xstrdup (stb->stream, &length);
+         char *value = ui_file_xstrdup (stb->stream, NULL);
          make_cleanup (xfree, value);
          if (c->show_value_func != NULL)
            c->show_value_func (gdb_stdout, from_tty, c, value);
index db71a5c79e902d0b10d5d10b22cb2f180e6dd3b6..a20df000f3d1a29ab467b67268f121cc70a2715e 100644 (file)
@@ -507,7 +507,7 @@ verify_gdbarch (struct gdbarch *gdbarch)
 {
   struct ui_file *log;
   struct cleanup *cleanups;
-  long dummy;
+  long length;
   char *buf;
   log = mem_fileopen ();
   cleanups = make_cleanup_ui_file_delete (log);
@@ -639,9 +639,9 @@ verify_gdbarch (struct gdbarch *gdbarch)
   /* Skip verify of record_special_symbol, has predicate */
   /* Skip verify of has_global_solist, invalid_p == 0 */
   /* Skip verify of has_global_breakpoints, invalid_p == 0 */
-  buf = ui_file_xstrdup (log, &dummy);
+  buf = ui_file_xstrdup (log, &length);
   make_cleanup (xfree, buf);
-  if (strlen (buf) > 0)
+  if (length > 0)
     internal_error (__FILE__, __LINE__,
                     _("verify_gdbarch: the following are invalid ...%s"),
                     buf);
index 51b8004314c7d2f39922363f564742a5cbd09748..491efcec15ee59fdf7f41024c7aaf2c8930856c3 100755 (executable)
@@ -1417,7 +1417,7 @@ verify_gdbarch (struct gdbarch *gdbarch)
 {
   struct ui_file *log;
   struct cleanup *cleanups;
-  long dummy;
+  long length;
   char *buf;
   log = mem_fileopen ();
   cleanups = make_cleanup_ui_file_delete (log);
@@ -1463,9 +1463,9 @@ do
     fi
 done
 cat <<EOF
-  buf = ui_file_xstrdup (log, &dummy);
+  buf = ui_file_xstrdup (log, &length);
   make_cleanup (xfree, buf);
-  if (strlen (buf) > 0)
+  if (length > 0)
     internal_error (__FILE__, __LINE__,
                     _("verify_gdbarch: the following are invalid ...%s"),
                     buf);
index 0bc9fb3553d3c14bc3c27e441cc3edcf0c61d41d..e3eddce7b8941f0bcc4cfdde5d32eb53bb1042e7 100644 (file)
@@ -1943,7 +1943,6 @@ print_target_wait_results (ptid_t waiton_ptid, ptid_t result_ptid,
   char *status_string = target_waitstatus_to_string (ws);
   struct ui_file *tmp_stream = mem_fileopen ();
   char *text;
-  long len;
 
   /* The text is split over several lines because it was getting too long.
      Call fprintf_unfiltered (gdb_stdlog) once so that the text is still
@@ -1963,7 +1962,7 @@ print_target_wait_results (ptid_t waiton_ptid, ptid_t result_ptid,
                      "infrun:   %s\n",
                      status_string);
 
-  text = ui_file_xstrdup (tmp_stream, &len);
+  text = ui_file_xstrdup (tmp_stream, NULL);
 
   /* This uses %s in part to handle %'s in the text, but also to avoid
      a gcc error: the format attribute requires a string literal.  */
index c1c0bcf817d1fd9600910749a54c25b258f6961b..d975f2353ba52145f4f995bce2e8694745c79144 100644 (file)
@@ -888,7 +888,6 @@ add_language (const struct language_defn *lang)
 
   int i;
   struct ui_file *tmp_stream;
-  long len;
 
   if (lang->la_magic != LANG_MAGIC)
     {
@@ -945,7 +944,7 @@ local or auto    Automatic setting based on source file\n"));
     }
 
   xfree (language_set_doc);
-  language_set_doc = ui_file_xstrdup (tmp_stream, &len);
+  language_set_doc = ui_file_xstrdup (tmp_stream, NULL);
   ui_file_delete (tmp_stream);
 
   add_setshow_enum_cmd ("language", class_support,
index debe86f52b401df308093f9eab2116ab5414ec81..3e943a18e74c088a22b9e870cb3ffac544032d68 100644 (file)
@@ -150,7 +150,6 @@ static NORETURN void
 cplusplus_error (const char *name, const char *fmt, ...)
 {
   struct ui_file *tmp_stream;
-  long len;
   char *message;
   tmp_stream = mem_fileopen ();
   make_cleanup_ui_file_delete (tmp_stream);
@@ -169,9 +168,9 @@ cplusplus_error (const char *name, const char *fmt, ...)
                       "(Note leading single quote.)"),
                      name, name);
 
-  message = ui_file_xstrdup (tmp_stream, &len);                                   
-  make_cleanup (xfree, message);                                              
-  throw_error (NOT_FOUND_ERROR, "%s", message);  
+  message = ui_file_xstrdup (tmp_stream, NULL);
+  make_cleanup (xfree, message);
+  throw_error (NOT_FOUND_ERROR, "%s", message);
 }
 
 /* Return the number of methods described for TYPE, including the
index a97009f8f8428301e952129bb266041a1c31a6f6..279415c6eebbd426318f568814970635660f84e2 100644 (file)
@@ -80,13 +80,12 @@ static PyObject *
 frapy_str (PyObject *self)
 {
   char *s;
-  long len;
   PyObject *result;
   struct ui_file *strfile;
 
   strfile = mem_fileopen ();
   fprint_frame_id (strfile, ((frame_object *) self)->frame_id);
-  s = ui_file_xstrdup (strfile, &len);
+  s = ui_file_xstrdup (strfile, NULL);
   result = PyString_FromString (s);
   xfree (s);
 
index e1851121b3bc92b98ff26d4d9d21a37907ed9b2f..f23248c607bc464b2c69f8345ed55145274545bf 100644 (file)
@@ -494,13 +494,13 @@ typy_str (PyObject *self)
 {
   volatile struct gdb_exception except;
   char *thetype = NULL;
+  long length = 0;
   PyObject *result;
 
   TRY_CATCH (except, RETURN_MASK_ALL)
     {
       struct cleanup *old_chain;
       struct ui_file *stb;
-      long length;
 
       stb = mem_fileopen ();
       old_chain = make_cleanup_ui_file_delete (stb);
@@ -516,7 +516,7 @@ typy_str (PyObject *self)
       GDB_PY_HANDLE_EXCEPTION (except);
     }
 
-  result = PyUnicode_Decode (thetype, strlen (thetype), host_charset (), NULL);
+  result = PyUnicode_Decode (thetype, length, host_charset (), NULL);
   xfree (thetype);
 
   return result;
index c73c916f058357d40454ed1e3532499054eb61c1..c4217d571d6ea8273353c3c907aceb11f339f837 100644 (file)
@@ -348,7 +348,6 @@ static PyObject *
 valpy_str (PyObject *self)
 {
   char *s = NULL;
-  long dummy;
   struct ui_file *stb;
   struct cleanup *old_chain;
   PyObject *result;
@@ -365,7 +364,7 @@ valpy_str (PyObject *self)
     {
       common_val_print (((value_object *) self)->value, stb, 0,
                        &opts, python_language);
-      s = ui_file_xstrdup (stb, &dummy);
+      s = ui_file_xstrdup (stb, NULL);
     }
   GDB_PY_HANDLE_EXCEPTION (except);
 
index 69d1c5ffec936fa42a365de033b8aac30747b1d9..4c58abb4d2e25be7faa8d2bf8a0bd705b8418809 100644 (file)
@@ -5947,13 +5947,12 @@ escape_buffer (const char *buf, int n)
   struct cleanup *old_chain;
   struct ui_file *stb;
   char *str;
-  long length;
 
   stb = mem_fileopen ();
   old_chain = make_cleanup_ui_file_delete (stb);
 
   fputstrn_unfiltered (buf, n, 0, stb);
-  str = ui_file_xstrdup (stb, &length);
+  str = ui_file_xstrdup (stb, NULL);
   do_cleanups (old_chain);
   return str;
 }
index 8133ad03be68718f981517651084aa5b6ef6bed4..f090231f3684595bbe3f138f2d8a7d28884caf73 100644 (file)
@@ -86,7 +86,6 @@ char *
 type_to_string (struct type *type)
 {
   char *s = NULL;
-  long dummy;
   struct ui_file *stb;
   struct cleanup *old_chain;
   volatile struct gdb_exception except;
@@ -97,7 +96,7 @@ type_to_string (struct type *type)
   TRY_CATCH (except, RETURN_MASK_ALL)
     {
       type_print (type, "", stb, -1);
-      s = ui_file_xstrdup (stb, &dummy);
+      s = ui_file_xstrdup (stb, NULL);
     }
   if (except.reason < 0)
     s = NULL;
index 02a031410caaaf0cdc39018e5bc19dad8d4a31af..527917c414fe8872c8180af623e4dca1afa82b65 100644 (file)
@@ -285,8 +285,7 @@ do_ui_file_xstrdup (void *context, const char *buffer, long length)
 }
 
 char *
-ui_file_xstrdup (struct ui_file *file,
-                 long *length)
+ui_file_xstrdup (struct ui_file *file, long *length)
 {
   struct accumulated_ui_file acc;
   acc.buffer = NULL;
@@ -294,7 +293,8 @@ ui_file_xstrdup (struct ui_file *file,
   ui_file_put (file, do_ui_file_xstrdup, &acc);
   if (acc.buffer == NULL)
     acc.buffer = xstrdup ("");
-  *length = acc.length;
+  if (length != NULL)
+    *length = acc.length;
   return acc.buffer;
 }
 \f
index 1562d5a75dbbace83e9013a7b137afd6ee1cddf8..bf9915c01ad633db28a03b4d3c844e77d57b385d 100644 (file)
@@ -73,8 +73,8 @@ extern void ui_file_put (struct ui_file *src, ui_file_put_method_ftype *write, v
 
 /* Returns a freshly allocated buffer containing the entire contents
    of FILE (as determined by ui_file_put()) with a NUL character
-   appended.  LENGTH is set to the size of the buffer minus that
-   appended NUL. */
+   appended.  LENGTH, if not NULL, is set to the size of the buffer
+   minus that appended NUL. */
 extern char *ui_file_xstrdup (struct ui_file *file, long *length);
 
 
index 59d6ff60401c1c8df1531bfdd6be7f4cc8aac445..5fa2f26216e9bede31b6180f66472bf64d81a96e 100644 (file)
@@ -838,8 +838,7 @@ fatal (const char *string, ...)
 NORETURN void
 error_stream (struct ui_file *stream)
 {
-  long len;
-  char *message = ui_file_xstrdup (stream, &len);
+  char *message = ui_file_xstrdup (stream, NULL);
   make_cleanup (xfree, message);
   error (("%s"), message);
 }
index 48d4cfb7fed9b6950caf5514d4f256105a10127c..fbe8ff8e76ce1ef4304c117cfbc3aa85276dac28 100644 (file)
@@ -2175,7 +2175,6 @@ static char *
 value_get_print_value (struct value *value, enum varobj_display_formats format,
                       struct varobj *var)
 {
-  long dummy;
   struct ui_file *stb;
   struct cleanup *old_chain;
   gdb_byte *thevalue = NULL;
@@ -2247,7 +2246,7 @@ value_get_print_value (struct value *value, enum varobj_display_formats format,
     }
   else
     common_val_print (value, stb, 0, &opts, current_language);
-  thevalue = ui_file_xstrdup (stb, &dummy);
+  thevalue = ui_file_xstrdup (stb, NULL);
 
   do_cleanups (old_chain);
   return thevalue;
index 966a739ea4d7112342df7feb68a2082e6194cd1f..07454978fe8342de1642a64bca3b805b4edfa0c8 100644 (file)
@@ -2498,7 +2498,7 @@ xtensa_verify_config (struct gdbarch *gdbarch)
   struct ui_file *log;
   struct cleanup *cleanups;
   struct gdbarch_tdep *tdep;
-  long dummy;
+  long length;
   char *buf;
 
   tdep = gdbarch_tdep (gdbarch);
@@ -2531,9 +2531,9 @@ xtensa_verify_config (struct gdbarch *gdbarch)
   if (tdep->a0_base == -1)
     fprintf_unfiltered (log, _("\n\ta0_base: No Ax registers"));
 
-  buf = ui_file_xstrdup (log, &dummy);
+  buf = ui_file_xstrdup (log, &length);
   make_cleanup (xfree, buf);
-  if (strlen (buf) > 0)
+  if (length > 0)
     internal_error (__FILE__, __LINE__,
                    _("the following are invalid: %s"), buf);
   do_cleanups (cleanups);