projects
/
deliverable
/
binutils-gdb.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
AArch64: Implement choice between Cortex-A53 erratum workarounds. (PR ld/24373)
[deliverable/binutils-gdb.git]
/
gdb
/
event-top.c
diff --git
a/gdb/event-top.c
b/gdb/event-top.c
index bb8ba5cfe5779747f59d95db40280c4faba3a4b1..3ccf136ff12d3478bd18c81aa3eb043b3f164cee 100644
(file)
--- a/
gdb/event-top.c
+++ b/
gdb/event-top.c
@@
-193,7
+193,7
@@
gdb_rl_callback_read_char_wrapper (gdb_client_data client_data)
/* Rethrow using the normal EH mechanism. */
if (gdb_expt.reason < 0)
/* Rethrow using the normal EH mechanism. */
if (gdb_expt.reason < 0)
- throw_exception (
gdb_expt
);
+ throw_exception (
std::move (gdb_expt)
);
}
/* GDB's readline callback handler. Calls the current INPUT_HANDLER,
}
/* GDB's readline callback handler. Calls the current INPUT_HANDLER,
@@
-205,11
+205,15
@@
gdb_rl_callback_read_char_wrapper (gdb_client_data client_data)
static void
gdb_rl_callback_handler (char *rl) noexcept
{
static void
gdb_rl_callback_handler (char *rl) noexcept
{
- struct gdb_exception gdb_rl_expt;
+ /* This is static to avoid undefined behavior when calling longjmp
+ -- gdb_exception has a destructor with side effects. */
+ static struct gdb_exception gdb_rl_expt;
struct ui *ui = current_ui;
try
{
struct ui *ui = current_ui;
try
{
+ /* Ensure the exception is reset on each call. */
+ gdb_rl_expt = {};
ui->input_handler (gdb::unique_xmalloc_ptr<char> (rl));
}
catch (gdb_exception &ex)
ui->input_handler (gdb::unique_xmalloc_ptr<char> (rl));
}
catch (gdb_exception &ex)
This page took
0.025185 seconds
and
4
git commands to generate.