diff options
Diffstat (limited to 'src/iconv.c')
-rw-r--r-- | src/iconv.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/iconv.c b/src/iconv.c index 45bd15f..db47cbc 100644 --- a/src/iconv.c +++ b/src/iconv.c @@ -356,12 +356,19 @@ size_t iconv(iconv_t cd, char **inbuf, size_t *inbytesleft, char **outbuf, /* Clear current write state */ e->write_state = WRITE_NONE; - if (e->in) + if (e->in) { read = encoding_read(e->in, character_callback, *inbuf, *inbytesleft, e); - else + + /* A trailing complete nullable sequence should + * result in success */ + if (e->write_state == WRITE_NONE && + !encoding_read_in_multibyte_sequence(e->in)) + e->write_state = WRITE_SUCCESS; + } else { read = iconv_eightbit_read(e, character_callback, *inbuf, *inbytesleft, e); + } /* Stop on error */ if (e->write_state != WRITE_SUCCESS) |