aboutsummaryrefslogtreecommitdiff
path: root/gdb/ada-tasks.c
diff options
context:
space:
mode:
authorTom de Vries <tdevries@suse.de>2024-10-26 08:40:07 +0200
committerTom de Vries <tdevries@suse.de>2024-10-26 08:40:07 +0200
commit5a43f7f040d45ca1bc0066019131cf71d7836cb8 (patch)
tree7472785973203b3aba4bf19690e107fd0adc6a30 /gdb/ada-tasks.c
parentb3ee98cda498bb256411c5bc23cf7fb9b17f10db (diff)
downloadgdb-5a43f7f040d45ca1bc0066019131cf71d7836cb8.zip
gdb-5a43f7f040d45ca1bc0066019131cf71d7836cb8.tar.gz
gdb-5a43f7f040d45ca1bc0066019131cf71d7836cb8.tar.bz2
[gdb] Don't create registry keys in destructor
Creating a registry key using emplace calls new: ... DATA *result = new DATA (std::forward<Args> (args)...); ... which can throw a bad alloc, which will terminate gdb if called from a destructor. Fix this in a few places. Tested on aarch64-linux. Approved-By: Tom Tromey <tom@tromey.com>
Diffstat (limited to 'gdb/ada-tasks.c')
-rw-r--r--gdb/ada-tasks.c7
1 files changed, 2 insertions, 5 deletions
diff --git a/gdb/ada-tasks.c b/gdb/ada-tasks.c
index d050b26..5f4eceb 100644
--- a/gdb/ada-tasks.c
+++ b/gdb/ada-tasks.c
@@ -1447,7 +1447,7 @@ ada_task_list_changed (struct inferior *inf)
static void
ada_tasks_invalidate_pspace_data (struct program_space *pspace)
{
- get_ada_tasks_pspace_data (pspace)->initialized_p = 0;
+ ada_tasks_pspace_data_handle.clear (pspace);
}
/* Invalidate the per-inferior data. */
@@ -1455,10 +1455,7 @@ ada_tasks_invalidate_pspace_data (struct program_space *pspace)
static void
ada_tasks_invalidate_inferior_data (struct inferior *inf)
{
- struct ada_tasks_inferior_data *data = get_ada_tasks_inferior_data (inf);
-
- data->known_tasks_kind = ADA_TASKS_UNKNOWN;
- data->task_list_valid_p = false;
+ ada_tasks_inferior_data_handle.clear (inf);
}
/* The 'normal_stop' observer notification callback. */