| | |
| | fseek( $fileHandle, $baseOffset ); |
| | - $base = $this->readPackEntry( $fileHandle, $baseOffset, $baseSize ); |
| | + $base = $this->readPackEntry( $fileHandle, $baseOffset, $baseSize, $cap ); |
| | |
| | fseek( $fileHandle, $currentPos ); |
 |
| | private function handleRefDelta( $fileHandle, int $expectedSize, int $cap = 0 ): string { |
| | $baseSha = bin2hex( fread( $fileHandle, 20 ) ); |
| | - $base = $this->read( $baseSha ) ?? ''; |
| | + |
| | + if ( $cap > 0 ) { |
| | + $base = $this->peek( $baseSha, $cap ) ?? ''; |
| | + } else { |
| | + $base = $this->read( $baseSha ) ?? ''; |
| | + } |
| | |
| | $remainingBytes = min( self::MAX_READ, max( $expectedSize * 2, 1048576 ) ); |