* mymalloc.h: always allocate one extra byte, since some malloc's
  return NULL for malloc(0) or realloc(p, 0).  (This should be done
  differently than wasting one byte, but alas...)
* Moved "add'l libraries" option in Makefile to an earlier place.
* Remove argument compatibility hacks (b) and (c).
* Add grey2mono, dither2mono and mono2grey to imageop.
* Dup the fd in socket.fromfd().
* Added new modules mpz, md5 (by JH, requiring GNU MP 1.2).  Affects
  Makefile and config.c.
* socketmodule.c: added socket.fromfd(fd, family, type, [proto]),
  converted socket() to use of getargs().
diff --git a/Include/mymalloc.h b/Include/mymalloc.h
index aadd0f3..e4315bd 100644
--- a/Include/mymalloc.h
+++ b/Include/mymalloc.h
@@ -53,12 +53,14 @@
 #define NULL 0
 #endif
 
-#define NEW(type, n) ( (type *) malloc((n) * sizeof(type)) )
+/* XXX Always allocate one extra byte, since some malloc's return NULL
+   XXX for malloc(0) or realloc(p, 0). */
+#define NEW(type, n) ( (type *) malloc(1 + (n) * sizeof(type)) )
 #define RESIZE(p, type, n) \
 	if ((p) == NULL) \
-		(p) =  (type *) malloc((n) * sizeof(type)); \
+		(p) =  (type *) malloc(1 + (n) * sizeof(type)); \
 	else \
-		(p) = (type *) realloc((ANY *)(p), (n) * sizeof(type))
+		(p) = (type *) realloc((ANY *)(p), 1 + (n) * sizeof(type))
 #define DEL(p) free((ANY *)p)
 #define XDEL(p) if ((p) == NULL) ; else DEL(p)