https://github.com/BioJulia/BGZFStreams.jl/issues/22
@ -15,6 +15,26 @@ import BioGenerics: isfilled, header
import GenomicFeatures: eachoverlap
# Overwrite `ensure_buffered_data` to address https://github.com/BioJulia/BGZFStreams.jl/issues/22.
@inline function BGZFStreams.ensure_buffered_data(stream)
#@assert stream.mode == READ_MODE
@label doit
while stream.block_index ≤ lastindex(stream.blocks)
@inbounds block = stream.blocks[stream.block_index]
if BGZFStreams.is_eof_block(block.compressed_block) # Note: `read_blocks!` does not necessarily fill/overwrite blocks till `lastindex(stream.blocks)`, we need to stop incrementing `stream.block_index` when an eof block is encountered.
break
end
if block.position ≤ block.size
return stream.block_index
stream.block_index += 1
if !BGZFStreams.eof(stream.io)
BGZFStreams.read_blocks!(stream)
@goto doit
return 0
include("bai.jl")
include("auxdata.jl")