Blame iconvdata/bug-iconv8.c
|
Packit Service |
82fcde |
// BZ 12601
|
|
Packit Service |
82fcde |
#include <stdio.h>
|
|
Packit Service |
82fcde |
#include <errno.h>
|
|
Packit Service |
82fcde |
#include <iconv.h>
|
|
Packit Service |
82fcde |
|
|
Packit Service |
82fcde |
static int
|
|
Packit Service |
82fcde |
do_test (void)
|
|
Packit Service |
82fcde |
{
|
|
Packit Service |
82fcde |
iconv_t cd;
|
|
Packit Service |
82fcde |
char in[] = "\x83\xd9";
|
|
Packit Service |
82fcde |
char out[256];
|
|
Packit Service |
82fcde |
char *inbuf;
|
|
Packit Service |
82fcde |
size_t inbytesleft;
|
|
Packit Service |
82fcde |
char *outbuf;
|
|
Packit Service |
82fcde |
size_t outbytesleft;
|
|
Packit Service |
82fcde |
size_t ret;
|
|
Packit Service |
82fcde |
|
|
Packit Service |
82fcde |
inbuf = in;
|
|
Packit Service |
82fcde |
inbytesleft = sizeof(in) - 1;
|
|
Packit Service |
82fcde |
outbuf = out;
|
|
Packit Service |
82fcde |
outbytesleft = sizeof(out);
|
|
Packit Service |
82fcde |
|
|
Packit Service |
82fcde |
cd = iconv_open("utf-8", "cp932");
|
|
Packit Service |
82fcde |
ret = iconv(cd, &inbuf, &inbytesleft, &outbuf, &outbytesleft);
|
|
Packit Service |
82fcde |
iconv_close(cd);
|
|
Packit Service |
82fcde |
|
|
Packit Service |
82fcde |
printf("result: %zd %d %zd %d\n", ret, errno, inbytesleft, inbuf[0]);
|
|
Packit Service |
82fcde |
|
|
Packit Service |
82fcde |
/*
|
|
Packit Service |
82fcde |
* result: -1 84 0 0 (84=EILSEQ)
|
|
Packit Service |
82fcde |
*
|
|
Packit Service |
82fcde |
* Error is returnd but inbuf is consumed.
|
|
Packit Service |
82fcde |
*
|
|
Packit Service |
82fcde |
* \x83\xd9 is valid shift-jis sequence but no character is assigned
|
|
Packit Service |
82fcde |
* to it.
|
|
Packit Service |
82fcde |
*/
|
|
Packit Service |
82fcde |
|
|
Packit Service |
82fcde |
return (ret != -1 || errno != EILSEQ
|
|
Packit Service |
82fcde |
|| inbytesleft != 2 || inbuf[0] != in[0]);
|
|
Packit Service |
82fcde |
}
|
|
Packit Service |
82fcde |
|
|
Packit Service |
82fcde |
#define TEST_FUNCTION do_test ()
|
|
Packit Service |
82fcde |
#include "../test-skeleton.c"
|