Fri Apr 10 15:48:10 1998 Jason Molenda (crash@bugshack.cygnus.com)
authorJason Molenda <jmolenda@apple.com>
Fri, 10 Apr 1998 22:49:13 +0000 (22:49 +0000)
committerJason Molenda <jmolenda@apple.com>
Fri, 10 Apr 1998 22:49:13 +0000 (22:49 +0000)
        * gdbtk.c (gdb_listfiles): Allocate space for 'files' dynamically.

Harumph, my change got lost in the foundry->devo merge.

gdb/ChangeLog-gdbtk
gdb/gdbtk.c

index ce53f5a9d87e499499571ead96a4a434e68945cb..fe226d011ae7bb138922f2c38b192c3f772ec546 100644 (file)
@@ -1,3 +1,7 @@
+Fri Apr 10 15:48:10 1998  Jason Molenda  (crash@bugshack.cygnus.com)
+
+        * gdbtk.c (gdb_listfiles): Allocate space for 'files' dynamically.
+
 Thu Apr  9 14:20:59 1998  Martin M. Hunt  <hunt@cygnus.com>
 
        * gdbtk.c (gdbtk_init): Remove redundant variable "IDE".
index d6e66a595e80fb3d3fbae7a7a957eeda6f09b67f..a0a5d4d10a8f90a04f0f32b67bc2b70f409f2982 100644 (file)
@@ -1278,10 +1278,14 @@ gdb_listfiles (clientData, interp, objc, objv)
   struct objfile *objfile;
   struct partial_symtab *psymtab;
   struct symtab *symtab;
-  char *lastfile, *pathname, *files[1000];
+  char *lastfile, *pathname, **files;
+  int files_size;
   int i, numfiles = 0, len = 0;
   Tcl_Obj *mylist;
   
+  files_size = 1000;
+  files = (char **) xmalloc (sizeof (char *) * files_size);
+
   if (objc > 2)
     {
       Tcl_WrongNumArgs (interp, 1, objv, "Usage: gdb_listfiles ?pathname?");
@@ -1294,6 +1298,11 @@ gdb_listfiles (clientData, interp, objc, objv)
 
   ALL_PSYMTABS (objfile, psymtab)
     {
+      if (numfiles == files_size)
+        {
+           files_size = files_size * 2;
+           files = (char **) xrealloc (files, sizeof (char *) * files_size);
+        }
       if (len == 0)
        {
          if (psymtab->filename)
@@ -1307,6 +1316,11 @@ gdb_listfiles (clientData, interp, objc, objv)
 
   ALL_SYMTABS (objfile, symtab)
     {
+      if (numfiles == files_size)
+        {
+           files_size = files_size * 2;
+           files = (char **) xrealloc (files, sizeof (char *) * files_size);
+        }
       if (len == 0)
        {
          if (symtab->filename)
@@ -1328,6 +1342,7 @@ gdb_listfiles (clientData, interp, objc, objv)
       lastfile = files[i];
     }
   Tcl_SetObjResult (interp, mylist);
+  free (files);
   return TCL_OK;
 }