Reworked settings so as to use one large struct instead of lots of static
[pspp-builds.git] / src / math / sort.c
index aa2afe80951b7a31608f6e4d1bf4d03c8807de0a..e03ef5744bfbd8acc0ec9479f96714ccfecc92e8 100644 (file)
 #include <data/casewriter.h>
 #include <data/casewriter-provider.h>
 #include <data/settings.h>
-#include <libpspp/alloc.h>
 #include <libpspp/array.h>
 #include <libpspp/assertion.h>
 #include <math/merge.h>
 
+#include "xalloc.h"
+
 #include "gettext.h"
 #define _(msgid) gettext (msgid)
 
@@ -63,6 +64,7 @@ static void output_record (struct sort_writer *);
 struct casewriter *
 sort_create_writer (struct case_ordering *ordering)
 {
+  size_t value_cnt = case_ordering_get_value_cnt (ordering);
   struct sort_writer *sort;
 
   sort = xmalloc (sizeof *sort);
@@ -75,7 +77,7 @@ sort_create_writer (struct case_ordering *ordering)
 
   case_ordering_destroy (ordering);
 
-  return casewriter_create (&sort_casewriter_class, sort);
+  return casewriter_create (value_cnt, &sort_casewriter_class, sort);
 }
 
 static void
@@ -206,7 +208,7 @@ pqueue_create (const struct case_ordering *ordering)
   pq = xmalloc (sizeof *pq);
   pq->ordering = case_ordering_clone (ordering);
   pq->record_cap
-    = get_workspace_cases (case_ordering_get_value_cnt (ordering));
+    = settings_get_workspace_cases (case_ordering_get_value_cnt (ordering));
   if (pq->record_cap > max_buffers)
     pq->record_cap = max_buffers;
   else if (pq->record_cap < min_buffers)