X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fdata%2Fdata-in.c;h=c105454ae6654ffda20a4e5bbe4ae5a3eadfa28a;hb=bf5a28ae469e2d82c1bc651de990e495da372621;hp=63e644c186bf565168a7f6e199c4bc707f7ae7cf;hpb=f550aee00a62fe1d8baf62d83cd7efef6cc2ee92;p=pspp-builds.git diff --git a/src/data/data-in.c b/src/data/data-in.c index 63e644c1..c105454a 100644 --- a/src/data/data-in.c +++ b/src/data/data-in.c @@ -119,6 +119,7 @@ data_in (struct substring input, const char *encoding, struct data_in i; + char *s = NULL; bool ok; assert ((width != 0) == fmt_is_string (format)); @@ -146,7 +147,7 @@ data_in (struct substring input, const char *encoding, else { const char *dest_encoding; - char *s = NULL; + if ( dict == NULL) { assert (0 == (fmt_get_category (format) & (FMT_CAT_BINARY | FMT_CAT_STRING))); @@ -156,15 +157,14 @@ data_in (struct substring input, const char *encoding, dest_encoding = dict_get_encoding (dict); s = recode_string (dest_encoding, i.src_enc, ss_data (input), ss_length (input)); - ss_alloc_uninit (&i.input, strlen (s)); - memcpy (ss_data (i.input), s, ss_length (input)); - free (s); + i.input = ss_cstr (s); } ok = handlers[i.format] (&i); if (!ok) default_result (&i); + free (s); return ok; }