https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119323
--- Comment #6 from Jonathan Wakely <redi at gcc dot gnu.org> ---
(In reply to Jonathan Wakely from comment #5)
> // Update the list of compiler-maintained enabled exceptions.
> extern "C"
> void
> __gg__stash_exceptions( size_t nec, cbl_enabled_exception_t *ecs )
> {
> enabled_ECs = cbl_enabled_exceptions_array_t(nec, ecs);
>
> if( false && getenv("match_declarative") )
> warnx("%s: %zu exceptions enabled", __func__, nec);
> }
>
> A temporary cbl_enabled_exceptions_array_t is created, which allocates a new
> array of cbl_enabled_exception_t objects
Oops, no it doesn't - that constructor just takes ownership of the 'ecs'
pointer without allocating anything. So that will be why there's no destructor
... the ownership of cbl_enabled_exceptions_array_t.ecs is not at all clear.
Sometimes it's owned by the object, sometimes it's not.
At the very least, this deserves some comments in
cbl_enabled_exceptions_array_t explaining this (and that memory is leaked
intentionally by not freeing it?)