diff options
author | gfx <gfuji@cpan.org> | 2009-09-05 16:26:42 +0900 |
---|---|---|
committer | Yves Orton <demerphq@gemini.(none)> | 2009-09-05 11:54:21 +0200 |
commit | 6dfeccca7d595e9c94766acdd058cec56fa67315 (patch) | |
tree | 614b6d713cb3359716af8611b62ea46658af5a2d /sv.c | |
parent | 37bea34e994ad105df9af2a09b8df68963861164 (diff) | |
download | perl-6dfeccca7d595e9c94766acdd058cec56fa67315.tar.gz |
newSVpvn_flags() does mortalization in place, instead of calling sv_2mortal()
Signed-off-by: Yves Orton <demerphq@gemini.(none)>
Diffstat (limited to 'sv.c')
-rw-r--r-- | sv.c | 10 |
1 files changed, 8 insertions, 2 deletions
@@ -7582,8 +7582,14 @@ Perl_newSVpvn_flags(pTHX_ const char *const s, const STRLEN len, const U32 flags assert(!(flags & ~(SVf_UTF8|SVs_TEMP))); new_SV(sv); sv_setpvn(sv,s,len); - SvFLAGS(sv) |= (flags & SVf_UTF8); - return (flags & SVs_TEMP) ? sv_2mortal(sv) : sv; + SvFLAGS(sv) |= flags; + + if(flags & SVs_TEMP){ + EXTEND_MORTAL(1); + PL_tmps_stack[++PL_tmps_ix] = sv; + } + + return sv; } /* |