Add to MANIFEST: README.threads, lib/ISA.pm, lib/Class/Fields.pm
[p5sagit/p5-mst-13.2.git] / pp_sys.c
index 200db75..94f84b7 100644 (file)
--- a/pp_sys.c
+++ b/pp_sys.c
@@ -224,6 +224,7 @@ PP(pp_glob)
     OP *result;
     ENTER;
 
+#ifndef VMS
     if (tainting) {
        /*
         * The external globbing program may use things we can't control,
@@ -232,6 +233,7 @@ PP(pp_glob)
        TAINT;
        taint_proper(no_security, "glob");
     }
+#endif /* !VMS */
 
     SAVESPTR(last_in_gv);      /* We don't want this to be permanent. */
     last_in_gv = (GV*)*stack_sp--;
@@ -520,7 +522,7 @@ PP(pp_tie)
     CATCH_SET(TRUE);
 
     ENTER;
-    SAVESPTR(op);
+    SAVEOP();
     op = (OP *) &myop;
     if (perldb && curstash != debstash)
        op->op_private |= OPpENTERSUB_DB;
@@ -528,7 +530,7 @@ PP(pp_tie)
     XPUSHs((SV*)GvCV(gv));
     PUTBACK;
 
-    if (op = pp_entersub())
+    if (op = pp_entersub(ARGS))
         runops();
     SPAGAIN;
 
@@ -631,12 +633,12 @@ PP(pp_dbmopen)
     CATCH_SET(TRUE);
 
     ENTER;
-    SAVESPTR(op);
+    SAVEOP();
     op = (OP *) &myop;
     if (perldb && curstash != debstash)
        op->op_private |= OPpENTERSUB_DB;
     PUTBACK;
-    pp_pushmark();
+    pp_pushmark(ARGS);
 
     EXTEND(sp, 5);
     PUSHs(sv);
@@ -649,7 +651,7 @@ PP(pp_dbmopen)
     PUSHs((SV*)GvCV(gv));
     PUTBACK;
 
-    if (op = pp_entersub())
+    if (op = pp_entersub(ARGS))
         runops();
     SPAGAIN;
 
@@ -657,7 +659,7 @@ PP(pp_dbmopen)
        sp--;
        op = (OP *) &myop;
        PUTBACK;
-       pp_pushmark();
+       pp_pushmark(ARGS);
 
        PUSHs(sv);
        PUSHs(left);
@@ -666,7 +668,7 @@ PP(pp_dbmopen)
        PUSHs((SV*)GvCV(gv));
        PUTBACK;
 
-       if (op = pp_entersub())
+       if (op = pp_entersub(ARGS))
            runops();
        SPAGAIN;
     }
@@ -821,6 +823,7 @@ void
 setdefout(gv)
 GV *gv;
 {
+    dTHR;
     if (gv)
        (void)SvREFCNT_inc(gv);
     if (defoutgv)
@@ -908,6 +911,7 @@ CV *cv;
 GV *gv;
 OP *retop;
 {
+    dTHR;
     register CONTEXT *cx;
     I32 gimme = GIMME_V;
     AV* padlist = CvPADLIST(cv);
@@ -3213,7 +3217,7 @@ PP(pp_setpgrp)
 #ifdef BSD_SETPGRP
     SETi( BSD_SETPGRP(pid, pgrp) >= 0 );
 #else
-    if ((pgrp != 0 && pgrp != getpid())) || (pid != 0 && pid != getpid()))
+    if ((pgrp != 0 && pgrp != getpid()) || (pid != 0 && pid != getpid()))
        DIE("POSIX setpgrp can't take an argument");
     SETi( setpgrp() >= 0 );
 #endif /* USE_BSDPGRP */
@@ -3684,7 +3688,7 @@ PP(pp_gnetent)
        PUSHs(sv = sv_mortalcopy(&sv_no));
        sv_setpv(sv, nent->n_name);
        PUSHs(sv = sv_mortalcopy(&sv_no));
-       for (elem = nent->n_aliases; *elem; elem++) {
+       for (elem = nent->n_aliases; elem && *elem; elem++) {
            sv_catpv(sv, *elem);
            if (elem[1])
                sv_catpvn(sv, " ", 1);
@@ -3754,7 +3758,7 @@ PP(pp_gprotoent)
        PUSHs(sv = sv_mortalcopy(&sv_no));
        sv_setpv(sv, pent->p_name);
        PUSHs(sv = sv_mortalcopy(&sv_no));
-       for (elem = pent->p_aliases; *elem; elem++) {
+       for (elem = pent->p_aliases; elem && *elem; elem++) {
            sv_catpv(sv, *elem);
            if (elem[1])
                sv_catpvn(sv, " ", 1);
@@ -3841,7 +3845,7 @@ PP(pp_gservent)
        PUSHs(sv = sv_mortalcopy(&sv_no));
        sv_setpv(sv, sent->s_name);
        PUSHs(sv = sv_mortalcopy(&sv_no));
-       for (elem = sent->s_aliases; *elem; elem++) {
+       for (elem = sent->s_aliases; elem && *elem; elem++) {
            sv_catpv(sv, *elem);
            if (elem[1])
                sv_catpvn(sv, " ", 1);
@@ -4121,7 +4125,7 @@ PP(pp_ggrent)
        PUSHs(sv = sv_mortalcopy(&sv_no));
        sv_setiv(sv, (IV)grent->gr_gid);
        PUSHs(sv = sv_mortalcopy(&sv_no));
-       for (elem = grent->gr_mem; *elem; elem++) {
+       for (elem = grent->gr_mem; elem && *elem; elem++) {
            sv_catpv(sv, *elem);
            if (elem[1])
                sv_catpvn(sv, " ", 1);