summaryrefslogtreecommitdiff
path: root/pp_sys.c
diff options
context:
space:
mode:
authorFather Chrysostomos <sprout@cpan.org>2013-12-23 22:08:26 -0800
committerFather Chrysostomos <sprout@cpan.org>2013-12-23 22:42:24 -0800
commit8a6c0fcb27512d17f0e5121f3c83d1a1a72c6f6b (patch)
treed416eb6c6b32ce5db3a37f172340932365bcfb61 /pp_sys.c
parent88af3b939957082fabb95c8d884bc32149f871cd (diff)
downloadperl-8a6c0fcb27512d17f0e5121f3c83d1a1a72c6f6b.tar.gz
pp_sys.c: Remove redundant null checks
Nulls only get pushed on to the stack when pp_coreargs uses them to represent missing optional arguments. Ops that take * prototypes will have had their arguments passed through rv2gv first, so they should always be GVs. GvIOn never returns null. When given a GV argument, it creates a new IO entry and returns that. When given any other argument it croaks. Thank you to Daniel Dragan for providing a list of candidate pp functions in <rt-4.0.18-29609-1387862001-129.120842-15-0@perl.org> (ticket #120842).
Diffstat (limited to 'pp_sys.c')
-rw-r--r--pp_sys.c40
1 files changed, 14 insertions, 26 deletions
diff --git a/pp_sys.c b/pp_sys.c
index 49122e6db1..1ae1119001 100644
--- a/pp_sys.c
+++ b/pp_sys.c
@@ -683,11 +683,8 @@ PP(pp_pipe_op)
GV * const wgv = MUTABLE_GV(POPs);
GV * const rgv = MUTABLE_GV(POPs);
- if (!rgv || !wgv)
- goto badexit;
-
- if (!isGV_with_GP(rgv) || !isGV_with_GP(wgv))
- DIE(aTHX_ PL_no_usym, "filehandle");
+ assert (isGV_with_GP(rgv));
+ assert (isGV_with_GP(wgv));
rstio = GvIOn(rgv);
wstio = GvIOn(wgv);
@@ -2269,11 +2266,11 @@ PP(pp_ioctl)
const unsigned int func = POPu;
const int optype = PL_op->op_type;
GV * const gv = MUTABLE_GV(POPs);
- IO * const io = gv ? GvIOn(gv) : NULL;
+ IO * const io = GvIOn(gv);
char *s;
IV retval;
- if (!io || !argsv || !IoIFP(io)) {
+ if (!IoIFP(io)) {
report_evil_fh(gv);
SETERRNO(EBADF,RMS_IFI); /* well, sort of... */
RETPUSHUNDEF;
@@ -2468,7 +2465,7 @@ PP(pp_bind)
STRLEN len;
int op_type;
- if (!io || !IoIFP(io))
+ if (!IoIFP(io))
goto nuts;
addr = SvPV_const(addrsv, len);
@@ -2493,9 +2490,9 @@ PP(pp_listen)
dVAR; dSP;
const int backlog = POPi;
GV * const gv = MUTABLE_GV(POPs);
- IO * const io = gv ? GvIOn(gv) : NULL;
+ IO * const io = GvIOn(gv);
- if (!io || !IoIFP(io))
+ if (!IoIFP(io))
goto nuts;
if (PerlSock_listen(PerlIO_fileno(IoIFP(io)), backlog) >= 0)
@@ -2513,7 +2510,6 @@ PP(pp_accept)
{
dVAR; dSP; dTARGET;
IO *nstio;
- IO *gstio;
char namebuf[MAXPATHLEN];
#if (defined(VMS_DO_SOCKETS) && defined(DECCRTL_SOCKETS)) || defined(__QNXNTO__)
Sock_size_t len = sizeof (struct sockaddr_in);
@@ -2524,12 +2520,7 @@ PP(pp_accept)
GV * const ngv = MUTABLE_GV(POPs);
int fd;
- if (!ngv)
- goto badexit;
- if (!ggv)
- goto nuts;
-
- gstio = GvIO(ggv);
+ IO * const gstio = GvIO(ggv);
if (!gstio || !IoIFP(gstio))
goto nuts;
@@ -2586,7 +2577,7 @@ PP(pp_shutdown)
GV * const gv = MUTABLE_GV(POPs);
IO * const io = GvIOn(gv);
- if (!io || !IoIFP(io))
+ if (!IoIFP(io))
goto nuts;
PUSHi( PerlSock_shutdown(PerlIO_fileno(IoIFP(io)), how) >= 0 );
@@ -3789,9 +3780,6 @@ PP(pp_open_dir)
GV * const gv = MUTABLE_GV(POPs);
IO * const io = GvIOn(gv);
- if (!io)
- goto nope;
-
if ((IoIFP(io) || IoOFP(io)))
Perl_ck_warner_d(aTHX_ packWARN2(WARN_IO, WARN_DEPRECATED),
"Opening filehandle %"HEKf" also as a directory",
@@ -3828,7 +3816,7 @@ PP(pp_readdir)
const Direntry_t *dp;
IO * const io = GvIOn(gv);
- if (!io || !IoDIRP(io)) {
+ if (!IoDIRP(io)) {
Perl_ck_warner(aTHX_ packWARN(WARN_IO),
"readdir() attempted on invalid dirhandle %"HEKf,
HEKfARG(GvENAME_HEK(gv)));
@@ -3878,7 +3866,7 @@ PP(pp_telldir)
GV * const gv = MUTABLE_GV(POPs);
IO * const io = GvIOn(gv);
- if (!io || !IoDIRP(io)) {
+ if (!IoDIRP(io)) {
Perl_ck_warner(aTHX_ packWARN(WARN_IO),
"telldir() attempted on invalid dirhandle %"HEKf,
HEKfARG(GvENAME_HEK(gv)));
@@ -3904,7 +3892,7 @@ PP(pp_seekdir)
GV * const gv = MUTABLE_GV(POPs);
IO * const io = GvIOn(gv);
- if (!io || !IoDIRP(io)) {
+ if (!IoDIRP(io)) {
Perl_ck_warner(aTHX_ packWARN(WARN_IO),
"seekdir() attempted on invalid dirhandle %"HEKf,
HEKfARG(GvENAME_HEK(gv)));
@@ -3929,7 +3917,7 @@ PP(pp_rewinddir)
GV * const gv = MUTABLE_GV(POPs);
IO * const io = GvIOn(gv);
- if (!io || !IoDIRP(io)) {
+ if (!IoDIRP(io)) {
Perl_ck_warner(aTHX_ packWARN(WARN_IO),
"rewinddir() attempted on invalid dirhandle %"HEKf,
HEKfARG(GvENAME_HEK(gv)));
@@ -3953,7 +3941,7 @@ PP(pp_closedir)
GV * const gv = MUTABLE_GV(POPs);
IO * const io = GvIOn(gv);
- if (!io || !IoDIRP(io)) {
+ if (!IoDIRP(io)) {
Perl_ck_warner(aTHX_ packWARN(WARN_IO),
"closedir() attempted on invalid dirhandle %"HEKf,
HEKfARG(GvENAME_HEK(gv)));