- /* Here inptr + inbytes_remaining = src + strlen (src),
- outptr + outbytes_remaining = result + result_size - 1. */
- size_t res = iconv (cd,
- (ICONV_CONST char **) &inptr, &inbytes_remaining,
- &outptr, &outbytes_remaining);
-
- if (res == (size_t)(-1))
- {
- if (errno == EINVAL)
- break;
- else if (errno == E2BIG)
- {
- size_t used = outptr - result;
- size_t newsize = result_size * 2;
- char *newresult;
-
- if (!(newsize > result_size))
- {
- errno = ENOMEM;
- goto failed;
- }
- newresult = (char *) realloc (result, newsize);
- if (newresult == NULL)
- {
- errno = ENOMEM;
- goto failed;
- }
- result = newresult;
- result_size = newsize;
- outptr = result + used;
- outbytes_remaining = result_size - 1 - used;
- }
- else
- goto failed;
- }
-# if !defined _LIBICONV_VERSION && (defined sgi || defined __sgi)
- /* Irix iconv() inserts a NUL byte if it cannot convert. */
- else if (res > 0)
- {
- errno = EILSEQ;
- goto failed;
- }
-# endif
- else
- break;
+ /* Here inptr + inbytes_remaining = src + strlen (src),
+ outptr + outbytes_remaining = result + result_size - 1. */
+ size_t res = iconv (cd,
+ (ICONV_CONST char **) &inptr, &inbytes_remaining,
+ &outptr, &outbytes_remaining);
+
+ if (res == (size_t)(-1))
+ {
+ if (errno == EINVAL)
+ break;
+ else if (errno == E2BIG)
+ {
+ size_t used = outptr - result;
+ size_t newsize = result_size * 2;
+ char *newresult;
+
+ if (!(newsize > result_size))
+ {
+ errno = ENOMEM;
+ goto failed;
+ }
+ newresult = (char *) realloc (result, newsize);
+ if (newresult == NULL)
+ {
+ errno = ENOMEM;
+ goto failed;
+ }
+ result = newresult;
+ result_size = newsize;
+ outptr = result + used;
+ outbytes_remaining = result_size - 1 - used;
+ }
+ else
+ goto failed;
+ }
+ else
+ break;