Eliminate cleanup in gdbscm_execute_gdb_command
Note: the "may be modified" comment is no longer true nowadays. gdb/ChangeLog: 2018-07-18 Pedro Alves <palves@redhat.com> * guile/guile.c (gdbscm_execute_gdb_command): Adjust to use gdbscm_wrap. Use gdb::unique_xmalloc_ptr<char> instead of a cleanup.
This commit is contained in:
parent
557e56be26
commit
3a5f2a48ff
|
@ -1,3 +1,9 @@
|
|||
2018-07-18 Pedro Alves <palves@redhat.com>
|
||||
|
||||
* guile/guile.c (gdbscm_execute_gdb_command): Adjust to use
|
||||
gdbscm_wrap. Use gdb::unique_xmalloc_ptr<char> instead of a
|
||||
cleanup.
|
||||
|
||||
2018-07-18 Pedro Alves <palves@redhat.com>
|
||||
|
||||
* guile/guile-internal.h: Add comment about mixing GDB and Scheme
|
||||
|
|
|
@ -289,22 +289,17 @@ gdbscm_execute_gdb_command (SCM command_scm, SCM rest)
|
|||
int from_tty = 0, to_string = 0;
|
||||
const SCM keywords[] = { from_tty_keyword, to_string_keyword, SCM_BOOL_F };
|
||||
char *command;
|
||||
struct cleanup *cleanups;
|
||||
struct gdb_exception except = exception_none;
|
||||
|
||||
gdbscm_parse_function_args (FUNC_NAME, SCM_ARG1, keywords, "s#tt",
|
||||
command_scm, &command, rest,
|
||||
&from_tty_arg_pos, &from_tty,
|
||||
&to_string_arg_pos, &to_string);
|
||||
|
||||
/* Note: The contents of "command" may get modified while it is
|
||||
executed. */
|
||||
cleanups = make_cleanup (xfree, command);
|
||||
|
||||
std::string to_string_res;
|
||||
|
||||
TRY
|
||||
return gdbscm_wrap ([=]
|
||||
{
|
||||
gdb::unique_xmalloc_ptr<char> command_holder (command);
|
||||
std::string to_string_res;
|
||||
|
||||
scoped_restore restore_async = make_scoped_restore (¤t_ui->async,
|
||||
0);
|
||||
|
||||
|
@ -316,19 +311,11 @@ gdbscm_execute_gdb_command (SCM command_scm, SCM rest)
|
|||
|
||||
/* Do any commands attached to breakpoint we stopped at. */
|
||||
bpstat_do_actions ();
|
||||
}
|
||||
CATCH (ex, RETURN_MASK_ALL)
|
||||
{
|
||||
except = ex;
|
||||
}
|
||||
END_CATCH
|
||||
|
||||
do_cleanups (cleanups);
|
||||
GDBSCM_HANDLE_GDB_EXCEPTION (except);
|
||||
|
||||
if (to_string)
|
||||
return gdbscm_scm_from_c_string (to_string_res.c_str ());
|
||||
return SCM_UNSPECIFIED;
|
||||
if (to_string)
|
||||
return gdbscm_scm_from_c_string (to_string_res.c_str ());
|
||||
return SCM_UNSPECIFIED;
|
||||
});
|
||||
}
|
||||
|
||||
/* (data-directory) -> string */
|
||||
|
|
Loading…
Reference in New Issue