X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fdata%2Fsettings.c;h=c86ac9cc7e2c856ee685d271cf0995e5a9bbafd1;hb=8829e1f148c279db0f19b9e3bd746ace07d2d7f1;hp=94f1f09a4c5475060d34c357148834880f8f1447;hpb=be89f5708c5ab602642d3d297f84e9f32931a2f2;p=pspp-builds.git diff --git a/src/data/settings.c b/src/data/settings.c index 94f1f09a..c86ac9cc 100644 --- a/src/data/settings.c +++ b/src/data/settings.c @@ -1,5 +1,5 @@ /* PSPP - a program for statistical analysis. - Copyright (C) 1997-9, 2000, 2006, 2007 Free Software Foundation, Inc. + Copyright (C) 1997-9, 2000, 2006, 2007, 2009 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -22,10 +22,13 @@ #include "format.h" #include "value.h" #include "xalloc.h" +#include +#include #include #include #include "error.h" +#include "minmax.h" #include "gettext.h" #define _(msgid) gettext (msgid) @@ -514,13 +517,12 @@ settings_get_workspace (void) } /* Approximate maximum number of cases to allocate in-core, given - that each case contains VALUE_CNT values. */ + that each case has the format given in PROTO. */ size_t -settings_get_workspace_cases (size_t value_cnt) +settings_get_workspace_cases (const struct caseproto *proto) { - size_t case_size = sizeof (union value) * value_cnt + 4 * sizeof (void *); - size_t case_cnt = MAX (settings_get_workspace () / case_size, 4); - return case_cnt; + size_t n_cases = settings_get_workspace () / case_get_cost (proto); + return MAX (n_cases, 4); } /* Set approximate maximum amount of memory to use for cases, in