summaryrefslogtreecommitdiff
path: root/cpan/Encode/Encode.xs
diff options
context:
space:
mode:
Diffstat (limited to 'cpan/Encode/Encode.xs')
-rw-r--r--cpan/Encode/Encode.xs6
1 files changed, 3 insertions, 3 deletions
diff --git a/cpan/Encode/Encode.xs b/cpan/Encode/Encode.xs
index b2e912785f..d014d318e2 100644
--- a/cpan/Encode/Encode.xs
+++ b/cpan/Encode/Encode.xs
@@ -1,5 +1,5 @@
/*
- $Id: Encode.xs,v 2.18 2009/11/26 09:23:59 dankogai Exp dankogai $
+ $Id: Encode.xs,v 2.19 2010/09/18 18:39:51 dankogai Exp dankogai $
*/
#define PERL_NO_GET_CONTEXT
@@ -432,7 +432,7 @@ PREINIT:
CODE:
{
dSP; ENTER; SAVETMPS;
- if (src == &PL_sv_undef) src = newSV(0);
+ if (src == &PL_sv_undef || SvROK(src)) src = sv_2mortal(newSV(0));
s = (U8 *) SvPV(src, slen);
e = (U8 *) SvEND(src);
dst = newSV(slen>0?slen:1); /* newSV() abhors 0 -- inaba */
@@ -496,7 +496,7 @@ PREINIT:
CODE:
{
check = SvROK(check_sv) ? ENCODE_PERLQQ|ENCODE_LEAVE_SRC : SvIV(check_sv);
- if (src == &PL_sv_undef) src = newSV(0);
+ if (src == &PL_sv_undef || SvROK(src)) src = sv_2mortal(newSV(0));
s = (U8 *) SvPV(src, slen);
e = (U8 *) SvEND(src);
dst = newSV(slen>0?slen:1); /* newSV() abhors 0 -- inaba */