X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fsort.c;h=8dad3566ccdcca1ad8e9fabf63ace81b42d7019f;hb=40271dcbfdecb01dfe808684741215eb2ddeb508;hp=80380e7d0ca41581396e94079e06d682b4d61b15;hpb=4de79b34b329d1da6cdeb145993d3efd911e2967;p=pspp-builds.git diff --git a/src/sort.c b/src/sort.c index 80380e7d..8dad3566 100644 --- a/src/sort.c +++ b/src/sort.c @@ -72,7 +72,7 @@ cmd_sort_cases (void) if (criteria == NULL) return CMD_FAILURE; - if (test_mode && lex_match ('/')) + if (get_testing_mode () && lex_match ('/')) { if (!lex_force_match_id ("BUFFERS") || !lex_match ('=') || !lex_force_int ()) @@ -195,7 +195,7 @@ do_internal_sort (struct casereader *reader, dst = casefile_create (casefile_get_value_cnt (src)); if (case_cnt != 0) { - struct indexed_case *cases = malloc (sizeof *cases * case_cnt); + struct indexed_case *cases = nmalloc (sizeof *cases, case_cnt); if (cases != NULL) { unsigned long i; @@ -278,7 +278,7 @@ do_external_sort (struct casereader *reader, xsrt->value_cnt = casefile_get_value_cnt (casereader_get_casefile (reader)); xsrt->run_cap = 512; xsrt->run_cnt = 0; - xsrt->runs = xmalloc (sizeof *xsrt->runs * xsrt->run_cap); + xsrt->runs = xnmalloc (xsrt->run_cap, sizeof *xsrt->runs); if (write_runs (xsrt, reader)) { struct casefile *output = merge (xsrt); @@ -443,16 +443,17 @@ allocate_cases (struct initial_run_state *irs) approx_case_cost = (sizeof *irs->records + irs->xsrt->value_cnt * sizeof (union value) + 4 * sizeof (void *)); - max_cases = get_max_workspace() / approx_case_cost; + max_cases = get_workspace() / approx_case_cost; if (max_cases > max_buffers) max_cases = max_buffers; - irs->records = malloc (sizeof *irs->records * max_cases); - for (i = 0; i < max_cases; i++) - if (!case_try_create (&irs->records[i].record, irs->xsrt->value_cnt)) - { - max_cases = i; - break; - } + irs->records = nmalloc (sizeof *irs->records, max_cases); + if (irs->records != NULL) + for (i = 0; i < max_cases; i++) + if (!case_try_create (&irs->records[i].record, irs->xsrt->value_cnt)) + { + max_cases = i; + break; + } irs->record_cap = max_cases; /* Fail if we didn't allocate an acceptable number of cases. */ @@ -461,7 +462,7 @@ allocate_cases (struct initial_run_state *irs) msg (SE, _("Out of memory. Could not allocate room for minimum of %d " "cases of %d bytes each. (PSPP workspace is currently " "restricted to a maximum of %d KB.)"), - min_buffers, approx_case_cost, get_max_workspace() / 1024); + min_buffers, approx_case_cost, get_workspace() / 1024); return 0; } return 1; @@ -548,8 +549,8 @@ end_run (struct initial_run_state *irs) if (xsrt->run_cnt >= xsrt->run_cap) { xsrt->run_cap *= 2; - xsrt->runs = xrealloc (xsrt->runs, - sizeof *xsrt->runs * xsrt->run_cap); + xsrt->runs = xnrealloc (xsrt->runs, + xsrt->run_cap, sizeof *xsrt->runs); } xsrt->runs[xsrt->run_cnt++] = irs->casefile; irs->casefile = NULL; @@ -674,7 +675,7 @@ merge_once (struct external_sort *xsrt, int i; /* Open input files. */ - runs = xmalloc (sizeof *runs * run_cnt); + runs = xnmalloc (run_cnt, sizeof *runs); for (i = 0; i < run_cnt; i++) { struct run *r = &runs[i];