Mark Hammond withdraws his fix -- the size includes the trailing 0 so
a size of 0 *is* illegal.
diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c
index e843d1a..7a68dd4 100644
--- a/Objects/unicodeobject.c
+++ b/Objects/unicodeobject.c
@@ -1555,7 +1555,7 @@
 
     /* First get the size of the result */
     DWORD usize = MultiByteToWideChar(CP_ACP, 0, s, size, NULL, 0);
-    if (size > 0 && usize==0)
+    if (usize==0)
         return PyErr_SetFromWindowsErrWithFilename(0, NULL);
 
     v = _PyUnicode_New(usize);
@@ -1578,14 +1578,9 @@
 {
     PyObject *repr;
     char *s;
-    DWORD mbcssize;
-
-    /* If there are no characters, bail now! */
-    if (size==0)
-	    return PyString_FromString("");
 
     /* First get the size of the result */
-    mbcssize = WideCharToMultiByte(CP_ACP, 0, p, size, NULL, 0, NULL, NULL);
+    DWORD mbcssize = WideCharToMultiByte(CP_ACP, 0, p, size, NULL, 0, NULL, NULL);
     if (mbcssize==0)
         return PyErr_SetFromWindowsErrWithFilename(0, NULL);