mirror of https://gitee.com/Nocallback/glibc.git
Browse Source
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]cvs/glibc-2_7-branch
4 changed files with 79 additions and 7 deletions
@ -0,0 +1,53 @@ |
|||
#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" |
|||
Loading…
Reference in new issue