glibc/iconvdata/bug-iconv5.c
Ulrich Drepper 55ea8790a9 [BZ #4896, BZ #4936]
2007-08-21  Ulrich Drepper  <drepper@redhat.com>
	[BZ #4936]
	* iconv/gconv.c (__gconv): If flush was successful, clear rest of
	the state.
	* iconvdata/Makefile: Add rules to build and run bug-iconv5.
	* iconvdata/bug-iconv5.c: New file.

	[BZ #4896]
2007-08-21 14:43:18 +00:00

54 lines
1 KiB
C

#include <iconv.h>
#include <stdint.h>
#include <stdio.h>
static int
do_test (void)
{
iconv_t cd = iconv_open ("utf-8", "unicode");
if (cd == (iconv_t) -1)
{
puts ("cannot open iconv module");
return 1;
}
static const uint16_t us[] = { 0xfeff, 0x0041, 0x0042, 0x0043 };
char buf[100];
char *inbuf;
size_t inlen;
char *outbuf;
size_t outlen;
size_t n;
inbuf = (char *) us;
inlen = sizeof (us);
outbuf = buf;
outlen = sizeof (buf);
n = iconv (cd, &inbuf, &inlen, &outbuf, &outlen);
if (n == (size_t) -1 || inlen != 0 || outlen != sizeof (buf) - 3)
{
puts ("first conversion failed");
return 1;
}
iconv (cd, NULL, NULL, NULL, NULL);
inbuf = (char *) us;
inlen = sizeof (us);
outbuf = buf;
outlen = sizeof (buf);
n = iconv (cd, &inbuf, &inlen, &outbuf, &outlen);
if (n == (size_t) -1 || inlen != 0 || outlen != sizeof (buf) - 3)
{
puts ("second conversion failed");
return 1;
}
return 0;
}
#define TEST_FUNCTION do_test ()
#include "../test-skeleton.c"