aboutsummaryrefslogtreecommitdiff
path: root/gdb
diff options
context:
space:
mode:
authorMichael Snyder <msnyder@vmware.com>2007-08-17 23:12:47 +0000
committerMichael Snyder <msnyder@vmware.com>2007-08-17 23:12:47 +0000
commit0bd9908d01330dd5369b35e62ea8d8d7ada01e03 (patch)
tree5bfdf62de40d0e205804b2b8c0d426c9106a3c74 /gdb
parent7e976ae46d73ba3b38c95fba78385837295b0440 (diff)
downloadbinutils-0bd9908d01330dd5369b35e62ea8d8d7ada01e03.zip
binutils-0bd9908d01330dd5369b35e62ea8d8d7ada01e03.tar.gz
binutils-0bd9908d01330dd5369b35e62ea8d8d7ada01e03.tar.bz2
2007-08-17 Michael Snyder <msnyder@access-company.com>
* gdbtypes.h (virtual_base_list): Remove export decl. * gdbtypes.c (virtual_base_list): Make static. Not called outside. (virtual_base_index): Memory leak. (virtual_base_index_skip_primaries): Ditto.
Diffstat (limited to 'gdb')
-rw-r--r--gdb/ChangeLog7
-rw-r--r--gdb/gdbtypes.c35
-rw-r--r--gdb/gdbtypes.h2
3 files changed, 22 insertions, 22 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index db01032..908a3c8 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,10 @@
+2007-08-17 Michael Snyder <msnyder@access-company.com>
+
+ * gdbtypes.h (virtual_base_list): Remove export decl.
+ * gdbtypes.c (virtual_base_list): Make static. Not called outside.
+ (virtual_base_index): Memory leak.
+ (virtual_base_index_skip_primaries): Ditto.
+
2007-08-17 Maxim Grigoriev <maxim2405@gmail.com>
* xtensa-tdep.c (ARG_NOF, ARG_1ST, PS_WOE, PS_EXC, C0_MAXOPDS)
diff --git a/gdb/gdbtypes.c b/gdb/gdbtypes.c
index 672be70..64964e9 100644
--- a/gdb/gdbtypes.c
+++ b/gdb/gdbtypes.c
@@ -2024,7 +2024,7 @@ virtual_base_list_aux (struct type *dclass)
This routine merely hands off the argument to virtual_base_list_aux()
and then copies the result into an array to save space. */
-struct type **
+static struct type **
virtual_base_list (struct type *dclass)
{
struct vbase *tmp_vbase;
@@ -2112,7 +2112,6 @@ virtual_base_list_length_skip_primaries (struct type *dclass)
return i;
}
-
/* Return the index (position) of type BASE, which is a virtual base
class of DCLASS, in the latter's virtual base list. A return of -1
indicates "not found" or a problem. */
@@ -2120,27 +2119,24 @@ virtual_base_list_length_skip_primaries (struct type *dclass)
int
virtual_base_index (struct type *base, struct type *dclass)
{
- struct type *vbase;
+ struct type *vbase, **vbase_list;
int i;
if ((TYPE_CODE (dclass) != TYPE_CODE_CLASS)
|| (TYPE_CODE (base) != TYPE_CODE_CLASS))
return -1;
- i = 0;
- vbase = virtual_base_list (dclass)[0];
- while (vbase)
- {
- if (vbase == base)
- break;
- vbase = virtual_base_list (dclass)[++i];
- }
+ vbase_list = virtual_base_list (dclass);
+ for (i = 0, vbase = vbase_list[0];
+ vbase != NULL;
+ vbase = vbase_list[++i])
+ if (vbase == base)
+ break;
+ xfree (vbase_list);
return vbase ? i : -1;
}
-
-
/* Return the index (position) of type BASE, which is a virtual base
class of DCLASS, in the latter's virtual base list. Skip over all
bases that may appear in the virtual base list of the primary base
@@ -2151,7 +2147,7 @@ int
virtual_base_index_skip_primaries (struct type *base,
struct type *dclass)
{
- struct type *vbase;
+ struct type *vbase, **vbase_list;
int i, j;
struct type *primary;
@@ -2161,19 +2157,18 @@ virtual_base_index_skip_primaries (struct type *base,
primary = TYPE_RUNTIME_PTR (dclass) ? TYPE_PRIMARY_BASE (dclass) : NULL;
- j = -1;
- i = 0;
- vbase = virtual_base_list (dclass)[0];
- while (vbase)
+ vbase_list = virtual_base_list (dclass);
+ for (i = 0, j = -1, vbase = vbase_list[0];
+ vbase != NULL;
+ vbase = vbase_list[++i])
{
if (!primary
|| (virtual_base_index_skip_primaries (vbase, primary) < 0))
j++;
if (vbase == base)
break;
- vbase = virtual_base_list (dclass)[++i];
}
-
+ xfree (vbase_list);
return vbase ? j : -1;
}
diff --git a/gdb/gdbtypes.h b/gdb/gdbtypes.h
index 8d60894..c397c32 100644
--- a/gdb/gdbtypes.h
+++ b/gdb/gdbtypes.h
@@ -1346,8 +1346,6 @@ extern int has_vtable (struct type *);
extern struct type *primary_base_class (struct type *);
-extern struct type **virtual_base_list (struct type *);
-
extern int virtual_base_list_length (struct type *);
extern int virtual_base_list_length_skip_primaries (struct type *);