// BZ 12601 #include #include #include static int do_test (void) { iconv_t cd; char in[] = "\x83\xd9"; char out[256]; char *inbuf; size_t inbytesleft; char *outbuf; size_t outbytesleft; size_t ret; inbuf = in; inbytesleft = sizeof(in) - 1; outbuf = out; outbytesleft = sizeof(out); cd = iconv_open("utf-8", "cp932"); ret = iconv(cd, &inbuf, &inbytesleft, &outbuf, &outbytesleft); iconv_close(cd); printf("result: %zd %d %zd %d\n", ret, errno, inbytesleft, inbuf[0]); /* * result: -1 84 0 0 (84=EILSEQ) * * Error is returnd but inbuf is consumed. * * \x83\xd9 is valid shift-jis sequence but no character is assigned * to it. */ return (ret != -1 || errno != EILSEQ || inbytesleft != 2 || inbuf[0] != in[0]); } #define TEST_FUNCTION do_test () #include "../test-skeleton.c"