(process_block): For stateful charsets write out byte sequence to get

to initial state at the end of the file.
This commit is contained in:
Ulrich Drepper 1999-11-26 06:18:29 +00:00
parent 338a78259b
commit a4788d5ea6

View File

@ -334,8 +334,32 @@ conversion stopped due to problem in writing the output"));
} }
if (n != (size_t) -1) if (n != (size_t) -1)
/* Everything is processed. */ {
break; /* All the input test is processed. For state-dependent
character sets we have to flush the state now. */
outptr = outbuf;
outlen = OUTBUF_SIZE;
n = iconv (cd, NULL, NULL, &outptr, &outlen);
if (outptr != outbuf)
{
/* We have something to write out. */
int errno_save = errno;
if (fwrite (outbuf, 1, outptr - outbuf, output) < outptr - outbuf
|| ferror (output))
{
/* Error occurred while printing the result. */
error (0, 0, _("\
conversion stopped due to problem in writing the output"));
return -1;
}
errno = errno_save;
}
break;
}
if (errno != E2BIG) if (errno != E2BIG)
{ {