[T106][ZXW-22]7520V3SCV2.01.01.02P42U09_VEC_V0.8_AP_VEC origin source commit
Change-Id: Ic6e05d89ecd62fc34f82b23dcf306c93764aec4b
diff --git a/ap/libc/glibc/glibc-2.22/iconvdata/bug-iconv8.c b/ap/libc/glibc/glibc-2.22/iconvdata/bug-iconv8.c
new file mode 100644
index 0000000..b91dc1d
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/iconvdata/bug-iconv8.c
@@ -0,0 +1,43 @@
+// BZ 12601
+#include <stdio.h>
+#include <errno.h>
+#include <iconv.h>
+
+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"