X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=pp.h;h=de405f6c8fc0838a91c06ea8c5a9468ee224a8ea;hb=249edfdff1b2b750e894ee5a0b6cb64d2640ca02;hp=1914fcc5b5928bfcdb63695ff6414c74feae2568;hpb=52e1cb5ebf5e5a8cd5d3d9673b540b0c0dfe20df;p=p5sagit%2Fp5-mst-13.2.git diff --git a/pp.h b/pp.h index 1914fcc..de405f6 100644 --- a/pp.h +++ b/pp.h @@ -14,11 +14,11 @@ #define ARGS #define dARGS #endif /* USE_THREADS */ -#ifdef CAN_PROTOTYPE +#ifdef PERL_OBJECT +#define PP(s) OP * CPerlObj::s(ARGSproto) +#else #define PP(s) OP * s(ARGSproto) -#else /* CAN_PROTOTYPE */ -#define PP(s) OP* s(ARGS) dARGS -#endif /* CAN_PROTOTYPE */ +#endif #define SP sp #define MARK mark @@ -154,11 +154,14 @@ #define ARGTARG op->op_targ #define MAXARG op->op_private -#define SWITCHSTACK(f,t) AvFILL(f) = sp - stack_base; \ - stack_base = AvARRAY(t); \ - stack_max = stack_base + AvMAX(t); \ - sp = stack_sp = stack_base + AvFILL(t); \ - curstack = t; +#define SWITCHSTACK(f,t) \ + STMT_START { \ + AvFILLp(f) = sp - stack_base; \ + stack_base = AvARRAY(t); \ + stack_max = stack_base + AvMAX(t); \ + sp = stack_sp = stack_base + AvFILLp(t); \ + curstack = t; \ + } STMT_END #define EXTEND_MORTAL(n) \ STMT_START { \ @@ -217,10 +220,11 @@ /* newSVsv does not behave as advertised, so we copy missing * information by hand */ - -#define RvDEEPCP(rv) STMT_START { SV* ref=SvRV(rv); \ - if (SvREFCNT(ref)>1) { \ - SvREFCNT_dec(ref); \ +/* SV* ref causes confusion with the member variable + changed SV* ref to SV* tmpRef */ +#define RvDEEPCP(rv) STMT_START { SV* tmpRef=SvRV(rv); \ + if (SvREFCNT(tmpRef)>1) { \ + SvREFCNT_dec(tmpRef); \ SvRV(rv)=AMG_CALLun(rv,copy); \ } } STMT_END #else