Skip to content

Commit 095329e

Browse files
committed
Fix error handling in sam_read1 and sam_itr_next callbacks
1 parent f2814a6 commit 095329e

2 files changed

Lines changed: 7 additions & 18 deletions

File tree

lib/hts/bam/mpileup.rb

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -88,16 +88,11 @@ def initialize(inputs, region: nil, beg: nil, end_: nil, maxcnt: nil, overlaps:
8888
hts_fp = data.get_pointer(0 * ptr_size)
8989
hdr_struct = data.get_pointer(1 * ptr_size)
9090
itr = data.get_pointer(2 * ptr_size)
91+
# HTSlib contract: return same as sam_itr_next/sam_read1 (>= 0 on success, -1 on EOF, < -1 on error)
9192
if itr && !itr.null?
92-
r = HTS::LibHTS.sam_itr_next(hts_fp, itr, b)
93-
if r >= 0
94-
0
95-
else
96-
(r == -1 ? -1 : -2)
97-
end
93+
HTS::LibHTS.sam_itr_next(hts_fp, itr, b)
9894
else
99-
r = HTS::LibHTS.sam_read1(hts_fp, hdr_struct, b)
100-
r == -1 ? -1 : 0
95+
HTS::LibHTS.sam_read1(hts_fp, hdr_struct, b)
10196
end
10297
end
10398

lib/hts/bam/pileup.rb

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -116,19 +116,13 @@ def initialize(bam, region: nil, beg: nil, end_: nil, maxcnt: nil)
116116

117117
@cb = if itr_local && !itr_local.null?
118118
FFI::Function.new(:int, %i[pointer pointer]) do |_data, b|
119-
# HTSlib contract: sam_itr_next returns >= 0 on success, -1 on EOF, < -1 on error.
120-
r = HTS::LibHTS.sam_itr_next(hts_fp, itr_local, b)
121-
if r >= 0
122-
0
123-
else
124-
(r == -1 ? -1 : -2)
125-
end
119+
# HTSlib contract: return same as sam_itr_next (>= 0 on success, -1 on EOF, < -1 on error)
120+
HTS::LibHTS.sam_itr_next(hts_fp, itr_local, b)
126121
end
127122
else
128123
FFI::Function.new(:int, %i[pointer pointer]) do |_data, b|
129-
# HTSlib contract: sam_read1 returns >= 0 on success, -1 on EOF/error.
130-
r = HTS::LibHTS.sam_read1(hts_fp, hdr_struct, b)
131-
r == -1 ? -1 : 0
124+
# HTSlib contract: return same as sam_read1 (>= 0 on success, -1 on EOF, < -1 on error)
125+
HTS::LibHTS.sam_read1(hts_fp, hdr_struct, b)
132126
end
133127
end
134128

0 commit comments

Comments
 (0)