about summary refs log tree commit homepage
diff options
context:
space:
mode:
-rw-r--r--lib/PublicInbox/CompressNoop.pm4
-rw-r--r--lib/PublicInbox/GzipFilter.pm9
-rw-r--r--lib/PublicInbox/ViewVCS.pm2
3 files changed, 7 insertions, 8 deletions
diff --git a/lib/PublicInbox/CompressNoop.pm b/lib/PublicInbox/CompressNoop.pm
index e3301473..5135299f 100644
--- a/lib/PublicInbox/CompressNoop.pm
+++ b/lib/PublicInbox/CompressNoop.pm
@@ -1,4 +1,4 @@
-# Copyright (C) 2020-2021 all contributors <meta@public-inbox.org>
+# Copyright (C) all contributors <meta@public-inbox.org>
 # License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt>
 
 # Provide the same methods as Compress::Raw::Zlib::Deflate but
@@ -10,7 +10,7 @@ use Compress::Raw::Zlib qw(Z_OK);
 sub new { bless \(my $self), __PACKAGE__ }
 
 sub deflate { # ($self, $input, $output)
-        $_[2] .= $_[1];
+        $_[2] .= ref($_[1]) ? ${$_[1]} : $_[1];
         Z_OK;
 }
 
diff --git a/lib/PublicInbox/GzipFilter.pm b/lib/PublicInbox/GzipFilter.pm
index 86d34183..75ba625e 100644
--- a/lib/PublicInbox/GzipFilter.pm
+++ b/lib/PublicInbox/GzipFilter.pm
@@ -140,8 +140,8 @@ sub zmore {
         my $self = $_[0]; # $_[1] => input
         http_out($self);
         my $err;
-        for (1..$#_) {
-                $err = $self->{gz}->deflate($_[$_], $self->{zbuf});
+        for (delete $self->{obuf}, @_[1..$#_]) {
+                $err = $self->{gz}->deflate($_ // next, $self->{zbuf});
                 die "gzip->deflate: $err" if $err != Z_OK;
         }
         undef;
@@ -153,8 +153,9 @@ sub zflush ($;@) {
         my $zbuf = delete $self->{zbuf};
         my $gz = delete $self->{gz};
         my $err;
-        for (1..$#_) { # it's a bug iff $gz is undef w/ $_[1..]
-                $err = $gz->deflate($_[$_], $zbuf);
+        # it's a bug iff $gz is undef w/ $obuf or $_[1..]
+        for (delete $self->{obuf}, @_[1..$#_]) {
+                $err = $gz->deflate($_ // next, $zbuf);
                 die "gzip->deflate: $err" if $err != Z_OK;
         }
         $gz // return ''; # not a bug, recursing on DS->write failure
diff --git a/lib/PublicInbox/ViewVCS.pm b/lib/PublicInbox/ViewVCS.pm
index 3b4fa393..ed4a6454 100644
--- a/lib/PublicInbox/ViewVCS.pm
+++ b/lib/PublicInbox/ViewVCS.pm
@@ -210,8 +210,6 @@ EOM
                 $x =~ s/\r?\n/\n/gs;
                 $ctx->{-anchors} = {} if $x =~ /^diff --git /sm;
                 flush_diff($ctx, \$x); # undefs $x
-                $ctx->zmore($bdy);
-                undef $bdy;
                 # TODO: should there be another textarea which attempts to
                 # search for the exact email which was applied to make this
                 # commit?