Hello Bruno, Bruno Haible wrote: > Rainer Tammer wrote: > >> AIX 6.1 Technology Level 4: >> >> # xlc testme.c -liconv >> # ./a.out >> res = 0 >> >> AIX 7.1BETA >> >> # ./a.out >> res = 0 >> > Thanks. This is surprising. I'm not sure I fully understand what happens. Can > you run this slightly extended test program as well, please? > > =============================================================================== > #include <iconv.h> > #include <errno.h> > #include <stdio.h> > > int main () > { > iconv_t cd_88591_to_utf8 = iconv_open ("UTF-8", "ISO-8859-1"); > if (cd_88591_to_utf8 == (iconv_t)(-1)) return 1; > { > static const char input[] = "\304"; > static char buf[2] = { (char)0xDE, (char)0xAD }; > const char *inptr = input; > size_t inbytesleft = 1; > char *outptr = buf; > size_t outbytesleft = 1; > size_t res = iconv (cd_88591_to_utf8, > (char **) &inptr, &inbytesleft, > &outptr, &outbytesleft); > if (res == (size_t)(-1)) > { > int err = errno; > fprintf (stderr, "errno = %d\n", err); > errno = err; > perror (""); > } > else > { > printf ("res = %lu\n", (unsigned long) res); > printf ("outptr-buf = %d, outbytesleft = %d, buf = { 0x%02X, 0x%02X > }\n", > (int)(outptr-buf), (int) outbytesleft, (unsigned char) > buf[0], (unsigned char) buf[1]); > } > return 0; > } > } > =============================================================================== > > Bruno > > > AIX 7BETA:
# ./testme res = 0 outptr-buf = 2, outbytesleft = -1, buf = { 0xC3, 0x84 } AIX 6.1 Technology Level 4: # ./testme res = 0 outptr-buf = 2, outbytesleft = -1, buf = { 0xC3, 0x84 } Bye Rainer