X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Flanguage%2Fstats%2Fcrosstabs.q;h=fcfccc39a251c2fbbfffbda7a6913207a70d1757;hb=f1861ea4c715dfaddd84ff14be2ab92b13379014;hp=3bffa2a32f5839f712548f8f07e4f765fe719c6c;hpb=23ce39ab4b18e1c86694c3fb9a69e99e48c4c3b0;p=pspp diff --git a/src/language/stats/crosstabs.q b/src/language/stats/crosstabs.q index 3bffa2a32f..fcfccc39a2 100644 --- a/src/language/stats/crosstabs.q +++ b/src/language/stats/crosstabs.q @@ -637,12 +637,14 @@ calc_general (struct ccase *c, const struct dataset *ds) te->values[j].f = case_num (c, x->vars[j]); else { - memcpy (te->values[j].s, case_str (c, x->vars[j]), - var_get_width (x->vars[j])); + size_t n = var_get_width (x->vars[j]); + if (n > MAX_SHORT_STRING) + n = MAX_SHORT_STRING; + memcpy (te->values[j].s, case_str (c, x->vars[j]), n); /* Necessary in order to simplify comparisons. */ memset (&te->values[j].s[var_get_width (x->vars[j])], 0, - sizeof (union value) - var_get_width (x->vars[j])); + sizeof (union value) - n); } } }