Skip to content

Commit a8d2afd

Browse files
committed
mro.xs mro_set_mro() rmv duplicate PL_stack_base derefs, decrease liveness
1 parent 9f52b0b commit a8d2afd

File tree

1 file changed

+7
-6
lines changed

1 file changed

+7
-6
lines changed

ext/mro/mro.xs

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -418,20 +418,21 @@ mro_set_mro(...)
418418
PROTOTYPE: $$
419419
PREINIT:
420420
SV* classname;
421+
SV* type;
421422
HV* class_stash;
422423
struct mro_meta* meta;
423-
PPCODE:
424+
CODE:
424425
if (items != 2)
425426
croak_xs_usage(cv, "classname, type");
426-
427-
classname = ST(0);
427+
type = POPs;
428+
classname = POPs;
429+
PUTBACK; /* return empty list */
428430
class_stash = gv_stashsv(classname, GV_ADD);
429431
if(!class_stash) Perl_croak_nocontext("Cannot create class: '%" SVf "'!", SVfARG(classname));
430432
meta = HvMROMETA(class_stash);
431433

432-
Perl_mro_set_mro(aTHX_ meta, ST(1));
433-
434-
XSRETURN_EMPTY;
434+
Perl_mro_set_mro(aTHX_ meta, type);
435+
return; /* skip implied PUTBACK; */
435436

436437
void
437438
mro_get_mro(...)

0 commit comments

Comments
 (0)