diff options
author | Rafael Garcia-Suarez <rgarciasuarez@gmail.com> | 2006-05-17 20:54:23 +0000 |
---|---|---|
committer | Rafael Garcia-Suarez <rgarciasuarez@gmail.com> | 2006-05-17 20:54:23 +0000 |
commit | b0a11fe104a0ad4cbfcb5d90e8c0fbdfd46e46ac (patch) | |
tree | 2cbeabf127fee1719e3bf8cf2e33d9f3c034ed05 | |
parent | e3749539d04912af50a86b1d1e5ae9962c3a882c (diff) | |
download | perl-b0a11fe104a0ad4cbfcb5d90e8c0fbdfd46e46ac.tar.gz |
Add a new macro SvVSTRING_mg that returns vstring magic, if any.
SvVOK used to do that, in stealth mode, but now it returns a
boolean like it used to. Patch suggested by John Peacock.
p4raw-id: //depot/perl@28218
-rw-r--r-- | sv.c | 2 | ||||
-rw-r--r-- | sv.h | 4 |
2 files changed, 5 insertions, 1 deletions
@@ -3676,7 +3676,7 @@ Perl_sv_setsv_flags(pTHX_ SV *dstr, register SV *sstr, I32 flags) SvFLAGS(dstr) |= sflags & (SVf_IOK|SVp_IOK|SVf_NOK|SVp_NOK|SVf_UTF8 |SVf_AMAGIC); { - const MAGIC * const smg = SvVOK(sstr); + const MAGIC * const smg = SvVSTRING_mg(sstr); if (smg) { sv_magic(dstr, NULL, PERL_MAGIC_vstring, smg->mg_ptr, smg->mg_len); @@ -949,7 +949,11 @@ in gv.h: */ SvFLAGS(sv) |= (SVf_POK|SVp_POK)) #define SvVOK(sv) (SvMAGICAL(sv) \ + && mg_find(sv,PERL_MAGIC_vstring)) +/* returns the vstring magic, if any */ +#define SvVSTRING_mg(sv) (SvMAGICAL(sv) \ ? mg_find(sv,PERL_MAGIC_vstring) : NULL) + #define SvOOK(sv) (SvFLAGS(sv) & SVf_OOK) #define SvOOK_on(sv) ((void)SvIOK_off(sv), SvFLAGS(sv) |= SVf_OOK) #define SvOOK_off(sv) ((void)(SvOOK(sv) && sv_backoff(sv))) |