* 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/Modules/socketmodule.c b/Modules/socketmodule.c
index c66d38c..c72c9fd 100644
--- a/Modules/socketmodule.c
+++ b/Modules/socketmodule.c
@@ -975,6 +975,10 @@
 		if (!getargs(args, "(iiii)", &fd, &family, &type, &proto))
 			return NULL;
 	}
+	/* Dup the fd so it and the socket can be closed independently */
+	fd = dup(fd);
+	if (fd < 0)
+		return socket_error();
 	s = newsockobject(fd, family, type, proto);
 	/* From now on, ignore SIGPIPE and let the error checking
 	   do the work. */