summaryrefslogtreecommitdiff
path: root/iconvdata/bug-iconv5.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2007-08-25 18:55:07 +0000
committerJakub Jelinek <jakub@redhat.com>2007-08-25 18:55:07 +0000
commitdd3394742b3e2e01f403b1c1b41ed39273b2212e (patch)
tree5fed86738b0d518989679f3194f896fc9fcebbe2 /iconvdata/bug-iconv5.c
parent9b0cdd693e7f54fd35fd58931b940efe6ccb88cd (diff)
Updated to fedora-glibc-20070825T1839
Diffstat (limited to 'iconvdata/bug-iconv5.c')
-rw-r--r--iconvdata/bug-iconv5.c53
1 files changed, 53 insertions, 0 deletions
diff --git a/iconvdata/bug-iconv5.c b/iconvdata/bug-iconv5.c
new file mode 100644
index 0000000000..1b9f50f58a
--- /dev/null
+++ b/iconvdata/bug-iconv5.c
@@ -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"