mirror of
https://github.com/bminor/binutils-gdb.git
synced 2025-12-26 09:08:59 +00:00
fix two buglets in breakpoint.c
First, output_thread_groups leaks a cleanup along one return path. Second, parse_cmd_to_aexpr could return without running its cleanups, if there was an exception in a TRY_CATCH. * breakpoint.c (output_thread_groups, parse_cmd_to_aexpr): Call do_cleanups earlier.
This commit is contained in:
@@ -1,3 +1,8 @@
|
||||
2013-05-30 Tom Tromey <tromey@redhat.com>
|
||||
|
||||
* breakpoint.c (output_thread_groups, parse_cmd_to_aexpr): Call
|
||||
do_cleanups earlier.
|
||||
|
||||
2013-05-30 Tom Tromey <tromey@redhat.com>
|
||||
|
||||
* machoread.c (macho_symfile_read): Assign first cleanup to
|
||||
|
||||
@@ -2248,6 +2248,8 @@ parse_cmd_to_aexpr (CORE_ADDR scope, char *cmd)
|
||||
fpieces, nargs, argvec);
|
||||
}
|
||||
|
||||
do_cleanups (old_cleanups);
|
||||
|
||||
if (ex.reason < 0)
|
||||
{
|
||||
/* If we got here, it means the command could not be parsed to a valid
|
||||
@@ -2256,8 +2258,6 @@ parse_cmd_to_aexpr (CORE_ADDR scope, char *cmd)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
do_cleanups (old_cleanups);
|
||||
|
||||
/* We have a valid agent expression, return it. */
|
||||
return aexpr;
|
||||
}
|
||||
@@ -5814,8 +5814,7 @@ output_thread_groups (struct ui_out *uiout,
|
||||
VEC(int) *inf_num,
|
||||
int mi_only)
|
||||
{
|
||||
struct cleanup *back_to = make_cleanup_ui_out_list_begin_end (uiout,
|
||||
field_name);
|
||||
struct cleanup *back_to;
|
||||
int is_mi = ui_out_is_mi_like_p (uiout);
|
||||
int inf;
|
||||
int i;
|
||||
@@ -5825,6 +5824,8 @@ output_thread_groups (struct ui_out *uiout,
|
||||
if (!is_mi && mi_only)
|
||||
return;
|
||||
|
||||
back_to = make_cleanup_ui_out_list_begin_end (uiout, field_name);
|
||||
|
||||
for (i = 0; VEC_iterate (int, inf_num, i, inf); ++i)
|
||||
{
|
||||
if (is_mi)
|
||||
|
||||
Reference in New Issue
Block a user