@@ -315,26 +315,32 @@ static int fix_ref(args_t *args, bcf1_t *line)
315315 // swap genotypes
316316 int ntmp = args -> ntmp_arr1 / sizeof (int32_t ); // reuse tmp_arr declared as uint8_t
317317 int ngts = bcf_get_genotypes (args -> hdr , line , & args -> tmp_arr1 , & ntmp );
318- args -> ntmp_arr1 = ntmp * sizeof (int32_t );
319- int32_t * gts = (int32_t * ) args -> tmp_arr1 ;
320318 int ni = 0 ;
321- for ( j = 0 ; j < ngts ; j ++ )
319+ if ( ngts > 0 )
322320 {
323- if ( gts [j ]== bcf_gt_unphased (0 ) ) { gts [j ] = bcf_gt_unphased (i ); ni ++ ; }
324- else if ( gts [j ]== bcf_gt_phased (0 ) ) { gts [j ] = bcf_gt_phased (i ); ni ++ ; }
325- else if ( gts [j ]== bcf_gt_unphased (i ) ) gts [j ] = bcf_gt_unphased (0 );
326- else if ( gts [j ]== bcf_gt_phased (i ) ) gts [j ] = bcf_gt_phased (0 );
321+ args -> ntmp_arr1 = ntmp * sizeof (int32_t );
322+ int32_t * gts = (int32_t * ) args -> tmp_arr1 ;
323+ for (j = 0 ; j < ngts ; j ++ )
324+ {
325+ if ( gts [j ]== bcf_gt_unphased (0 ) ) { gts [j ] = bcf_gt_unphased (i ); ni ++ ; }
326+ else if ( gts [j ]== bcf_gt_phased (0 ) ) { gts [j ] = bcf_gt_phased (i ); ni ++ ; }
327+ else if ( gts [j ]== bcf_gt_unphased (i ) ) gts [j ] = bcf_gt_unphased (0 );
328+ else if ( gts [j ]== bcf_gt_phased (i ) ) gts [j ] = bcf_gt_phased (0 );
329+ }
330+ bcf_update_genotypes (args -> out_hdr ,line ,gts ,ngts );
327331 }
328- bcf_update_genotypes (args -> out_hdr ,line ,gts ,ngts );
329332
330333 // update AC
331334 int nac = bcf_get_info_int32 (args -> hdr , line , "AC" , & args -> tmp_arr1 , & ntmp );
332- args -> ntmp_arr1 = ntmp * sizeof (int32_t );
333- if ( i <= nac )
335+ if ( nac > 0 )
334336 {
335- int32_t * ac = (int32_t * )args -> tmp_arr1 ;
336- ac [i - 1 ] = ni ;
337- bcf_update_info_int32 (args -> out_hdr , line , "AC" , ac , nac );
337+ args -> ntmp_arr1 = ntmp * sizeof (int32_t );
338+ if ( i <= nac )
339+ {
340+ int32_t * ac = (int32_t * )args -> tmp_arr1 ;
341+ ac [i - 1 ] = ni ;
342+ bcf_update_info_int32 (args -> out_hdr , line , "AC" , ac , nac );
343+ }
338344 }
339345 return 1 ;
340346}
0 commit comments