Upgrade to Encode 2.08.
[p5sagit/p5-mst-13.2.git] / utf8.c
diff --git a/utf8.c b/utf8.c
index e480ced..f12696e 100644 (file)
--- a/utf8.c
+++ b/utf8.c
@@ -32,7 +32,8 @@ static char unees[] = "Malformed UTF-8 character (unexpected end of string)";
 This file contains various utility functions for manipulating UTF8-encoded
 strings. For the uninitiated, this is a method of representing arbitrary
 Unicode characters as a variable number of bytes, in such a way that
-characters in the ASCII range are unmodified, and a zero byte never appears.
+characters in the ASCII range are unmodified, and a zero byte never appears
+within non-zero characters.
 
 =for apidoc A|U8 *|uvuni_to_utf8_flags|U8 *d|UV uv|UV flags
 
@@ -867,8 +868,14 @@ Perl_utf16_to_utf8(pTHX_ U8* p, U8* d, I32 bytelen, I32 *newlen)
     U8* pend;
     U8* dstart = d;
 
+    if (bytelen == 1 && p[0] == 0) { /* Be understanding. */
+        d[0] = 0;
+        *newlen = 1;
+        return d;
+    }
+
     if (bytelen & 1)
-       Perl_croak(aTHX_ "panic: utf16_to_utf8: odd bytelen");
+       Perl_croak(aTHX_ "panic: utf16_to_utf8: odd bytelen %d", bytelen);
 
     pend = p + bytelen;