The segfault occurs inside clone_key_arg() inside src/inter_call.c (at
line 871), which has the following leading POD description (committed by
chromatic who also committed most of the implementation):

Replaces any src registers by their values (done inside clone).  This
needs a test for tailcalls too, but I think there is no syntax to pass a
key to a tailcalled function or method.


The segfault is from the second if() statement, when on my system key
contained the value 0x21, which is obviously not a valid pmc*:

static void
clone_key_arg(PARROT_INTERP, ARGMOD(call_state *st))
{
    PMC *key = UVal_pmc(st->val);

    if (!key)
        return;

    if (key->vtable->base_type != enum_class_Key)

Reply via email to