diff options
author | Nicholas Clark <nick@ccl4.org> | 2006-02-20 13:42:47 +0000 |
---|---|---|
committer | Nicholas Clark <nick@ccl4.org> | 2006-02-20 13:42:47 +0000 |
commit | d04ba5897acce6425e3b231fbf36336ea42f8165 (patch) | |
tree | 0300fa64efa15fc65f2c48cc2938c1fe8afa0e5a /op.c | |
parent | bf53b3a5f249ae2a059ca8014f7a62d301c554bc (diff) | |
download | perl-d04ba5897acce6425e3b231fbf36336ea42f8165.tar.gz |
xcv_root and xcv_xsub can also be merged into a union, providing a new
flag is added to denote whether the PVCV is perl or XSUB.
p4raw-id: //depot/perl@27244
Diffstat (limited to 'op.c')
-rw-r--r-- | op.c | 4 |
1 files changed, 3 insertions, 1 deletions
@@ -4295,7 +4295,7 @@ Perl_cv_undef(pTHX_ CV *cv) SvREFCNT_dec((SV*)CvXSUBANY(cv).any_ptr); CvCONST_off(cv); } - if (CvXSUB(cv)) { + if (CvISXSUB(cv) && CvXSUB(cv)) { CvXSUB(cv) = 0; } /* delete all flags except WEAKOUTSIDE */ @@ -4586,6 +4586,7 @@ Perl_newATTRSUB(pTHX_ I32 floor, OP *o, OP *proto, OP *attrs, OP *block) CvXSUBANY(cv).any_ptr = const_sv; CvXSUB(cv) = const_sv_xsub; CvCONST_on(cv); + CvISXSUB_on(cv); } else { GvCV(gv) = NULL; @@ -4916,6 +4917,7 @@ Perl_newXS(pTHX_ const char *name, XSUBADDR_t subaddr, const char *filename) (void)gv_fetchfile(filename); CvFILE(cv) = (char *)filename; /* NOTE: not copied, as it is expected to be an external constant string */ + CvISXSUB_on(cv); CvXSUB(cv) = subaddr; if (name) { |