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)
|
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)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user