Stop Devel'Peek'Dump with no args from crashing
authorFather Chrysostomos <sprout@cpan.org>
Sat, 7 Sep 2013 01:07:50 +0000 (18:07 -0700)
committerFather Chrysostomos <sprout@cpan.org>
Sat, 7 Sep 2013 06:25:50 +0000 (23:25 -0700)
I accidentally broke this in commit xxxxxxxx (5.19.3).  The crash hap-
pened at compile time.

ext/Devel-Peek/Peek.xs
ext/Devel-Peek/t/Peek.t

index 73094b8..91b7555 100644 (file)
@@ -389,6 +389,13 @@ S_ck_dump(pTHX_ OP *entersubop, GV *namegv, SV *cv)
        prev = aop;
        aop = aop->op_sibling;
     }
+    if (!aop) {
+       /* It doesn’t really matter what we return here, as this only
+          occurs after yyerror.  */
+       op_free(first);
+       return entersubop;
+    }
+
     /* aop now points to the second arg if there is one, the cvop otherwise
      */
     if (aop->op_sibling) {
index 929ce79..7025b45 100644 (file)
@@ -1039,6 +1039,12 @@ SV = PV\($ADDR\) at $ADDR
   LEN = \d+
 SUBSTR
 
+# Dump with no arguments
+eval 'Dump';
+like $@, qr/^Not enough arguments for Devel::Peek::Dump/, 'Dump;';
+eval 'Dump()';
+like $@, qr/^Not enough arguments for Devel::Peek::Dump/, 'Dump()';
+
 SKIP: {
     skip "Not built with usemymalloc", 2
       unless $Config{usemymalloc} eq 'y';