@@ -494,13 +494,13 @@ mm_idx_t *mm_idx_load(FILE *fp)
494
494
for (i = 0 ; i < mi -> n_seq ; ++ i ) {
495
495
uint8_t l ;
496
496
mm_idx_seq_t * s = & mi -> seq [i ];
497
- fread (& l , 1 , 1 , fp );
497
+ if ( fread (& l , 1 , 1 , fp ) == 0 ) { free ( mi -> seq ); free ( mi ); return 0 ; }
498
498
if (l ) {
499
499
s -> name = (char * )kmalloc (mi -> km , l + 1 );
500
500
fread (s -> name , 1 , l , fp );
501
501
s -> name [l ] = 0 ;
502
502
}
503
- fread (& s -> len , 4 , 1 , fp );
503
+ if ( fread (& s -> len , 4 , 1 , fp ) == 0 ) { free ( mi -> seq ); free ( mi ); return 0 ; }
504
504
s -> offset = sum_len ;
505
505
s -> is_alt = 0 ;
506
506
sum_len += s -> len ;
@@ -510,25 +510,25 @@ mm_idx_t *mm_idx_load(FILE *fp)
510
510
uint32_t j , size ;
511
511
khint_t k ;
512
512
idxhash_t * h ;
513
- fread (& b -> n , 4 , 1 , fp );
513
+ if ( fread (& b -> n , 4 , 1 , fp ) == 0 ) { free ( mi -> seq ); free ( mi ); return 0 ; }
514
514
b -> p = (uint64_t * )malloc (b -> n * 8 );
515
- fread (b -> p , 8 , b -> n , fp );
516
- fread (& size , 4 , 1 , fp );
515
+ if ( fread (b -> p , 8 , b -> n , fp ) == 0 ) { free ( mi -> seq ); free ( mi ); return 0 ; }
516
+ if ( fread (& size , 4 , 1 , fp ) == 0 ) { free ( mi -> seq ); free ( mi ); return 0 ; }
517
517
if (size == 0 ) continue ;
518
518
b -> h = h = kh_init (idx );
519
519
kh_resize (idx , h , size );
520
520
for (j = 0 ; j < size ; ++ j ) {
521
521
uint64_t x [2 ];
522
522
int absent ;
523
- fread (x , 8 , 2 , fp );
523
+ if ( fread (x , 8 , 2 , fp ) == 0 ) { free ( mi -> seq ); free ( mi ); return 0 ; }
524
524
k = kh_put (idx , h , x [0 ], & absent );
525
525
assert (absent );
526
526
kh_val (h , k ) = x [1 ];
527
527
}
528
528
}
529
529
if (!(mi -> flag & MM_I_NO_SEQ )) {
530
530
mi -> S = (uint32_t * )malloc ((sum_len + 7 ) / 8 * 4 );
531
- fread (mi -> S , 4 , (sum_len + 7 ) / 8 , fp );
531
+ if ( fread (mi -> S , 4 , (sum_len + 7 ) / 8 , fp ) == 0 ) { free ( mi -> seq ); free ( mi ); return 0 ; }
532
532
}
533
533
return mi ;
534
534
}
0 commit comments