The new smart match dispatch table for 5.10.1 onwards
[p5sagit/p5-mst-13.2.git] / pp_sys.c
index 841392b..6bfdf35 100644 (file)
--- a/pp_sys.c
+++ b/pp_sys.c
@@ -29,7 +29,7 @@
 #include "EXTERN.h"
 #define PERL_IN_PP_SYS_C
 #include "perl.h"
-#ifndef PERL_MICRO
+#if !defined(PERL_MICRO) && defined(Quad_t)
 #  include "time64.h"
 #  include "time64.c"
 #endif
@@ -1818,9 +1818,8 @@ PP(pp_send)
            SV *sv;
 
            if (MARK == SP - 1) {
-               EXTEND(SP, 1000);
-               sv = sv_2mortal(newSViv(sv_len(*SP)));
-               PUSHs(sv);
+               sv = *SP;
+               mXPUSHi(sv_len(sv));
                PUTBACK;
            }
 
@@ -4260,7 +4259,7 @@ PP(pp_exec)
        (void) do_spawn(SvPVx_nolen(sv_mortalcopy(*SP)));
        value = 0;
 #  else
-       value = (I32)do_exec3(SvPVx_nolen(sv_mortalcopy(*SP)), 0, 0);
+       value = (I32)do_exec(SvPVx_nolen(sv_mortalcopy(*SP)));
 #  endif
 #endif
     }
@@ -4318,6 +4317,7 @@ PP(pp_setpgrp)
     if (MAXARG < 2) {
        pgrp = 0;
        pid = 0;
+       XPUSHi(-1);
     }
     else {
        pgrp = POPi;
@@ -4424,7 +4424,7 @@ PP(pp_gmtime)
 {
     dVAR;
     dSP;
-#ifdef PERL_MICRO
+#if defined(PERL_MICRO) || !defined(Quad_t)
     Time_t when;
     const struct tm *err;
     struct tm tmbuf;
@@ -4440,7 +4440,7 @@ PP(pp_gmtime)
        {"Jan", "Feb", "Mar", "Apr", "May", "Jun",
         "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};
 
-#ifdef PERL_MICRO
+#if defined(PERL_MICRO) || !defined(Quad_t)
     if (MAXARG < 1)
        (void)time(&when);
     else