@@ -516,13 +516,13 @@ mm_idx_t *mm_idx_load(FILE *fp)
516
516
for (i = 0 ; i < mi -> n_seq ; ++ i ) {
517
517
uint8_t l ;
518
518
mm_idx_seq_t * s = & mi -> seq [i ];
519
- fread (& l , 1 , 1 , fp );
519
+ if ( fread (& l , 1 , 1 , fp ) == 0 ) { free ( mi -> seq ); free ( mi ); return 0 ; }
520
520
if (l ) {
521
521
s -> name = (char * )kmalloc (mi -> km , l + 1 );
522
522
fread (s -> name , 1 , l , fp );
523
523
s -> name [l ] = 0 ;
524
524
}
525
- fread (& s -> len , 4 , 1 , fp );
525
+ if ( fread (& s -> len , 4 , 1 , fp ) == 0 ) { free ( mi -> seq ); free ( mi ); return 0 ; }
526
526
s -> offset = sum_len ;
527
527
s -> is_alt = 0 ;
528
528
sum_len += s -> len ;
@@ -532,25 +532,25 @@ mm_idx_t *mm_idx_load(FILE *fp)
532
532
uint32_t j , size ;
533
533
khint_t k ;
534
534
idxhash_t * h ;
535
- fread (& b -> n , 4 , 1 , fp );
535
+ if ( fread (& b -> n , 4 , 1 , fp ) == 0 ) { free ( mi -> seq ); free ( mi ); return 0 ; }
536
536
b -> p = (uint64_t * )malloc (b -> n * 8 );
537
- fread (b -> p , 8 , b -> n , fp );
538
- fread (& size , 4 , 1 , fp );
537
+ if ( fread (b -> p , 8 , b -> n , fp ) == 0 ) { free ( mi -> seq ); free ( mi ); return 0 ; }
538
+ if ( fread (& size , 4 , 1 , fp ) == 0 ) { free ( mi -> seq ); free ( mi ); return 0 ; }
539
539
if (size == 0 ) continue ;
540
540
b -> h = h = kh_init (idx );
541
541
kh_resize (idx , h , size );
542
542
for (j = 0 ; j < size ; ++ j ) {
543
543
uint64_t x [2 ];
544
544
int absent ;
545
- fread (x , 8 , 2 , fp );
545
+ if ( fread (x , 8 , 2 , fp ) == 0 ) { free ( mi -> seq ); free ( mi ); return 0 ; }
546
546
k = kh_put (idx , h , x [0 ], & absent );
547
547
assert (absent );
548
548
kh_val (h , k ) = x [1 ];
549
549
}
550
550
}
551
551
if (!(mi -> flag & MM_I_NO_SEQ )) {
552
552
mi -> S = (uint32_t * )malloc ((sum_len + 7 ) / 8 * 4 );
553
- fread (mi -> S , 4 , (sum_len + 7 ) / 8 , fp );
553
+ if ( fread (mi -> S , 4 , (sum_len + 7 ) / 8 , fp ) == 0 ) { free ( mi -> seq ); free ( mi ); return 0 ; }
554
554
}
555
555
return mi ;
556
556
}
0 commit comments