cb = SvRV(cb);
if (SvTYPE(cb) >= SVt_PVCV) {
sub_op_init(&c);
- c.name = SvPV_const(name, c.namelen);
- c.check = sols_check;
- c.ud = SvREFCNT_inc(cb);
- c.pp = sols_pp;
+ c.name = SvPV_const(name, c.namelen);
+ if (SvPOK(cb)) { /* Sub is prototyped */
+ c.proto = SvPV_const(cb, c.protolen);
+ }
+ c.check = sols_check;
+ c.ud = SvREFCNT_inc(cb);
+ c.pp = sols_pp;
sub_op_register(aTHX_ &c, 0);
}
}