Description: Fix "perl5i -e" from segfaulting.
Bug-Debian: https://bugs.debian.org/716296
Bug: https://github.com/schwern/perl5i/issues/269
Origin: commit d096ee5e26603630a6bae5ee711000e09a038ab3
Author: Michael G. Schwern <schwern@pobox.com>
Date:   Fri Feb 6 23:26:00 2015 -0800

diff --git a/bin/perl5i.c.PL b/bin/perl5i.c.PL
index 560ff07..ad2bcb0 100644
--- a/bin/perl5i.c.PL
+++ b/bin/perl5i.c.PL
@@ -39,7 +39,7 @@ int main (int argc, char* argv[]) {
     const char* perl_cmd = "%s";
     char* perl_args[argc+1];
     char* dash_m = (char *)malloc(sizeof(char) * (strlen(argv[0]) + 20));
-    char* program;
+    char* program = "";
     int saw_dash_e = 0;
 
     strcpy(dash_m, "-Mperl5i::cmd=");
@@ -56,6 +56,7 @@ int main (int argc, char* argv[]) {
 	    && dash_e > argv[i]
 	    && *(dash_e-1) == '-'
             && (strchr(argv[i], '-') == argv[i])
+            && i+1 < argc
             )
         {
             saw_dash_e = 1;
@@ -70,8 +71,8 @@ int main (int argc, char* argv[]) {
             }
 
             /* Skip the next argument, its the program */
-            program = argv[i+1];
             i++;
+            program = argv[i];
             continue;
         }
 
diff --git a/t/command_line_wrapper.t b/t/command_line_wrapper.t
index c7b100f..509cd01 100755
--- a/t/command_line_wrapper.t
+++ b/t/command_line_wrapper.t
@@ -64,4 +64,21 @@ is capture {system @perl5icmd, '-e', q($fun="yay"; say $fun;)}, "yay\n", 'no str
 is capture {system ($^X, '-Ilib', '-Mperl5i::latest', '-e', q|$fun="yay"; say $fun;|)},
     "yay\n", q{no strict vars for perl -Mperl5i::latest -e '...'};
 
+# It acts like Perl when given weird arguments.
+{
+    # We expect these system calls to return non-zero
+    no autodie "system";
+
+    my %tests = (
+        "-e with no code"       => ["-e"],
+        "null byte"             => ["\\000", "-e"],
+    );
+
+    %tests->each(func($test_name,$args) {
+        is capture {system @perl5icmd, $args},
+           capture {system $^X,        $args},
+           $test_name;
+    });
+}
+
 done_testing;
