| Author | Dave Jarvis <email> |
|---|---|
| Date | 2026-02-21 11:19:24 GMT-0800 |
| Commit | fbed27e754d9ac75c245679fba0563999cd91d84 |
| Parent | 69edb8d |
| } | ||
| + public function readDeltaBaseSize( mixed $handle ): int { | ||
| + $stream = CompressionStream::createInflater(); | ||
| + $head = ''; | ||
| + $try = 0; | ||
| + | ||
| + foreach( $stream->stream( $handle, 512 ) as $out ) { | ||
| + $head .= $out; | ||
| + $try++; | ||
| + | ||
| + if( strlen( $head ) >= 32 || $try >= 64 ) { | ||
| + break; | ||
| + } | ||
| + } | ||
| + | ||
| + $pos = 0; | ||
| + $result = 0; | ||
| + | ||
| + if( strlen( $head ) > 0 ) { | ||
| + $res = $this->readDeltaSize( $head, $pos ); | ||
| + $result = $res['val']; | ||
| + } | ||
| + | ||
| + return $result; | ||
| + } | ||
| + | ||
| private function parseCopyInstruction( | ||
| int $op, |
| $neg = $this->readOffsetDelta( $handle ); | ||
| $deltaPos = ftell( $handle ); | ||
| - $baseSize = $this->getSize( $pool, $packFile, $offset - $neg ); | ||
| + $baseSize = $this->decoder->readDeltaBaseSize( $handle ); | ||
| if( $baseSize > self::MAX_BASE_RAM ) { | ||
| } else { | ||
| $baseSha = bin2hex( fread( $handle, 20 ) ); | ||
| - $baseSize = $getSizeShaFn( $baseSha ); | ||
| + $deltaPos = ftell( $handle ); | ||
| + $baseSize = $this->decoder->readDeltaBaseSize( $handle ); | ||
| if( $baseSize > self::MAX_BASE_RAM ) { | ||
| if( $written ) { | ||
| rewind( $tmpHandle ); | ||
| + | ||
| + fseek( $handle, $deltaPos ); | ||
| yield from $this->decoder->applyStreamGenerator( | ||
| if( $written ) { | ||
| + fseek( $handle, $deltaPos ); | ||
| + | ||
| yield from $this->decoder->applyStreamGenerator( | ||
| $handle, | ||
| Delta | 32 lines added, 2 lines removed, 30-line increase |
|---|