summaryrefslogtreecommitdiff
path: root/mg.c
diff options
context:
space:
mode:
authorÆvar Arnfjörð Bjarmason <avar@cpan.org>2007-05-01 21:06:47 +0000
committerRafael Garcia-Suarez <rgarciasuarez@gmail.com>2007-05-02 12:17:22 +0000
commit22846ab4665d8b0497bab48ce4cd23d9c17b64e5 (patch)
treeebe212eb5cb4a6126961d8e4ec9c4814da98b869 /mg.c
parent08ea85ebb7e662ede09f8aeca53b33a16b8e6a1e (diff)
downloadperl-22846ab4665d8b0497bab48ce4cd23d9c17b64e5.tar.gz
When FETCHSIZE returns <0 perl segfaults
From: "Ævar Arnfjörð Bjarmason" <avarab@gmail.com> Message-ID: <51dd1af80705011406j7897772bm58e9c770183ef3ed@mail.gmail.com> p4raw-id: //depot/perl@31116
Diffstat (limited to 'mg.c')
-rw-r--r--mg.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/mg.c b/mg.c
index 9d20590e0f..21f671adc5 100644
--- a/mg.c
+++ b/mg.c
@@ -1667,19 +1667,21 @@ U32
Perl_magic_sizepack(pTHX_ SV *sv, MAGIC *mg)
{
dVAR; dSP;
- U32 retval = 0;
+ I32 retval = 0;
ENTER;
SAVETMPS;
PUSHSTACKi(PERLSI_MAGIC);
if (magic_methcall(sv, mg, "FETCHSIZE", G_SCALAR, 2, NULL)) {
sv = *PL_stack_sp--;
- retval = (U32) SvIV(sv)-1;
+ retval = SvIV(sv)-1;
+ if (retval < -1)
+ Perl_croak(aTHX_ "FETCHSIZE returned a negative value");
}
POPSTACK;
FREETMPS;
LEAVE;
- return retval;
+ return (U32) retval;
}
int