mirror of
https://sourceware.org/git/glibc.git
synced 2024-12-22 10:50:07 +00:00
c7c3b0e907
2000-08-29 Akira Higuchi <a@kondara.org> * iconv/gconv_db.c (increment_counter): Reset __init_fct, __fct, and __end_fct fields of struct __gconv_step. * iconv/Makefile (tests): Add iconv-bug2. * iconv/iconv-bug2.c: New file. * iconvdata/euc-kr.c (BODY for FROM_LOOP): Pass 'inend - inptr' instead of 'inptr - inend' to ksc5601_to_ucs4. * iconvdata/sjis.c (BODY for FROM_LOOP): Allow 0x7f character. * iconvdata/iso-2022-cn.c (BODY for FROM_LOOP): If an incomplete character or shift sequence is found at the end of the input string, return__GCONV_INCOMPLETE_INPUT instead of __GCONV_EMPTY_INPUT. * iconvdata/iso-2022-jp.c (BODY for FROM_LOOP): Likewise. * iconvdata/iso-2022-kr.c (BODY for FROM_LOOP): Likewise. * iconvdata/iso-2022-jp.c (BODY for FROM_LOOP): Return __GCONV_ILLEGAL_INPUT for 8bit characters.
48 lines
1.1 KiB
C
48 lines
1.1 KiB
C
/* Test case by Akira Higuchi <a@kondara.org>. */
|
|
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <iconv.h>
|
|
|
|
int
|
|
main (void)
|
|
{
|
|
const char *dummy_codesets[] =
|
|
{
|
|
"ISO_8859-1", "ISO_8859-2", "ISO_8859-3", "ISO_8859-4",
|
|
"ISO_8859-5", "ISO_8859-6", "ISO_8859-7", "ISO_8859-8"
|
|
};
|
|
iconv_t dummy_cd[8], cd_a;
|
|
int i;
|
|
char buffer[1024], *to = buffer;
|
|
char *from = (char *) "foobar";
|
|
size_t to_left = 1024, from_left = 6;
|
|
|
|
/* load dummy modules */
|
|
for (i = 0; i < 8; i++)
|
|
if ((dummy_cd[i] = iconv_open (dummy_codesets[i], "UTF8")) == (iconv_t) -1)
|
|
exit (1);
|
|
|
|
/* load a module... */
|
|
if ((cd_a = iconv_open ("EUC-JP", "UTF8")) == (iconv_t) -1)
|
|
exit (1);
|
|
/* and close it once. we'll reload this later */
|
|
iconv_close (cd_a);
|
|
|
|
/* unload dummy modules */
|
|
for (i = 0; i < 8; i++)
|
|
iconv_close (dummy_cd[i]);
|
|
|
|
/* load the module again */
|
|
if ((cd_a = iconv_open ("EUC-JP", "UTF8")) == (iconv_t) -1)
|
|
exit (1);
|
|
|
|
puts ("This used to crash");
|
|
printf ("%d\n", iconv (cd_a, &from, &from_left, &to, &to_left));
|
|
iconv_close (cd_a);
|
|
|
|
puts ("works now");
|
|
|
|
return 0;
|
|
}
|