PyUnicode_EncodeUTF8:  squash compiler wng.  The difference of two
pointers is a signed type.  Changing "allocated" to a signed int makes
undetected overflow more likely, but there was no overflow detection
before either.
diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c
index abaa67c..a4d455a 100644
--- a/Objects/unicodeobject.c
+++ b/Objects/unicodeobject.c
@@ -1172,13 +1172,14 @@
 }
 #endif
 
-PyObject *PyUnicode_EncodeUTF8(const Py_UNICODE *s,
-			       int size,
-			       const char *errors)
+PyObject *
+PyUnicode_EncodeUTF8(const Py_UNICODE *s,
+		     int size,
+		     const char *errors)
 {
     PyObject *v;
     char *p;
-    unsigned int allocated = 0;
+    int allocated = 0;
     int i;
 
     /* Short-cut for emtpy strings */