summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--perl/pack.c4
-rw-r--r--perl/t/08_cycle.t5
2 files changed, 6 insertions, 3 deletions
diff --git a/perl/pack.c b/perl/pack.c
index af6669c..93b2e2f 100644
--- a/perl/pack.c
+++ b/perl/pack.c
@@ -151,7 +151,7 @@ static int try_int(enc_t* enc, const char *p, size_t len) {
static void _msgpack_pack_rv(enc_t *enc, SV* sv, int depth);
static void _msgpack_pack_sv(enc_t *enc, SV* sv, int depth) {
- if (!depth) Perl_croak(aTHX_ ERR_NESTING_EXCEEDED);
+ if (depth <= 0) Perl_croak(aTHX_ ERR_NESTING_EXCEEDED);
SvGETMAGIC(sv);
if (sv==NULL) {
@@ -187,7 +187,7 @@ static void _msgpack_pack_sv(enc_t *enc, SV* sv, int depth) {
static void _msgpack_pack_rv(enc_t *enc, SV* sv, int depth) {
svtype svt;
- if (!depth) Perl_croak(aTHX_ ERR_NESTING_EXCEEDED);
+ if (depth <= 0) Perl_croak(aTHX_ ERR_NESTING_EXCEEDED);
SvGETMAGIC(sv);
svt = SvTYPE(sv);
diff --git a/perl/t/08_cycle.t b/perl/t/08_cycle.t
index 55d8427..2bd66c1 100644
--- a/perl/t/08_cycle.t
+++ b/perl/t/08_cycle.t
@@ -2,7 +2,7 @@ use t::Util;
use Test::More;
use Data::MessagePack;
-plan tests => 5;
+plan tests => 6;
my $aref = [0];
$aref->[1] = $aref;
@@ -23,3 +23,6 @@ ok !$@;
eval { Data::MessagePack->pack($aref, 2) };
ok $@, $@;
+
+eval { Data::MessagePack->pack($aref, -1) };
+ok $@, $@;