I don't know why it's being destroyed twice and this doesn't try to fix that. Maybe it's intentional, since LiSaX derives from LiSa but shares the same constructor/destructor in type_engine_import_ugen_begin calls?
When I add EM_log( CK_LOG_CORE, "(lisa): destroying, d = %p", d); inside LiSaMulti_dtor, I see indeed that it's called twice, once with a valid pointer and once with null. A similar test with e.g. SinOsc or the single-channel LiSa only reports one call to the dtor.
Repro:
LiSa2 lisa; // or LiSa10, etc -- but not LiSa
// crashes
I don't know why it's being destroyed twice and this doesn't try to fix that. Maybe it's intentional, since
LiSaX
derives fromLiSa
but shares the same constructor/destructor intype_engine_import_ugen_begin
calls?When I add
EM_log( CK_LOG_CORE, "(lisa): destroying, d = %p", d);
insideLiSaMulti_dtor
, I see indeed that it's called twice, once with a valid pointer and once with null. A similar test with e.g.SinOsc
or the single-channelLiSa
only reports one call to the dtor.Repro: