gdb: clear internalvar on destruction

The data associated to an internalvar is destroyed when changing the
kind of the internalvar, but not when it is destroyed.  Fix that by
calling clear_internalvar in ~internalvar.

A move constructor becomes needed to avoid freeing things multiple times
when internalvars are moved (and if we forget it, clang helpfully gives
us a -Wdeprecated-copy-with-user-provided-dtor warning).

Change-Id: I427718569208fd955ea25e94d341dde356725033
Reviewed-By: Guinevere Larsen <guinevere@redhat.com>
This commit is contained in:
Simon Marchi 2025-03-10 11:10:47 -04:00 committed by Simon Marchi
parent a7f139db22
commit bab86877e4

View file

@ -1872,6 +1872,19 @@ struct internalvar
: name (std::move (name))
{}
internalvar (internalvar &&other)
: name (std::move(other.name)),
kind (other.kind),
u (other.u)
{
other.kind = INTERNALVAR_VOID;
}
~internalvar ()
{
clear_internalvar (this);
}
std::string name;
/* We support various different kinds of content of an internal variable.