]> Sergey Matveev's repositories - public-inbox.git/blobdiff - lib/PublicInbox/Mbox.pm
www: rework query responses to avoid COUNT in SQLite
[public-inbox.git] / lib / PublicInbox / Mbox.pm
index 1b68f027157fc0d6b87f97724cdb0eece696fcea..05de6be1a678f75ac258b24233c9f52d8c7a585f 100644 (file)
@@ -217,12 +217,12 @@ sub set_filename ($$) {
 sub getline {
        my ($self) = @_;
        my $ctx = $self->{ctx} or return;
-       my $res;
        my $ibx = $ctx->{-inbox};
        my $gz = $self->{gz};
+       my $msgs = $self->{msgs};
        do {
                # work on existing result set
-               while (defined(my $smsg = shift @{$self->{msgs}})) {
+               while (defined(my $smsg = shift @$msgs)) {
                        my $msg = eval { $ibx->msg_by_smsg($smsg) } or next;
                        $msg = Email::Simple->new($msg);
                        $gz->write(PublicInbox::Mbox::msg_str($ctx, $msg,
@@ -247,11 +247,9 @@ sub getline {
                }
 
                # refill result set
-               $res = $self->{cb}->($self->{opts});
-               $self->{msgs} = $res->{msgs};
-               $res = scalar @{$self->{msgs}};
-               $self->{opts}->{offset} += $res;
-       } while ($res);
+               $msgs = $self->{msgs} = $self->{cb}->($self->{opts});
+               $self->{opts}->{offset} += scalar @$msgs;
+       } while (@$msgs);
        $gz->close;
        delete $self->{ctx};
        ${delete $self->{buf}};