X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=xsutils.c;h=3bc1f9349bc5af58002cb4f60fdbec6ab8ed76d2;hb=9711599ee3b2375539002b6ddc0873ec478916bb;hp=67bf6ca73f312848a4817855c71217cbcaf2230e;hpb=1129b882ced9d5881a47214405219a2e6e332a92;p=p5sagit%2Fp5-mst-13.2.git diff --git a/xsutils.c b/xsutils.c index 67bf6ca..3bc1f93 100644 --- a/xsutils.c +++ b/xsutils.c @@ -9,8 +9,10 @@ */ /* - * "Perilous to us all are the devices of an art deeper than we possess - * ourselves." --Gandalf + * 'Perilous to us all are the devices of an art deeper than we possess + * ourselves.' --Gandalf + * + * [p.597 of _The Lord of the Rings_, III/xi: "The Palantír"] */ @@ -77,9 +79,9 @@ modify_SV_attributes(pTHX_ SV *sv, SV **retlist, SV **attrlist, int numattrs) case 'l': if (memEQ(name, "lvalue", 6)) { if (negated) - CvFLAGS((CV*)sv) &= ~CVf_LVALUE; + CvFLAGS(MUTABLE_CV(sv)) &= ~CVf_LVALUE; else - CvFLAGS((CV*)sv) |= CVf_LVALUE; + CvFLAGS(MUTABLE_CV(sv)) |= CVf_LVALUE; continue; } break; @@ -87,18 +89,18 @@ modify_SV_attributes(pTHX_ SV *sv, SV **retlist, SV **attrlist, int numattrs) case 'k': if (memEQ(name, "locked", 6)) { if (negated) - CvFLAGS((CV*)sv) &= ~CVf_LOCKED; + CvFLAGS(MUTABLE_CV(sv)) &= ~CVf_LOCKED; else - CvFLAGS((CV*)sv) |= CVf_LOCKED; + CvFLAGS(MUTABLE_CV(sv)) |= CVf_LOCKED; continue; } break; case 'h': if (memEQ(name, "method", 6)) { if (negated) - CvFLAGS((CV*)sv) &= ~CVf_METHOD; + CvFLAGS(MUTABLE_CV(sv)) &= ~CVf_METHOD; else - CvFLAGS((CV*)sv) |= CVf_METHOD; + CvFLAGS(MUTABLE_CV(sv)) |= CVf_METHOD; continue; } break; @@ -203,7 +205,7 @@ usage: switch (SvTYPE(sv)) { case SVt_PVCV: - cvflags = CvFLAGS((CV*)sv); + cvflags = CvFLAGS((const CV *)sv); if (cvflags & CVf_LOCKED) XPUSHs(newSVpvs_flags("locked", SVs_TEMP)); #ifdef CVf_LVALUE @@ -212,7 +214,7 @@ usage: #endif if (cvflags & CVf_METHOD) XPUSHs(newSVpvs_flags("method", SVs_TEMP)); - if (GvUNIQUE(CvGV((CV*)sv))) + if (GvUNIQUE(CvGV((const CV *)sv))) XPUSHs(newSVpvs_flags("unique", SVs_TEMP)); break; case SVt_PVGV: @@ -260,8 +262,8 @@ usage: stash = CvSTASH(sv); break; case SVt_PVGV: - if (isGV_with_GP(sv) && GvGP(sv) && GvESTASH((GV*)sv)) - stash = GvESTASH((GV*)sv); + if (isGV_with_GP(sv) && GvGP(sv) && GvESTASH(MUTABLE_GV(sv))) + stash = GvESTASH(MUTABLE_GV(sv)); break; default: break;