From cf970a32156e60e8842c5e9e82a3cb147dacaf64 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Wed, 23 Aug 2000 05:52:43 +0000 Subject: Update. * iconvdata/sjis.c: In conversion from UCS4, correct test for enough room in target buffer. Patch by KUSANO Takayuki [PR libc/1865]. * iconvdata/bug-iconv1.c: New file. * iconvdata/Makefile (tests): Add bug-iconv1. --- iconvdata/bug-iconv1.c | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 iconvdata/bug-iconv1.c (limited to 'iconvdata/bug-iconv1.c') diff --git a/iconvdata/bug-iconv1.c b/iconvdata/bug-iconv1.c new file mode 100644 index 0000000000..76bcee9183 --- /dev/null +++ b/iconvdata/bug-iconv1.c @@ -0,0 +1,40 @@ +/* Test program by Satoru Takabayashi. */ +#include +#include +#include +#include +#include + +int +main (int argc, char **argv) +{ + const char in[] = "\x41\x42\x43\xa4\xa2\xa4\xa4\xa4\xa6\xa4\xa8\xa4\xaa"; + /* valid eucJP string */ + const char exp[] = "\x41\x42\x43\x82\xa0\x82\xa2\x82\xa4"; + size_t outbufsize = 10; + /* 10 is too small to store full result (intentional) */ + size_t inleft, outleft; + char *in_p = (char *) in; + char out[outbufsize]; + char *out_p = out; + iconv_t cd; + int i; + + inleft = strlen (in); + outleft = outbufsize; + + cd = iconv_open ("SJIS", "eucJP"); + if (cd == (iconv_t) -1) + { + puts ("iconv_open failed"); + exit (1); + } + + iconv (cd, &in_p, &inleft, &out_p, &outleft); /* this returns E2BIG */ + for (i = 0; i < outbufsize - outleft; ++i) + printf (" %02x", (unsigned char) out[i]); + puts (""); + iconv_close (cd); + + return outbufsize - outleft != 9 || memcmp (out, exp, 9) != 0; +} -- cgit v1.2.3