diff options
author | Ævar Arnfjörð Bjarmason <avar@cpan.org> | 2007-05-01 21:06:47 +0000 |
---|---|---|
committer | Rafael Garcia-Suarez <rgarciasuarez@gmail.com> | 2007-05-02 12:17:22 +0000 |
commit | 22846ab4665d8b0497bab48ce4cd23d9c17b64e5 (patch) | |
tree | ebe212eb5cb4a6126961d8e4ec9c4814da98b869 /mg.c | |
parent | 08ea85ebb7e662ede09f8aeca53b33a16b8e6a1e (diff) | |
download | perl-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.c | 8 |
1 files changed, 5 insertions, 3 deletions
@@ -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 |