/* Scheme interface to breakpoints.
- Copyright (C) 2008-2017 Free Software Foundation, Inc.
+ Copyright (C) 2008-2019 Free Software Foundation, Inc.
This file is part of GDB.
#include "breakpoint.h"
#include "gdbcmd.h"
#include "gdbthread.h"
-#include "observer.h"
+#include "observable.h"
#include "cli/cli-script.h"
#include "ada-lang.h"
#include "arch-utils.h"
{
breakpoint_smob *bp_smob
= bpscm_get_valid_breakpoint_smob_arg_unsafe (self, SCM_ARG1, FUNC_NAME);
- char *exp;
- struct gdb_exception except = exception_none;
SCM_ASSERT_TYPE (scm_is_string (newvalue) || gdbscm_is_false (newvalue),
newvalue, SCM_ARG2, FUNC_NAME,
_("string or #f"));
- if (gdbscm_is_false (newvalue))
- exp = NULL;
- else
- exp = gdbscm_scm_to_c_string (newvalue);
-
- TRY
- {
- set_breakpoint_condition (bp_smob->bp, exp ? exp : "", 0);
- }
- CATCH (ex, RETURN_MASK_ALL)
+ return gdbscm_wrap ([=]
{
- except = ex;
- }
- END_CATCH
+ gdb::unique_xmalloc_ptr<char> exp
+ = (gdbscm_is_false (newvalue)
+ ? nullptr
+ : gdbscm_scm_to_c_string (newvalue));
- xfree (exp);
- GDBSCM_HANDLE_GDB_EXCEPTION (except);
+ set_breakpoint_condition (bp_smob->bp, exp ? exp.get () : "", 0);
- return SCM_UNSPECIFIED;
+ return SCM_UNSPECIFIED;
+ });
}
/* (breakpoint-stop <gdb:breakpoint>) -> procedure or #f */
scm_set_smob_free (breakpoint_smob_tag, bpscm_free_breakpoint_smob);
scm_set_smob_print (breakpoint_smob_tag, bpscm_print_breakpoint_smob);
- observer_attach_breakpoint_created (bpscm_breakpoint_created);
- observer_attach_breakpoint_deleted (bpscm_breakpoint_deleted);
+ gdb::observers::breakpoint_created.attach (bpscm_breakpoint_created);
+ gdb::observers::breakpoint_deleted.attach (bpscm_breakpoint_deleted);
gdbscm_define_integer_constants (breakpoint_integer_constants, 1);
gdbscm_define_functions (breakpoint_functions, 1);