]> Sergey Matveev's repositories - public-inbox.git/blobdiff - lib/PublicInbox/GitCatFile.pm
GitCatFile: use offset for read instead of appending
[public-inbox.git] / lib / PublicInbox / GitCatFile.pm
index 8bc6a238d2ae2c8f09c5062091e2ae140245d0c6..9bffce2aa2a727db21e1e42431dafc66310133c2 100644 (file)
@@ -68,17 +68,17 @@ sub cat_file {
 
        my $size = $1;
        my $bytes_left = $size;
-       my $buf;
+       my $offset = 0;
        my $rv = '';
 
        while ($bytes_left) {
-               my $read = read($in, $buf, $bytes_left);
-               defined($read) or die "read pipe failed: $!\n";
-               $rv .= $buf;
+               my $read = read($in, $rv, $bytes_left, $offset);
+               defined($read) or die "sysread pipe failed: $!\n";
                $bytes_left -= $read;
+               $offset += $read;
        }
 
-       my $read = read($in, $buf, 1);
+       my $read = read($in, my $buf, 1);
        defined($read) or die "read pipe failed: $!\n";
        if ($read != 1 || $buf ne "\n") {
                die "newline missing after blob\n";