X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fdata%2Fcase-matcher.c;h=37cb4a60748a4b60e2416476a0ed629ff8f90620;hb=5c3291dc396b795696e94f47780308fd7ace6fc4;hp=a1251cb74cbfd816c7dab2ed54129659a0215e0b;hpb=c6fe58a22249f4f486b42f35fd8bd537c91e8e6e;p=pspp-builds.git diff --git a/src/data/case-matcher.c b/src/data/case-matcher.c index a1251cb7..37cb4a60 100644 --- a/src/data/case-matcher.c +++ b/src/data/case-matcher.c @@ -68,8 +68,11 @@ case_matcher_add_input (struct case_matcher *cm, const struct subcase *by, struct case_matcher_input *input; if (cm->n_inputs == 0) - cm->by_values = xmalloc (subcase_get_n_values (by) - * sizeof *cm->by_values); + { + cm->by_values = xmalloc (sizeof *cm->by_values + * subcase_get_n_fields (by)); + caseproto_init_values (subcase_get_proto (by), cm->by_values); + } else assert (subcase_conformable (by, &cm->inputs[0].by_vars)); @@ -90,6 +93,12 @@ case_matcher_destroy (struct case_matcher *cm) { size_t i; + if (cm->by_values != NULL) + { + caseproto_destroy_values (subcase_get_proto (&cm->inputs[0].by_vars), + cm->by_values); + free (cm->by_values); + } for (i = 0; i < cm->n_inputs; i++) { struct case_matcher_input *input = &cm->inputs[i];