* buildsym.c (start_subfile, patch_subfile_names), demangle.c
authorJim Kingdon <jkingdon@engr.sgi.com>
Sat, 26 Mar 1994 04:26:26 +0000 (04:26 +0000)
committerJim Kingdon <jkingdon@engr.sgi.com>
Sat, 26 Mar 1994 04:26:26 +0000 (04:26 +0000)
(set_demangling_style, set_demangling_command): Use savestring not
strdup.  We were not dealing properly with a NULL return from
strdup, and were not declaring strdup (the system header may or
may not have it).

gdb/buildsym.c
gdb/demangle.c

index 0fe22d1afac177536e8bca3679bfc719b7567607..e4dcbddc568707d6fe3defd55ab3ce7b8f531775 100644 (file)
@@ -405,8 +405,9 @@ start_subfile (name, dirname)
   current_subfile = subfile;
 
   /* Save its name and compilation directory name */
-  subfile->name = (name == NULL)? NULL : strdup (name);
-  subfile->dirname = (dirname == NULL) ? NULL : strdup (dirname);
+  subfile->name = (name == NULL) ? NULL : savestring (name, strlen (name));
+  subfile->dirname =
+    (dirname == NULL) ? NULL : savestring (dirname, strlen (dirname));
   
   /* Initialize line-number recording for this subfile.  */
   subfile->line_vector = NULL;
@@ -479,7 +480,7 @@ patch_subfile_names (subfile, name)
       && subfile->name[strlen(subfile->name)-1] == '/')
     {
       subfile->dirname = subfile->name;
-      subfile->name = strdup (name);
+      subfile->name = savestring (name, strlen (name));
 
       /* Default the source language to whatever can be deduced from
         the filename.  If nothing can be deduced (such as for a C/C++
index 5bcf4374bf43699d0602cc8a049f8534c073dff4..eecd3d3ed4297c5cb915771959450d09a55d5656 100644 (file)
@@ -129,7 +129,8 @@ set_demangling_command (ignore, from_tty, c)
            {
              free (current_demangling_style_string);
              current_demangling_style_string =
-               strdup (dem -> demangling_style_name);
+               savestring (dem -> demangling_style_name,
+                           strlen (dem -> demangling_style_name));
            }
        }
       if (current_demangling_style == unknown_demangling)
@@ -139,7 +140,8 @@ set_demangling_command (ignore, from_tty, c)
             one as the default. */
          current_demangling_style = demanglers[0].demangling_style;
          current_demangling_style_string =
-           strdup (demanglers[0].demangling_style_name);
+           savestring (demanglers[0].demangling_style_name,
+                       strlen (demanglers[0].demangling_style_name));
          warning ("`%s' style demangling chosen as the default.\n",
                   current_demangling_style_string);
        }
@@ -156,7 +158,7 @@ set_demangling_style (style)
     {
       free (current_demangling_style_string);
     }
-  current_demangling_style_string = strdup (style);
+  current_demangling_style_string = savestring (style, strlen (style));
   set_demangling_command ((char *) NULL, 0);
 }