X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fvalue-labels.c;h=03eda933ad2820ea2c49647379dae65ac5b00db4;hb=e238e7fc030ebb64a7f70176c2218783b5b205e3;hp=7cd8ff0daa3cd76c5d3aa902dbd13da8052453d9;hpb=4fdeb2145d081ff1b84e3f6c99f9d1c048c0d64a;p=pspp diff --git a/src/value-labels.c b/src/value-labels.c index 7cd8ff0daa..03eda933ad 100644 --- a/src/value-labels.c +++ b/src/value-labels.c @@ -111,7 +111,7 @@ val_labs_clear (struct val_labs *vls) /* Returns the number of value labels in VLS. */ size_t -val_labs_count (struct val_labs *vls) +val_labs_count (const struct val_labs *vls) { assert (vls != NULL); @@ -220,7 +220,7 @@ val_labs_remove (struct val_labs *vls, union value value) if (vls->labels != NULL) { struct int_val_lab *ivl = create_int_val_lab (vls, value, ""); - int deleted = hsh_delete (vls->labels, &ivl); + int deleted = hsh_delete (vls->labels, ivl); free (ivl); return deleted; } @@ -496,29 +496,23 @@ free_atom (void *atom_, void *aux UNUSED) else format it and return the formatted string */ const char * -value_to_string(const union value *val, const struct variable *var) +value_to_string (const union value *val, const struct variable *var) { - static char buf[100]; char *s; - const struct val_labs *val_labs ; - if ( !val || ! var ) - return 0; - - val_labs = var->val_labs; - - - s = val_labs_find (val_labs, *val); + assert (val != NULL); + assert (var != NULL); - if ( s ) - return s; - - if ( 0 == var->width ) - snprintf(buf,100,"%g",val->f); - else + s = val_labs_find (var->val_labs, *val); + if (s == NULL) { - strncpy(buf,val->s,MAX_SHORT_STRING); - strcat(buf,"\0"); + static char buf[256]; + if (var->width != 0) + str_copy_buf_trunc (buf, sizeof buf, val->s, var->width); + else + snprintf(buf, 100, "%g", val->f); + s = buf; } - return buf; + + return s; }