]> git.vpit.fr Git - perl/modules/Sub-Op.git/blobdiff - t/Sub-Op-LexicalSub/LexicalSub.xs
Add a "flags" parameter to sub_op_register()
[perl/modules/Sub-Op.git] / t / Sub-Op-LexicalSub / LexicalSub.xs
index e67d5baa33d02e4711484180ed6b13fbb4e0905a..a9b1344bba9b998a7f4033d52f30d7060dfede8f 100644 (file)
@@ -24,7 +24,6 @@ STATIC OP *sols_check(pTHX_ OP *o, void *ud_) {
 
 STATIC OP *sols_pp(pTHX) {
  dSP;
- dMARK;
  SV *cb;
  int i, items;
 
@@ -37,22 +36,10 @@ STATIC OP *sols_pp(pTHX) {
   cb = *svp;
  }
 
- ENTER;
- SAVETMPS;
-
- PUSHMARK(MARK);
-
- items = call_sv(cb, G_ARRAY);
-
- SPAGAIN;
- for (i = 0; i < items; ++i)
-  SvREFCNT_inc(SP[-i]);
+ XPUSHs(cb);
  PUTBACK;
 
- FREETMPS;
- LEAVE;
-
- return NORMAL;
+ return CALL_FPTR(PL_ppaddr[OP_ENTERSUB])(aTHX);
 }
 
 /* --- XS ------------------------------------------------------------------ */
@@ -75,11 +62,12 @@ PPCODE:
  if (SvROK(cb)) {
   cb = SvRV(cb);
   if (SvTYPE(cb) >= SVt_PVCV) {
-   c.name  = SvPV_const(name, c.len);
+   sub_op_init(&c);
+   c.name  = SvPV_const(name, c.namelen);
    c.check = sols_check;
    c.ud    = SvREFCNT_inc(cb);
    c.pp    = sols_pp;
-   sub_op_register(aTHX_ &c);
+   sub_op_register(aTHX_ &c, 0);
   }
  }
  XSRETURN(0);