This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
pp_readline,close,getc: explain NULL stack arg
authorDavid Mitchell <davem@iabyn.com>
Fri, 14 Jul 2017 14:23:29 +0000 (15:23 +0100)
committerDavid Mitchell <davem@iabyn.com>
Thu, 27 Jul 2017 10:30:23 +0000 (11:30 +0100)
add code comments to explain why these functions can sometimes be called
with a NULL pointer on the stack.

(feature introduced by v5.15.2-112-g30901a8)

pp_hot.c
pp_sys.c

index 63371a0..da514e2 100644 (file)
--- a/pp_hot.c
+++ b/pp_hot.c
@@ -433,6 +433,8 @@ PP(pp_padsv)
 PP(pp_readline)
 {
     dSP;
+    /* pp_coreargs pushes a NULL to indicate no args passed to
+     * CORE::readline() */
     if (TOPs) {
        SvGETMAGIC(TOPs);
        tryAMAGICunTARGETlist(iter_amg, 0);
index c8e7a9f..e3aee18 100644 (file)
--- a/pp_sys.c
+++ b/pp_sys.c
@@ -664,6 +664,8 @@ PP(pp_open)
 PP(pp_close)
 {
     dSP;
+    /* pp_coreargs pushes a NULL to indicate no args passed to
+     * CORE::close() */
     GV * const gv =
        MAXARG == 0 || (!TOPs && !POPs) ? PL_defoutgv : MUTABLE_GV(POPs);
 
@@ -1369,6 +1371,8 @@ PP(pp_select)
 PP(pp_getc)
 {
     dSP; dTARGET;
+    /* pp_coreargs pushes a NULL to indicate no args passed to
+     * CORE::getc() */
     GV * const gv =
        MAXARG==0 || (!TOPs && !POPs) ? PL_stdingv : MUTABLE_GV(POPs);
     IO *const io = GvIO(gv);