X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fvalue-labels.c;h=8dfbb10ead2a662e37eddd00c58a7bb9869369aa;hb=db5df54124af56dc1dfce71f839d78da2b49e346;hp=4c1d1a5f234d4b79250784bf9e711b4e34d0c600;hpb=efbbea5561a1c11b3f794906d1d10dc31b27e21b;p=pspp diff --git a/src/value-labels.c b/src/value-labels.c index 4c1d1a5f23..8dfbb10ead 100644 --- a/src/value-labels.c +++ b/src/value-labels.c @@ -14,16 +14,16 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. */ + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301, USA. */ #include #include "value-labels.h" #include "error.h" #include -#include #include "alloc.h" #include "hash.h" +#include "str.h" static hsh_compare_func compare_int_val_lab; static hsh_hash_func hash_int_val_lab; @@ -496,23 +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) { char *s; - const struct val_labs *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 ) + s = val_labs_find (var->val_labs, *val); + if (s == NULL) { - static char buf[100]; - snprintf(buf,100,"%g",val->f); - return buf; + 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; } - else - return val->s; + return s; }