diff options
-rw-r--r-- | doio.c | 13 | ||||
-rw-r--r-- | pp_sys.c | 8 |
2 files changed, 13 insertions, 8 deletions
@@ -1572,6 +1572,19 @@ Perl_apply(pTHX_ I32 type, register SV **mark, register SV **sp) const char *s; SV ** const oldmark = mark; + /* Doing this ahead of the switch statement preserves the old behaviour, + where attempting to use kill as a taint test test would fail on + platforms where kill was not defined. */ +#ifndef HAS_KILL + if (type == OP_KILL) + DIE(aTHX_ PL_no_func, "kill"); +#endif +#ifndef HAS_CHOWN + if (type == OP_CHOWN) + DIE(aTHX_ PL_no_func, "chown"); +#endif + + #define APPLY_TAINT_PROPER() \ STMT_START { \ if (PL_tainted) { TAINT_PROPER(what); } \ @@ -3455,16 +3455,12 @@ PP(pp_chdir) PP(pp_chown) { -#ifdef HAS_CHOWN dSP; dMARK; dTARGET; I32 value = (I32)apply(PL_op->op_type, MARK, SP); SP = MARK; PUSHi(value); RETURN; -#else - DIE(aTHX_ PL_no_func, "chown"); -#endif } PP(pp_chroot) @@ -4216,16 +4212,12 @@ PP(pp_exec) PP(pp_kill) { -#ifdef HAS_KILL dSP; dMARK; dTARGET; I32 value; value = (I32)apply(PL_op->op_type, MARK, SP); SP = MARK; PUSHi(value); RETURN; -#else - DIE(aTHX_ PL_no_func, "kill"); -#endif } PP(pp_getppid) |