diff options
author | Luo Jinghua <sunmoon1997@gmail.com> | 2010-01-08 21:29:33 +0800 |
---|---|---|
committer | Luo Jinghua <sunmoon1997@gmail.com> | 2010-01-08 21:29:33 +0800 |
commit | 5b798c4039eae1e8bfdba96f3b3e7be736ea8da8 (patch) | |
tree | 18980b2876fea09d8920aac0eca705a5aebc9b19 | |
parent | c414f6a2d9a941dcf267568124cf69650e7d62c1 (diff) |
uniconv: improve error checking
-rw-r--r-- | uniconv.c | 5 |
1 files changed, 3 insertions, 2 deletions
@@ -103,14 +103,14 @@ uniconv_conv(uniconv_t *uc, return UNICONV_EBADF; /* reset converter */ - if (!inbuf && !outbuf) { + if ((!inbuf || !(*inbuf)) && (!outbuf || !(*outbuf))) { converter_reset(uc->from); converter_reset(uc->to); return UNICONV_SUCCESS; } /* converting/pushing input data */ - if (inbuf) { + if (inbuf && *inbuf) { uc_char_t ucs4; uc_char_t *ucsbuf; @@ -143,6 +143,7 @@ uniconv_conv(uniconv_t *uc, } } else { /* converting pending data in buffer */ + assert (outbuf && *outbuf); saved_inbuf = NULL; saved_outbuf = *outbuf; ret = uc->to->encode(uc->to, NULL, 0, outbuf, *outleft); |