about summary refs log tree commit homepage
path: root/lib/PublicInbox/NNTP.pm
diff options
context:
space:
mode:
authorEric Wong <e@yhbt.net>2020-01-12 21:17:51 +0000
committerEric Wong <e@yhbt.net>2020-01-13 23:21:25 +0000
commita65ebdc3a1f064bab0cddf64b34caad49f1c4c9c (patch)
tree2f3dea59884e4d6ee37393abd5f3a901593f4b79 /lib/PublicInbox/NNTP.pm
parent8f23c134b6c9bfc9f23b3eed7811082e6d33a84c (diff)
downloadpublic-inbox-a65ebdc3a1f064bab0cddf64b34caad49f1c4c9c.tar.gz
We can rely on autovification to turn `undef' value of {wbuf}
into an arrayref.

Furthermore, "push" returns the (new) size of the array since at
least Perl 5.0 (I didn't look further back), so we can use that
return value instead of calling "scalar" again.
Diffstat (limited to 'lib/PublicInbox/NNTP.pm')
-rw-r--r--lib/PublicInbox/NNTP.pm11
1 files changed, 5 insertions, 6 deletions
diff --git a/lib/PublicInbox/NNTP.pm b/lib/PublicInbox/NNTP.pm
index 9f0dfaaa..35729f00 100644
--- a/lib/PublicInbox/NNTP.pm
+++ b/lib/PublicInbox/NNTP.pm
@@ -616,20 +616,19 @@ sub long_step {
                 # each other's data
                 $self->zflush;
 
-                # no recursion, schedule another call ASAP
-                # but only after all pending writes are done
-                my $wbuf = $self->{wbuf} ||= [];
-                push @$wbuf, \&long_step;
+                # no recursion, schedule another call ASAP, but only after
+                # all pending writes are done.  autovivify wbuf:
+                my $new_size = push(@{$self->{wbuf}}, \&long_step);
 
                 # wbuf may be populated by $cb, no need to rearm if so:
-                $self->requeue if scalar(@$wbuf) == 1;
+                $self->requeue if $new_size == 1;
         } else { # all done!
                 delete $self->{long_cb};
                 res($self, '.');
                 my $elapsed = now() - $t0;
                 my $fd = fileno($self->{sock});
                 out($self, " deferred[$fd] done - %0.6f", $elapsed);
-                my $wbuf = $self->{wbuf};
+                my $wbuf = $self->{wbuf}; # do NOT autovivify
                 $self->requeue unless $wbuf && @$wbuf;
         }
 }