]> git.ipfire.org Git - thirdparty/glibc.git/blame - iconvdata/bug-iconv8.c
alloc_buffer: Return unqualified pointer type in alloc_buffer_next
[thirdparty/glibc.git] / iconvdata / bug-iconv8.c
CommitLineData
98d76b46
UD
1// BZ 12601
2#include <stdio.h>
3#include <errno.h>
4#include <iconv.h>
5
6static int
7do_test (void)
8{
9 iconv_t cd;
10 char in[] = "\x83\xd9";
11 char out[256];
12 char *inbuf;
13 size_t inbytesleft;
14 char *outbuf;
15 size_t outbytesleft;
16 size_t ret;
17
18 inbuf = in;
c4f50205 19 inbytesleft = sizeof (in) - 1;
98d76b46 20 outbuf = out;
c4f50205 21 outbytesleft = sizeof (out);
98d76b46
UD
22
23 cd = iconv_open("utf-8", "cp932");
24 ret = iconv(cd, &inbuf, &inbytesleft, &outbuf, &outbytesleft);
25 iconv_close(cd);
26
b5dcacb4 27 printf("result: %zd %d %zd %d\n", ret, errno, inbytesleft, inbuf[0]);
98d76b46
UD
28
29 /*
30 * result: -1 84 0 0 (84=EILSEQ)
31 *
32 * Error is returnd but inbuf is consumed.
33 *
34 * \x83\xd9 is valid shift-jis sequence but no character is assigned
35 * to it.
36 */
37
38 return (ret != -1 || errno != EILSEQ
39 || inbytesleft != 2 || inbuf[0] != in[0]);
40}
41
42#define TEST_FUNCTION do_test ()
43#include "../test-skeleton.c"