mirror of
https://sourceware.org/git/glibc.git
synced 2024-12-14 07:10:05 +00:00
(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:
parent
338a78259b
commit
a4788d5ea6
@ -334,8 +334,32 @@ conversion stopped due to problem in writing the output"));
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user