* prdbg.c (pr_function_type): Close memory leaks.
(pr_method_type): Likewise. (tg_class_static_member): Likewise. (tg_class_method_variant): Likewise. (tg_class_static_method_variant): Likewise.
This commit is contained in:
parent
cd37dafcf4
commit
09192bc76c
@ -7,6 +7,11 @@
|
||||
* ieee.c (ieee_add_bb11): Plug memory leak.
|
||||
(ieee_function_type): Likewise.
|
||||
(ieee_class_baseclass): Likewise.
|
||||
* prdbg.c (pr_function_type): Close memory leaks.
|
||||
(pr_method_type): Likewise.
|
||||
(tg_class_static_member): Likewise.
|
||||
(tg_class_method_variant): Likewise.
|
||||
(tg_class_static_method_variant): Likewise.
|
||||
|
||||
2011-03-25 Pierre Muller <muller@ics.u-strasbg.fr>
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* prdbg.c -- Print out generic debugging information.
|
||||
Copyright 1995, 1996, 1999, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
|
||||
2009 Free Software Foundation, Inc.
|
||||
2009, 2011 Free Software Foundation, Inc.
|
||||
Written by Ian Lance Taylor <ian@cygnus.com>.
|
||||
Tags style generation written by Salvador E. Tropea <set@computer.org>.
|
||||
|
||||
@ -731,10 +731,16 @@ pr_function_type (void *p, int argcount, bfd_boolean varargs)
|
||||
for (i = argcount - 1; i >= 0; i--)
|
||||
{
|
||||
if (! substitute_type (info, ""))
|
||||
return FALSE;
|
||||
{
|
||||
free (arg_types);
|
||||
return FALSE;
|
||||
}
|
||||
arg_types[i] = pop_type (info);
|
||||
if (arg_types[i] == NULL)
|
||||
return FALSE;
|
||||
{
|
||||
free (arg_types);
|
||||
return FALSE;
|
||||
}
|
||||
len += strlen (arg_types[i]) + 2;
|
||||
}
|
||||
if (varargs)
|
||||
@ -952,10 +958,16 @@ pr_method_type (void *p, bfd_boolean domain, int argcount, bfd_boolean varargs)
|
||||
for (i = argcount - 1; i >= 0; i--)
|
||||
{
|
||||
if (! substitute_type (info, ""))
|
||||
return FALSE;
|
||||
{
|
||||
free (arg_types);
|
||||
return FALSE;
|
||||
}
|
||||
arg_types[i] = pop_type (info);
|
||||
if (arg_types[i] == NULL)
|
||||
return FALSE;
|
||||
{
|
||||
free (arg_types);
|
||||
return FALSE;
|
||||
}
|
||||
len += strlen (arg_types[i]) + 2;
|
||||
}
|
||||
if (varargs)
|
||||
@ -2175,17 +2187,30 @@ tg_class_static_member (void *p, const char *name,
|
||||
sprintf (full_name, "%s::%s", info->stack->next->type, name);
|
||||
|
||||
if (! substitute_type (info, full_name))
|
||||
return FALSE;
|
||||
{
|
||||
free (full_name);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (! prepend_type (info, "static "))
|
||||
return FALSE;
|
||||
{
|
||||
free (full_name);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
t = pop_type (info);
|
||||
if (t == NULL)
|
||||
return FALSE;
|
||||
{
|
||||
free (full_name);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (! tg_fix_visibility (info, visibility))
|
||||
return FALSE;
|
||||
{
|
||||
free (t);
|
||||
free (full_name);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
fprintf (info->f, "%s\t%s\t0;\"\tkind:x\ttype:%s\tclass:%s\taccess:%s\n",
|
||||
name, info->filename, t, info->stack->type,
|
||||
@ -2295,12 +2320,18 @@ tg_class_method_variant (void *p, const char *physname ATTRIBUTE_UNUSED,
|
||||
|
||||
/* Stick the name of the method into its type. */
|
||||
if (! substitute_type (info, method_name))
|
||||
return FALSE;
|
||||
{
|
||||
free (method_name);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* Get the type. */
|
||||
method_type = pop_type (info);
|
||||
if (method_type == NULL)
|
||||
return FALSE;
|
||||
{
|
||||
free (method_name);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* Pull off the context type if there is one. */
|
||||
if (! context)
|
||||
@ -2309,12 +2340,21 @@ tg_class_method_variant (void *p, const char *physname ATTRIBUTE_UNUSED,
|
||||
{
|
||||
context_type = pop_type (info);
|
||||
if (context_type == NULL)
|
||||
return FALSE;
|
||||
{
|
||||
free (method_type);
|
||||
free (method_name);
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
/* Now the top of the stack is the class. */
|
||||
if (! tg_fix_visibility (info, visibility))
|
||||
return FALSE;
|
||||
{
|
||||
free (method_type);
|
||||
free (method_name);
|
||||
free (context_type);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
fprintf (info->f, "%s\t%s\t0;\"\tkind:p\ttype:%s\tclass:%s\n",
|
||||
method_name, info->filename, method_type, info->stack->type);
|
||||
@ -2360,16 +2400,26 @@ tg_class_static_method_variant (void *p,
|
||||
method_name = strdup (info->stack->next->method);
|
||||
/* Stick the name of the method into its type. */
|
||||
if (! substitute_type (info, info->stack->next->method))
|
||||
return FALSE;
|
||||
{
|
||||
free (method_name);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* Get the type. */
|
||||
method_type = pop_type (info);
|
||||
if (method_type == NULL)
|
||||
return FALSE;
|
||||
{
|
||||
free (method_name);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* Now the top of the stack is the class. */
|
||||
if (! tg_fix_visibility (info, visibility))
|
||||
return FALSE;
|
||||
{
|
||||
free (method_type);
|
||||
free (method_name);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
fprintf (info->f, "%s\t%s\t0;\"\tkind:p\ttype:%s\tclass:%s\taccess:%s\n",
|
||||
method_name, info->filename, method_type, info->stack->type,
|
||||
|
Loading…
Reference in New Issue
Block a user