]> Sergey Matveev's repositories - public-inbox.git/commitdiff
ds: favor `delete' over assigning fields to `undef'
authorEric Wong <e@80x24.org>
Mon, 24 Jun 2019 02:52:27 +0000 (02:52 +0000)
committerEric Wong <e@80x24.org>
Mon, 24 Jun 2019 05:26:26 +0000 (05:26 +0000)
This is cleaner in most cases and may allow Perl to reuse memory
from unused fields.

We can do this now that we no longer support Perl 5.8; since
Danga::Socket was written with struct-like pseudo-hash support
in mind, and Perl 5.9+ dropped support for pseudo-hashes over
a decade ago.

lib/PublicInbox/DS.pm
lib/PublicInbox/HTTP.pm
lib/PublicInbox/HTTPD/Async.pm
lib/PublicInbox/NNTP.pm

index f5986e55a014477c74a2f61270133fde0c90c762..482710f78a390cedfe6a1bdb0a4f9f8d5101d7c3 100644 (file)
@@ -23,6 +23,7 @@ use Time::HiRes qw(clock_gettime CLOCK_MONOTONIC);
 use parent qw(Exporter);
 our @EXPORT_OK = qw(now msg_more write_in_full);
 use warnings;
+use 5.010_001;
 
 use PublicInbox::Syscall qw(:epoll);
 
index 4738e15667a7cbda30c0ba2a4108661977b0dd02..9497205488d4f5c1628470bbfe1312163deecaa2 100644 (file)
@@ -118,8 +118,7 @@ sub read_input ($) {
 
        # env->{CONTENT_LENGTH} (identity)
        my $sock = $self->{sock};
-       my $len = $self->{input_left};
-       $self->{input_left} = undef;
+       my $len = delete $self->{input_left};
        my $rbuf = \($self->{rbuf});
        my $input = $env->{'psgi.input'};
 
@@ -246,8 +245,7 @@ sub next_request ($) {
 sub response_done_cb ($$) {
        my ($self, $alive) = @_;
        sub {
-               my $env = $self->{env};
-               $self->{env} = undef;
+               my $env = delete $self->{env};
                $self->write(\"0\r\n\r\n") if $alive == 2;
                $self->write(sub{$alive ? next_request($self) : $self->close});
        }
@@ -279,7 +277,7 @@ sub getline_cb ($$$) {
                }
        }
 
-       $self->{forward} = $self->{pull} = undef;
+       delete @$self{qw(forward pull)};
        # avoid recursion
        if ($forward) {
                eval { $forward->close };
@@ -370,8 +368,7 @@ sub read_input_chunked { # unlikely...
        my ($self) = @_;
        my $input = $self->{env}->{'psgi.input'};
        my $sock = $self->{sock};
-       my $len = $self->{input_left};
-       $self->{input_left} = undef;
+       my $len = delete $self->{input_left};
        my $rbuf = \($self->{rbuf});
 
        while (1) { # chunk start
@@ -442,11 +439,11 @@ sub quit {
 
 sub close {
        my $self = shift;
-       my $forward = $self->{forward};
-       my $env = $self->{env};
-       delete $env->{'psgix.io'} if $env; # prevent circular references
-       $self->{pull} = $self->{forward} = $self->{env} = undef;
-       if ($forward) {
+       if (my $env = delete $self->{env}) {
+               delete $env->{'psgix.io'}; # prevent circular references
+       }
+       delete $self->{pull};
+       if (my $forward = delete $self->{forward}) {
                eval { $forward->close };
                err($self, "forward ->close error: $@") if $@;
        }
index 9cc41f179e278ae9f54780f5c97aaa1bb298a513..bec4933712cf8d240638bfd4db7aa67c6fc970cb 100644 (file)
@@ -63,7 +63,7 @@ sub main_cb ($$$) {
 
                # Done! Error handling will happen in $fh->close
                # called by the {cleanup} handler
-               $http->{forward} = undef;
+               delete $http->{forward};
                $self->close;
        }
 }
@@ -81,12 +81,13 @@ sub event_step { $_[0]->{cb}->(@_) }
 
 sub close {
        my $self = shift;
-       my $cleanup = $self->{cleanup};
-       $self->{cleanup} = $self->{cb} = undef;
+       delete $self->{cb};
        $self->SUPER::close(@_);
 
        # we defer this to the next timer loop since close is deferred
-       PublicInbox::EvCleanup::next_tick($cleanup) if $cleanup;
+       if (my $cleanup = delete $self->{cleanup}) {
+               PublicInbox::EvCleanup::next_tick($cleanup);
+       }
 }
 
 1;
index fbdf1364ccb80423ea3f6811668148e737f26a65..6a582ea41397412253afb5503f79a23610c78c16 100644 (file)
@@ -624,7 +624,7 @@ sub long_response ($$) {
        $self->{long_res} = sub {
                my $more = eval { $cb->() };
                if ($@ || !$self->{sock}) { # something bad happened...
-                       $self->{long_res} = undef;
+                       delete $self->{long_res};
 
                        if ($@) {
                                err($self,
@@ -646,7 +646,7 @@ sub long_response ($$) {
                        push @$nextq, $self;
                        $nextt ||= PublicInbox::EvCleanup::asap(*next_tick);
                } else { # all done!
-                       $self->{long_res} = undef;
+                       delete $self->{long_res};
                        check_read($self);
                        res($self, '.');
                        out($self, " deferred[$fd] done - %0.6f", now() - $t0);