@@ -203,7 +203,7 @@ impl Reader {
203203 let header = unsafe { htslib:: bcf_hdr_read ( htsfile) } ;
204204 Ok ( Reader {
205205 inner : htsfile,
206- header : Arc :: new ( HeaderView :: new ( header) ) ,
206+ header : Arc :: new ( unsafe { HeaderView :: from_ptr ( header) } ) ,
207207 } )
208208 }
209209}
@@ -299,9 +299,11 @@ impl IndexedReader {
299299 } // 0: BCF_SR_REQUIRE_IDX
300300 // Attach a file with the path from the arguments.
301301 if unsafe { htslib:: bcf_sr_add_reader ( ser_reader, path. as_ptr ( ) ) } >= 0 {
302- let header = Arc :: new ( HeaderView :: new ( unsafe {
303- htslib:: bcf_hdr_dup ( ( * ( * ser_reader) . readers . offset ( 0 ) ) . header )
304- } ) ) ;
302+ let header = Arc :: new ( unsafe {
303+ HeaderView :: from_ptr ( htslib:: bcf_hdr_dup (
304+ ( * ( * ser_reader) . readers . offset ( 0 ) ) . header ,
305+ ) )
306+ } ) ;
305307 Ok ( IndexedReader {
306308 inner : ser_reader,
307309 header,
@@ -501,9 +503,11 @@ pub mod synced {
501503 }
502504
503505 let i = ( self . reader_count ( ) - 1 ) as isize ;
504- let header = Arc :: new ( HeaderView :: new ( unsafe {
505- crate :: htslib:: bcf_hdr_dup ( ( * ( * self . inner ) . readers . offset ( i) ) . header )
506- } ) ) ;
506+ let header = Arc :: new ( unsafe {
507+ HeaderView :: from_ptr ( crate :: htslib:: bcf_hdr_dup (
508+ ( * ( * self . inner ) . readers . offset ( i) ) . header ,
509+ ) )
510+ } ) ;
507511 self . headers . push ( header) ;
508512 Ok ( ( ) )
509513 }
@@ -708,9 +712,7 @@ impl Writer {
708712 unsafe { htslib:: bcf_hdr_write ( htsfile, header. inner ) } ;
709713 Ok ( Writer {
710714 inner : htsfile,
711- header : Arc :: new ( HeaderView :: new ( unsafe {
712- htslib:: bcf_hdr_dup ( header. inner )
713- } ) ) ,
715+ header : Arc :: new ( unsafe { HeaderView :: from_ptr ( htslib:: bcf_hdr_dup ( header. inner ) ) } ) ,
714716 subset : header. subset . clone ( ) ,
715717 } )
716718 }
0 commit comments