fix two latent type errors
authorTom Tromey <tromey@redhat.com>
Mon, 19 May 2014 19:10:21 +0000 (13:10 -0600)
committerTom Tromey <tromey@redhat.com>
Mon, 19 May 2014 20:17:16 +0000 (14:17 -0600)
I'm checking this in as obvious.

I was looking at instances of "alloc.*sizeof" and noticed a couple
where the types in question are incorrect.

In gdbtypes, the code allocates sizeof(int) to represent a struct rank.
In mi-cmds, the code uses "struct mi_cmd **" -- one "*" too many.

In both cases the problems are latent because in practice the sizes
are the same as the sizes of the correct types.  Still, it's better to
be correct.

I think gdb would be improved by a wholesale change from explicit
sizeofs to using the libiberty.h allocation macros.  In most cases
they are both shorter and have better type safety.  However, the
resulting patch is rather large.

Built and regtested on x86-64 Fedora 20.

2014-05-19  Tom Tromey  <tromey@redhat.com>

* gdbtypes.c (rank_function): Use XNEWVEC.
* mi/mi-cmds.c (build_table): Use XCNEWVEC.

gdb/ChangeLog
gdb/gdbtypes.c
gdb/mi/mi-cmds.c

index ee3d848b8d0dfbe3b197395ec24691c8e63723f9..c9bf846de12d0153c66eacb7d7d49c32160e90dd 100644 (file)
@@ -1,3 +1,8 @@
+2014-05-19  Tom Tromey  <tromey@redhat.com>
+
+       * gdbtypes.c (rank_function): Use XNEWVEC.
+       * mi/mi-cmds.c (build_table): Use XCNEWVEC.
+
 2014-05-19  Doug Evans  <dje@google.com>
 
        * dwarf2read.c (struct dwarf2_per_objfile): Delete unused members
index 8e6631af175c6f9423d1fd1fee1af43a213bba05..d58193e82f45fb3db8ab069ee89423e7e1c976b8 100644 (file)
@@ -2582,7 +2582,7 @@ rank_function (struct type **parms, int nparms,
 
   bv = xmalloc (sizeof (struct badness_vector));
   bv->length = nargs + 1;      /* add 1 for the length-match rank.  */
-  bv->rank = xmalloc ((nargs + 1) * sizeof (int));
+  bv->rank = XNEWVEC (struct rank, nargs + 1);
 
   /* First compare the lengths of the supplied lists.
      If there is a mismatch, set it to a high value.  */
index 87a536faf11775a1cbb6584ef781536024ab9d20..68f97f66d54b42e58e00cd5d7b7a50a58383a0eb 100644 (file)
@@ -247,10 +247,8 @@ build_table (struct mi_cmd *commands)
   int nr_rehash = 0;
   int nr_entries = 0;
   struct mi_cmd *command;
-  int sizeof_table = sizeof (struct mi_cmd **) * MI_TABLE_SIZE;
 
-  mi_table = xmalloc (sizeof_table);
-  memset (mi_table, 0, sizeof_table);
+  mi_table = XCNEWVEC (struct mi_cmd *, MI_TABLE_SIZE);
   for (command = commands; command->name != 0; command++)
     {
       struct mi_cmd **entry = lookup_table (command->name);