projects
/
pspp
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
DESCRIPTIVES: Fix a pair of memory leaks.
[pspp]
/
src
/
language
/
stats
/
descriptives.c
diff --git
a/src/language/stats/descriptives.c
b/src/language/stats/descriptives.c
index 54bc49d946a064bd3c4eee8ffdab962d611733c3..94421ef1e979807776a954d354c5be08019fcccc 100644
(file)
--- a/
src/language/stats/descriptives.c
+++ b/
src/language/stats/descriptives.c
@@
-512,7
+512,7
@@
try_name (const struct dictionary *dict, struct dsc_proc *dsc,
for (i = 0; i < dsc->var_cnt; i++)
{
struct dsc_var *dsc_var = &dsc->vars[i];
for (i = 0; i < dsc->var_cnt; i++)
{
struct dsc_var *dsc_var = &dsc->vars[i];
- if (dsc_var->z_name != NULL && !strcasecmp (dsc_var->z_name, name))
+ if (dsc_var->z_name != NULL && !
utf8_
strcasecmp (dsc_var->z_name, name))
return false;
}
return true;
return false;
}
return true;
@@
-689,6
+689,8
@@
descriptives_trns_free (void *trns_)
casereader_destroy (t->z_reader);
assert((t->missing_type != DSC_LISTWISE) ^ (t->vars != NULL));
free (t->vars);
casereader_destroy (t->z_reader);
assert((t->missing_type != DSC_LISTWISE) ^ (t->vars != NULL));
free (t->vars);
+ free (t);
+
return ok;
}
return ok;
}
@@
-732,11
+734,13
@@
setup_z_trns (struct dsc_proc *dsc, struct dataset *ds)
{
struct dsc_z_score *z;
struct variable *dst_var;
{
struct dsc_z_score *z;
struct variable *dst_var;
+ char *label;
dst_var = dict_create_var_assert (dataset_dict (ds), dv->z_name, 0);
dst_var = dict_create_var_assert (dataset_dict (ds), dv->z_name, 0);
- var_set_label (dst_var,
- xasprintf (_("Z-score of %s"),var_to_string (dv->v)),
- false);
+
+ label = xasprintf (_("Z-score of %s"),var_to_string (dv->v));
+ var_set_label (dst_var, label, false);
+ free (label);
z = &t->z_scores[cnt++];
z->src_var = dv->v;
z = &t->z_scores[cnt++];
z->src_var = dv->v;
@@
-1017,7
+1021,7
@@
descriptives_compare_dsc_vars (const void *a_, const void *b_, const void *dsc_)
int result;
if (dsc->sort_by_stat == DSC_NAME)
int result;
if (dsc->sort_by_stat == DSC_NAME)
- result = strcasecmp (var_get_name (a->v), var_get_name (b->v));
+ result =
utf8_
strcasecmp (var_get_name (a->v), var_get_name (b->v));
else
{
double as = a->stats[dsc->sort_by_stat];
else
{
double as = a->stats[dsc->sort_by_stat];