diff options
Diffstat (limited to 'iconv')
-rw-r--r-- | iconv/iconv_prog.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/iconv/iconv_prog.c b/iconv/iconv_prog.c index c91c76f34f..cd00bbfce7 100644 --- a/iconv/iconv_prog.c +++ b/iconv/iconv_prog.c @@ -320,6 +320,8 @@ process_block (iconv_t cd, const char *addr, size_t len, FILE *output) if (outptr != outbuf) { /* We have something to write out. */ + int errno_save = errno; + if (fwrite (outbuf, 1, outptr - outbuf, output) < outptr - outbuf || ferror (output)) { @@ -328,6 +330,8 @@ process_block (iconv_t cd, const char *addr, size_t len, FILE *output) conversion stopped due to problem in writing the output")); return -1; } + + errno = errno_save; } if (n != (size_t) -1) |