| | yield $head; |
| | |
| | - if( !empty( $objs ) ) { |
| | - foreach( $objs as $sha => $type ) { |
| | - $cont = $this->read( $sha ); |
| | - $size = strlen( $cont ); |
| | - $byte = $type << 4 | $size & 0x0f; |
| | - $size >>= 4; |
| | - $data = ''; |
| | + foreach( $objs as $sha => $type ) { |
| | + $cont = ''; |
| | + $size = $this->getObjectSize( $sha ); |
| | |
| | - while( $size > 0 ) { |
| | - $data .= chr( $byte | 0x80 ); |
| | - $byte = $size & 0x7f; |
| | - $size >>= 7; |
| | - } |
| | + $this->slurp( $sha, function( $chunk ) use ( &$cont ) { |
| | + $cont .= $chunk; |
| | + } ); |
| | |
| | - $data .= chr( $byte ) . gzcompress( $cont ); |
| | + $byte = $type << 4 | $size & 0x0f; |
| | + $size >>= 4; |
| | + $data = ''; |
| | |
| | - hash_update( $ctx, $data ); |
| | - yield $data; |
| | + while( $size > 0 ) { |
| | + $data .= chr( $byte | 0x80 ); |
| | + $byte = $size & 0x7f; |
| | + $size >>= 7; |
| | } |
| | + |
| | + $data .= chr( $byte ) . gzcompress( $cont ); |
| | + |
| | + hash_update( $ctx, $data ); |
| | + yield $data; |
| | } |
| | |