X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Flanguage%2Fstats%2Fchisquare.c;h=1b77230642c6fca4ac6362bb872404615e92d4be;hb=085d4563d8d5adfb3a2552d6ab1959c3fcacaee0;hp=6b0b0567257bd80d5b812a96438464e8fc4bf75f;hpb=43b1296aafe7582e7dbe6c2b6a8b478d7d9b0fcf;p=pspp-builds.git diff --git a/src/language/stats/chisquare.c b/src/language/stats/chisquare.c index 6b0b0567..1b772306 100644 --- a/src/language/stats/chisquare.c +++ b/src/language/stats/chisquare.c @@ -29,7 +29,6 @@ #include #include #include -#include #include #include #include @@ -39,6 +38,8 @@ #include +#include "xalloc.h" + #include "gettext.h" #define _(msgid) gettext (msgid) @@ -194,6 +195,8 @@ create_variable_frequency_table (const struct dictionary *dict, test->n_expected, n_cells, var_get_name (var) ); + hsh_destroy (*freq_hash); + *freq_hash = NULL; return NULL; } @@ -341,7 +344,8 @@ chisquare_execute (const struct dataset *ds, struct hsh_table *freq_hash = NULL; struct casereader *reader = casereader_create_filter_missing (casereader_clone (input), - &ost->vars[v], 1, exclude, NULL); + &ost->vars[v], 1, exclude, + NULL, NULL); struct tab_table *freq_table = create_variable_frequency_table(dict, reader, cst, v, &freq_hash); @@ -359,12 +363,17 @@ chisquare_execute (const struct dataset *ds, xsq[v] = 0.0; for ( i = 0 ; i < n_cells ; ++i ) { + struct string str; double exp; const union value *observed_value = ff[i]->value; + ds_init_empty (&str); + var_append_value_name (ost->vars[v], observed_value, &str); + /* The key */ - tab_text (freq_table, 0, i + 1, TAB_LEFT, - var_get_value_name (ost->vars[v], observed_value)); + tab_text (freq_table, 0, i + 1, TAB_LEFT, ds_cstr (&str)); + ds_destroy (&str); + /* The observed N */ tab_float (freq_table, 1, i + 1, TAB_NONE, @@ -406,7 +415,8 @@ chisquare_execute (const struct dataset *ds, double total_obs = 0.0; struct casereader *reader = casereader_create_filter_missing (casereader_clone (input), - &ost->vars[v], 1, exclude, NULL); + &ost->vars[v], 1, exclude, + NULL, NULL); struct hsh_table *freq_hash = create_freq_hash_with_range (dict, reader, ost->vars[v], cst->lo, cst->hi); @@ -425,13 +435,17 @@ chisquare_execute (const struct dataset *ds, xsq[v] = 0.0; for ( i = 0 ; i < hsh_count (freq_hash) ; ++i ) { + struct string str; double exp; const union value *observed_value = ff[i]->value; + ds_init_empty (&str); + var_append_value_name (ost->vars[v], observed_value, &str); /* The key */ tab_text (freq_table, v * 4 + 1, i + 2 , TAB_LEFT, - var_get_value_name (ost->vars[v], observed_value)); + ds_cstr (&str)); + ds_destroy (&str); /* The observed N */ tab_float (freq_table, v * 4 + 2, i + 2 , TAB_NONE,