37
37
#include "kseq.h"
38
38
KSEQ_DECLARE (gzFile )
39
39
40
+ #ifdef USE_MALLOC_WRAPPERS
41
+ # include "malloc_wrap.h"
42
+ #endif
43
+
40
44
unsigned char nst_nt4_table [256 ] = {
41
45
4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 ,
42
46
4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 ,
@@ -97,21 +101,21 @@ bntseq_t *bns_restore_core(const char *ann_filename, const char* amb_filename, c
97
101
long long xx ;
98
102
int i ;
99
103
int scanres ;
100
- bns = (bntseq_t * )xcalloc (1 , sizeof (bntseq_t ));
104
+ bns = (bntseq_t * )calloc (1 , sizeof (bntseq_t ));
101
105
{ // read .ann
102
106
fp = xopen (fname = ann_filename , "r" );
103
107
scanres = fscanf (fp , "%lld%d%u" , & xx , & bns -> n_seqs , & bns -> seed );
104
108
if (scanres != 3 ) goto badread ;
105
109
bns -> l_pac = xx ;
106
- bns -> anns = (bntann1_t * )xcalloc (bns -> n_seqs , sizeof (bntann1_t ));
110
+ bns -> anns = (bntann1_t * )calloc (bns -> n_seqs , sizeof (bntann1_t ));
107
111
for (i = 0 ; i < bns -> n_seqs ; ++ i ) {
108
112
bntann1_t * p = bns -> anns + i ;
109
113
char * q = str ;
110
114
int c ;
111
115
// read gi and sequence name
112
116
scanres = fscanf (fp , "%u%s" , & p -> gi , str );
113
117
if (scanres != 2 ) goto badread ;
114
- p -> name = xstrdup (str );
118
+ p -> name = strdup (str );
115
119
// read fasta comments
116
120
while (str - q < sizeof (str ) - 1 && (c = fgetc (fp )) != '\n' && c != EOF ) * q ++ = c ;
117
121
while (c != '\n' && c != EOF ) c = fgetc (fp );
@@ -120,8 +124,8 @@ bntseq_t *bns_restore_core(const char *ann_filename, const char* amb_filename, c
120
124
goto badread ;
121
125
}
122
126
* q = 0 ;
123
- if (q - str > 1 ) p -> anno = xstrdup (str + 1 ); // skip leading space
124
- else p -> anno = xstrdup ("" );
127
+ if (q - str > 1 ) p -> anno = strdup (str + 1 ); // skip leading space
128
+ else p -> anno = strdup ("" );
125
129
// read the rest
126
130
scanres = fscanf (fp , "%lld%d%d" , & xx , & p -> len , & p -> n_ambs );
127
131
if (scanres != 3 ) goto badread ;
@@ -137,7 +141,7 @@ bntseq_t *bns_restore_core(const char *ann_filename, const char* amb_filename, c
137
141
if (scanres != 3 ) goto badread ;
138
142
l_pac = xx ;
139
143
xassert (l_pac == bns -> l_pac && n_seqs == bns -> n_seqs , "inconsistent .ann and .amb files." );
140
- bns -> ambs = bns -> n_holes ? (bntamb1_t * )xcalloc (bns -> n_holes , sizeof (bntamb1_t )) : 0 ;
144
+ bns -> ambs = bns -> n_holes ? (bntamb1_t * )calloc (bns -> n_holes , sizeof (bntamb1_t )) : 0 ;
141
145
for (i = 0 ; i < bns -> n_holes ; ++ i ) {
142
146
bntamb1_t * p = bns -> ambs + i ;
143
147
scanres = fscanf (fp , "%lld%d%s" , & xx , & p -> len , str );
@@ -193,11 +197,11 @@ static uint8_t *add1(const kseq_t *seq, bntseq_t *bns, uint8_t *pac, int64_t *m_
193
197
int i , lasts ;
194
198
if (bns -> n_seqs == * m_seqs ) {
195
199
* m_seqs <<= 1 ;
196
- bns -> anns = (bntann1_t * )xrealloc (bns -> anns , * m_seqs * sizeof (bntann1_t ));
200
+ bns -> anns = (bntann1_t * )realloc (bns -> anns , * m_seqs * sizeof (bntann1_t ));
197
201
}
198
202
p = bns -> anns + bns -> n_seqs ;
199
- p -> name = xstrdup ((char * )seq -> name .s );
200
- p -> anno = seq -> comment .s ? xstrdup ((char * )seq -> comment .s ) : xstrdup ("(null)" );
203
+ p -> name = strdup ((char * )seq -> name .s );
204
+ p -> anno = seq -> comment .s ? strdup ((char * )seq -> comment .s ) : strdup ("(null)" );
201
205
p -> gi = 0 ; p -> len = seq -> seq .l ;
202
206
p -> offset = (bns -> n_seqs == 0 )? 0 : (p - 1 )-> offset + (p - 1 )-> len ;
203
207
p -> n_ambs = 0 ;
@@ -209,7 +213,7 @@ static uint8_t *add1(const kseq_t *seq, bntseq_t *bns, uint8_t *pac, int64_t *m_
209
213
} else {
210
214
if (bns -> n_holes == * m_holes ) {
211
215
(* m_holes ) <<= 1 ;
212
- bns -> ambs = (bntamb1_t * )xrealloc (bns -> ambs , (* m_holes ) * sizeof (bntamb1_t ));
216
+ bns -> ambs = (bntamb1_t * )realloc (bns -> ambs , (* m_holes ) * sizeof (bntamb1_t ));
213
217
}
214
218
* q = bns -> ambs + bns -> n_holes ;
215
219
(* q )-> len = 1 ;
@@ -224,7 +228,7 @@ static uint8_t *add1(const kseq_t *seq, bntseq_t *bns, uint8_t *pac, int64_t *m_
224
228
if (c >= 4 ) c = lrand48 ()& 3 ;
225
229
if (bns -> l_pac == * m_pac ) { // double the pac size
226
230
* m_pac <<= 1 ;
227
- pac = xrealloc (pac , * m_pac /4 );
231
+ pac = realloc (pac , * m_pac /4 );
228
232
memset (pac + bns -> l_pac /4 , 0 , (* m_pac - bns -> l_pac )/4 );
229
233
}
230
234
_set_pac (pac , bns -> l_pac , c );
@@ -249,21 +253,21 @@ int64_t bns_fasta2bntseq(gzFile fp_fa, const char *prefix, int for_only)
249
253
250
254
// initialization
251
255
seq = kseq_init (fp_fa );
252
- bns = (bntseq_t * )xcalloc (1 , sizeof (bntseq_t ));
256
+ bns = (bntseq_t * )calloc (1 , sizeof (bntseq_t ));
253
257
bns -> seed = 11 ; // fixed seed for random generator
254
258
srand48 (bns -> seed );
255
259
m_seqs = m_holes = 8 ; m_pac = 0x10000 ;
256
- bns -> anns = (bntann1_t * )xcalloc (m_seqs , sizeof (bntann1_t ));
257
- bns -> ambs = (bntamb1_t * )xcalloc (m_holes , sizeof (bntamb1_t ));
258
- pac = xcalloc (m_pac /4 , 1 );
260
+ bns -> anns = (bntann1_t * )calloc (m_seqs , sizeof (bntann1_t ));
261
+ bns -> ambs = (bntamb1_t * )calloc (m_holes , sizeof (bntamb1_t ));
262
+ pac = calloc (m_pac /4 , 1 );
259
263
q = bns -> ambs ;
260
264
strcpy (name , prefix ); strcat (name , ".pac" );
261
265
fp = xopen (name , "wb" );
262
266
// read sequences
263
267
while (kseq_read (seq ) >= 0 ) pac = add1 (seq , bns , pac , & m_pac , & m_seqs , & m_holes , & q );
264
268
if (!for_only ) { // add the reverse complemented sequence
265
269
m_pac = (bns -> l_pac * 2 + 3 ) / 4 * 4 ;
266
- pac = xrealloc (pac , m_pac /4 );
270
+ pac = realloc (pac , m_pac /4 );
267
271
memset (pac + (bns -> l_pac + 3 )/4 , 0 , (m_pac - (bns -> l_pac + 3 )/4 * 4 ) / 4 );
268
272
for (l = bns -> l_pac - 1 ; l >= 0 ; -- l , ++ bns -> l_pac )
269
273
_set_pac (pac , bns -> l_pac , 3 - _get_pac (pac , l ));
@@ -357,7 +361,7 @@ uint8_t *bns_get_seq(int64_t l_pac, const uint8_t *pac, int64_t beg, int64_t end
357
361
if (beg >= l_pac || end <= l_pac ) {
358
362
int64_t k , l = 0 ;
359
363
* len = end - beg ;
360
- seq = xmalloc (end - beg );
364
+ seq = malloc (end - beg );
361
365
if (beg >= l_pac ) { // reverse strand
362
366
int64_t beg_f = (l_pac <<1 ) - 1 - end ;
363
367
int64_t end_f = (l_pac <<1 ) - 1 - beg ;
0 commit comments