experimental UCS-4 support: don't assume that MS_WIN32 implies
HAVE_USABLE_WCHAR_T
diff --git a/Modules/_codecsmodule.c b/Modules/_codecsmodule.c
index ea530ee..61f25d1 100644
--- a/Modules/_codecsmodule.c
+++ b/Modules/_codecsmodule.c
@@ -299,7 +299,7 @@
 		       size);
 }
 
-#ifdef MS_WIN32
+#if defined(MS_WIN32) && defined(HAVE_USABLE_WCHAR_T)
 
 static PyObject *
 mbcs_decode(PyObject *self,
@@ -595,7 +595,7 @@
     return v;
 }
 
-#ifdef MS_WIN32
+#if defined(MS_WIN32) && defined(HAVE_USABLE_WCHAR_T)
 
 static PyObject *
 mbcs_encode(PyObject *self,
@@ -650,7 +650,7 @@
     {"charmap_decode", 		charmap_decode,			1},
     {"readbuffer_encode",	readbuffer_encode,		1},
     {"charbuffer_encode",	charbuffer_encode,		1},
-#ifdef MS_WIN32
+#if defined(MS_WIN32) && defined(HAVE_USABLE_WCHAR_T)
     {"mbcs_encode", 		mbcs_encode,			1},
     {"mbcs_decode", 		mbcs_decode,			1},
 #endif
diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c
index 4bb8fb2..ba606f5 100644
--- a/Objects/unicodeobject.c
+++ b/Objects/unicodeobject.c
@@ -1379,7 +1379,7 @@
     while (size-- > 0) {
         Py_UNICODE ch = *s++;
         /* Escape quotes */
-        if (quotes && (ch == q[1] || ch == '\\')) {
+        if (quotes && (ch == (Py_UNICODE) q[1] || ch == '\\')) {
             *p++ = '\\';
             *p++ = (char) ch;
         } 
@@ -1831,7 +1831,7 @@
 				 NULL);
 }
 
-#ifdef MS_WIN32
+#if defined(MS_WIN32) && defined(HAVE_USABLE_WCHAR_T)
 
 /* --- MBCS codecs for Windows -------------------------------------------- */