aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Marchi <simon.marchi@polymtl.ca>2025-03-10 11:10:49 -0400
committerSimon Marchi <simon.marchi@polymtl.ca>2025-03-19 15:15:37 -0400
commit35ad2b260d39da9990bdff8695eee218b9aa6ead (patch)
tree359cc3ae85d61fe62d1a11ee20ac7ef31384d491
parentc509b986479147fd29f9abe8438d05c7781b4f29 (diff)
downloadbinutils-35ad2b260d39da9990bdff8695eee218b9aa6ead.zip
binutils-35ad2b260d39da9990bdff8695eee218b9aa6ead.tar.gz
binutils-35ad2b260d39da9990bdff8695eee218b9aa6ead.tar.bz2
gdb: change set_internalvar_function to take a unique pointer
This makes the transfer of ownership a bit clearer, even though the internal_function is still held with a raw pointer inside internalval. Change-Id: Ie8d13270b64737b92291532acfbfcbc992b482b5 Reviewed-By: Guinevere Larsen <guinevere@redhat.com>
-rw-r--r--gdb/value.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/gdb/value.c b/gdb/value.c
index e36feaf..ddc0959 100644
--- a/gdb/value.c
+++ b/gdb/value.c
@@ -74,6 +74,8 @@ struct internal_function
void *cookie;
};
+using internal_function_up = std::unique_ptr<internal_function>;
+
/* Returns true if the ranges defined by [offset1, offset1+len1) and
[offset2, offset2+len2) overlap. */
@@ -2297,13 +2299,13 @@ set_internalvar_string (struct internalvar *var, const char *string)
}
static void
-set_internalvar_function (struct internalvar *var, struct internal_function *f)
+set_internalvar_function (internalvar *var, internal_function_up f)
{
/* Clean up old contents. */
clear_internalvar (var);
var->kind = INTERNALVAR_FUNCTION;
- var->u.fn.function = f;
+ var->u.fn.function = f.release ();
var->u.fn.canonical = 1;
/* Variables installed here are always the canonical version. */
}
@@ -2385,11 +2387,9 @@ static struct cmd_list_element *
do_add_internal_function (const char *name, const char *doc,
internal_function_fn_noside handler, void *cookie)
{
- struct internal_function *ifn;
- struct internalvar *var = lookup_internalvar (name);
-
- ifn = new internal_function (name, handler, cookie);
- set_internalvar_function (var, ifn);
+ set_internalvar_function (lookup_internalvar (name),
+ std::make_unique<internal_function> (name, handler,
+ cookie));
return add_cmd (name, no_class, function_command, doc, &functionlist);
}