testsuite-discovered fixes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
diff --git a/libbb/unicode.c b/libbb/unicode.c
index 844c154..39b173e 100644
--- a/libbb/unicode.c
+++ b/libbb/unicode.c
@@ -203,11 +203,13 @@
 
 	while (n) {
 		wchar_t wc;
-		const char *rc = mbstowc_internal(dest ? dest : &wc, src);
-		if (rc == NULL) /* error */
+		src = mbstowc_internal(&wc, src);
+		if (src == NULL) /* error */
 			return (size_t) -1L;
 		if (dest)
-			dest++;
+			*dest++ = wc;
+		if (wc == 0) /* end-of-string */
+			break;
 		n--;
 	}