summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuo Jinghua <sunmoon1997@gmail.com>2010-01-08 21:29:33 +0800
committerLuo Jinghua <sunmoon1997@gmail.com>2010-01-08 21:29:33 +0800
commit5b798c4039eae1e8bfdba96f3b3e7be736ea8da8 (patch)
tree18980b2876fea09d8920aac0eca705a5aebc9b19
parentc414f6a2d9a941dcf267568124cf69650e7d62c1 (diff)
uniconv: improve error checking
-rw-r--r--uniconv.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/uniconv.c b/uniconv.c
index 9987130..d38269e 100644
--- a/uniconv.c
+++ b/uniconv.c
@@ -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);