[Ada] Fix cleanup leak in ada-lang.c:old_renaming_is_invisible

gdb/ChangeLog:

	* ada-lang.c (old_renaming_is_invisible): Fix cleanup leak.
This commit is contained in:
Joel Brobecker 2013-05-21 05:41:31 +00:00
parent c5867ab65c
commit 1509e5737f
2 changed files with 16 additions and 4 deletions

View File

@ -1,3 +1,7 @@
2013-05-21 Joel Brobecker <brobecker@adacore.com>
* ada-lang.c (old_renaming_is_invisible): Fix cleanup leak.
2013-05-21 Hui Zhu <hui@codesourcery.com>
* breakpoint.c (dprintf_breakpoint_ops): Remove its static.

View File

@ -4726,17 +4726,20 @@ static int
old_renaming_is_invisible (const struct symbol *sym, const char *function_name)
{
char *scope;
struct cleanup *old_chain;
if (SYMBOL_CLASS (sym) != LOC_TYPEDEF)
return 0;
scope = xget_renaming_scope (SYMBOL_TYPE (sym));
make_cleanup (xfree, scope);
old_chain = make_cleanup (xfree, scope);
/* If the rename has been defined in a package, then it is visible. */
if (is_package_name (scope))
return 0;
{
do_cleanups (old_chain);
return 0;
}
/* Check that the rename is in the current function scope by checking
that its name starts with SCOPE. */
@ -4748,7 +4751,12 @@ old_renaming_is_invisible (const struct symbol *sym, const char *function_name)
if (strncmp (function_name, "_ada_", 5) == 0)
function_name += 5;
return (strncmp (function_name, scope, strlen (scope)) != 0);
{
int is_invisible = strncmp (function_name, scope, strlen (scope)) != 0;
do_cleanups (old_chain);
return is_invisible;
}
}
/* Remove entries from SYMS that corresponds to a renaming entity that