195 |
dst = casefile_create (casefile_get_value_cnt (src)); |
dst = casefile_create (casefile_get_value_cnt (src)); |
196 |
if (case_cnt != 0) |
if (case_cnt != 0) |
197 |
{ |
{ |
198 |
struct indexed_case *cases = malloc (sizeof *cases * case_cnt); |
struct indexed_case *cases = nmalloc (sizeof *cases, case_cnt); |
199 |
if (cases != NULL) |
if (cases != NULL) |
200 |
{ |
{ |
201 |
unsigned long i; |
unsigned long i; |
278 |
xsrt->value_cnt = casefile_get_value_cnt (casereader_get_casefile (reader)); |
xsrt->value_cnt = casefile_get_value_cnt (casereader_get_casefile (reader)); |
279 |
xsrt->run_cap = 512; |
xsrt->run_cap = 512; |
280 |
xsrt->run_cnt = 0; |
xsrt->run_cnt = 0; |
281 |
xsrt->runs = xmalloc (sizeof *xsrt->runs * xsrt->run_cap); |
xsrt->runs = xnmalloc (xsrt->run_cap, sizeof *xsrt->runs); |
282 |
if (write_runs (xsrt, reader)) |
if (write_runs (xsrt, reader)) |
283 |
{ |
{ |
284 |
struct casefile *output = merge (xsrt); |
struct casefile *output = merge (xsrt); |
446 |
max_cases = get_max_workspace() / approx_case_cost; |
max_cases = get_max_workspace() / approx_case_cost; |
447 |
if (max_cases > max_buffers) |
if (max_cases > max_buffers) |
448 |
max_cases = max_buffers; |
max_cases = max_buffers; |
449 |
irs->records = malloc (sizeof *irs->records * max_cases); |
irs->records = nmalloc (sizeof *irs->records, max_cases); |
450 |
for (i = 0; i < max_cases; i++) |
if (irs->records != NULL) |
451 |
if (!case_try_create (&irs->records[i].record, irs->xsrt->value_cnt)) |
for (i = 0; i < max_cases; i++) |
452 |
{ |
if (!case_try_create (&irs->records[i].record, irs->xsrt->value_cnt)) |
453 |
max_cases = i; |
{ |
454 |
break; |
max_cases = i; |
455 |
} |
break; |
456 |
|
} |
457 |
irs->record_cap = max_cases; |
irs->record_cap = max_cases; |
458 |
|
|
459 |
/* Fail if we didn't allocate an acceptable number of cases. */ |
/* Fail if we didn't allocate an acceptable number of cases. */ |
549 |
if (xsrt->run_cnt >= xsrt->run_cap) |
if (xsrt->run_cnt >= xsrt->run_cap) |
550 |
{ |
{ |
551 |
xsrt->run_cap *= 2; |
xsrt->run_cap *= 2; |
552 |
xsrt->runs = xrealloc (xsrt->runs, |
xsrt->runs = xnrealloc (xsrt->runs, |
553 |
sizeof *xsrt->runs * xsrt->run_cap); |
xsrt->run_cap, sizeof *xsrt->runs); |
554 |
} |
} |
555 |
xsrt->runs[xsrt->run_cnt++] = irs->casefile; |
xsrt->runs[xsrt->run_cnt++] = irs->casefile; |
556 |
irs->casefile = NULL; |
irs->casefile = NULL; |
675 |
int i; |
int i; |
676 |
|
|
677 |
/* Open input files. */ |
/* Open input files. */ |
678 |
runs = xmalloc (sizeof *runs * run_cnt); |
runs = xnmalloc (run_cnt, sizeof *runs); |
679 |
for (i = 0; i < run_cnt; i++) |
for (i = 0; i < run_cnt; i++) |
680 |
{ |
{ |
681 |
struct run *r = &runs[i]; |
struct run *r = &runs[i]; |