/[pspp]/pspp/src/sort.c
ViewVC logotype

Diff of /pspp/src/sort.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.31 by blp, Sun Jul 31 21:42:46 2005 UTC revision 1.32 by blp, Wed Oct 26 05:06:14 2005 UTC
# Line 195  do_internal_sort (struct casereader *rea Line 195  do_internal_sort (struct casereader *rea
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;
# Line 278  do_external_sort (struct casereader *rea Line 278  do_external_sort (struct casereader *rea
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);
# Line 446  allocate_cases (struct initial_run_state Line 446  allocate_cases (struct initial_run_state
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. */
# Line 548  end_run (struct initial_run_state *irs) Line 549  end_run (struct initial_run_state *irs)
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;
# Line 674  merge_once (struct external_sort *xsrt, Line 675  merge_once (struct external_sort *xsrt,
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];

Legend:
Removed from v.1.31  
changed lines
  Added in v.1.32

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26