PyObject_Malloc:  make a tiny bit faster for platforms where malloc(0)
doesn't return NULL.

PyObject_Realloc:  better comment for why we don't call PyObject_Malloc(0).
diff --git a/Objects/obmalloc.c b/Objects/obmalloc.c
index 5948e52..602b3c3 100644
--- a/Objects/obmalloc.c
+++ b/Objects/obmalloc.c
@@ -685,7 +685,11 @@
 	 * last chance to serve the request) or when the max memory limit
 	 * has been reached.
 	 */
-	return (void *)malloc(nbytes ? nbytes : 1);
+#ifdef MALLOC_ZERO_RETURNS_NULL
+	if (nbytes == 0)
+		nbytes = 1;
+#endif
+	return (void *)malloc(nbytes);
 }
 
 /* free */
@@ -803,7 +807,10 @@
 	}
 	/* We're not managing this block. */
 	if (nbytes <= SMALL_REQUEST_THRESHOLD) {
-		/* Take over this block. */
+		/* Take over this block -- ask for at least one byte so
+		 * we really do take it over (PyObject_Malloc(0) goes to
+		 * the system malloc).
+		 */
 		bp = PyObject_Malloc(nbytes ? nbytes : 1);
 		if (bp != NULL) {
 			memcpy(bp, p, nbytes);