diff --git a/Modules/selectmodule.c b/Modules/selectmodule.c
index be2b062..99a9213 100644
--- a/Modules/selectmodule.c
+++ b/Modules/selectmodule.c
@@ -112,6 +112,7 @@
 {
     object *fd2obj[FD_SETSIZE];
     object *ifdlist, *ofdlist, *efdlist;
+    object *ret;
     fd_set ifdset, ofdset, efdset;
     double timeout;
     struct timeval tv, *tvp;
@@ -168,8 +169,11 @@
     ifdlist = set2list(&ifdset, imax, fd2obj);
     ofdlist = set2list(&ofdset, omax, fd2obj);
     efdlist = set2list(&efdset, emax, fd2obj);
-
-    return mkvalue("OOO", ifdlist, ofdlist, efdlist);
+    ret = mkvalue("OOO", ifdlist, ofdlist, efdlist);
+    XDECREF(ifdlist);
+    XDECREF(ofdlist);
+    XDECREF(efdlist);
+    return ret;
 }
 
 
diff --git a/Modules/socketmodule.c b/Modules/socketmodule.c
index c72c9fd..2a0e291 100644
--- a/Modules/socketmodule.c
+++ b/Modules/socketmodule.c
@@ -223,7 +223,10 @@
 	case AF_INET:
 	{
 		struct sockaddr_in *a = (struct sockaddr_in *) addr;
-		return mkvalue("Oi", makeipaddr(a), ntohs(a->sin_port));
+		object *addr = makeipaddr(a);
+		object *ret = mkvalue("Oi", addr, ntohs(a->sin_port));
+		XDECREF(addr);
+		return ret;
 	}
 
 	case AF_UNIX:
@@ -342,7 +345,7 @@
 {
 	char addrbuf[256];
 	int addrlen, newfd;
-	object *res;
+	object *sock, *addr, *res;
 	if (!getnoarg(args))
 		return NULL;
 	if (!getsockaddrlen(s, &addrlen))
@@ -354,13 +357,16 @@
 		return socket_error();
 	/* Create the new object with unspecified family,
 	   to avoid calls to bind() etc. on it. */
-	res = mkvalue("OO", (object *) newsockobject(newfd,
-						s->sock_family,
-						s->sock_type,
-						s->sock_proto),
-		       makesockaddr((struct sockaddr *) addrbuf, addrlen));
-	if (res == NULL)
+	sock = (object *) newsockobject(newfd,
+					s->sock_family,
+					s->sock_type,
+					s->sock_proto);
+	if (sock == NULL)
 		close(newfd);
+	addr = makesockaddr((struct sockaddr *) addrbuf, addrlen);
+	res = mkvalue("OO", sock, addr);
+	XDECREF(sock);
+	XDECREF(addr);
 	return res;
 }
 
@@ -693,7 +699,7 @@
 	object *args;
 {
 	char addrbuf[256];
-	object *buf;
+	object *buf, *addr, *ret;
 	int addrlen, len, n;
 	if (!getintarg(args, &len))
 		return NULL;
@@ -708,8 +714,11 @@
 		return socket_error();
 	if (resizestring(&buf, n) < 0)
 		return NULL;
-	return mkvalue("OO", buf,
-			makesockaddr((struct sockaddr *)addrbuf, addrlen));
+	addr = makesockaddr((struct sockaddr *)addrbuf, addrlen);
+	ret = mkvalue("OO", buf, addr);
+	XDECREF(addr);
+	XDECREF(buf);
+	return ret;
 }
 
 
diff --git a/Modules/svmodule.c b/Modules/svmodule.c
index 0d14473..bbdbf33 100644
--- a/Modules/svmodule.c
+++ b/Modules/svmodule.c
@@ -126,7 +126,7 @@
 	captureobject *self;
 	object *args;
 {
-	object *f1, *f2;
+	object *f1, *f2, *ret;
 	int fieldsize;
 
 	if (self->ob_info.format != SV_RGB8_FRAMES) {
@@ -136,14 +136,11 @@
 
 	fieldsize = self->ob_info.width * self->ob_info.height / 2;
 	f1 = newsizedstringobject((char *) self->ob_capture, fieldsize);
-	if (f1 == NULL)
-		return NULL;
 	f2 = newsizedstringobject((char *) self->ob_capture + fieldsize, fieldsize);
-	if (f2 == NULL) {
-		DECREF(f1);
-		return NULL;
-	}
-	return mkvalue("(OO)", f1, f2);
+	ret = mkvalue("(OO)", f1, f2);
+	XDECREF(f1);
+	XDECREF(f2);
+	return ret;
 }
 	
 static object *
diff --git a/Python/ceval.c b/Python/ceval.c
index b28f17c..727bc0c 100644
--- a/Python/ceval.c
+++ b/Python/ceval.c
@@ -786,13 +786,6 @@
 			break;
 		
 		case UNPACK_ARG:
-			/* Implement various compatibility hacks:
-			   (a) f(a,b,...) should accept f((1,2,...))
-			   (b) f((a,b,...)) should accept f(1,2,...)
-			   (c) f(self,(a,b,...)) should accept f(x,1,2,...)
-			   Actually, (c) is dangerous, and (b) seems
-			   unnecessary, but (a) can't be missed...
-			*/
 			{
 				int n;
 				if (EMPTY()) {
@@ -809,6 +802,12 @@
 					break;
 				}
 				n = gettuplesize(v);
+#ifdef COMPAT_HACKS
+/* Implement various compatibility hacks (for 0.9.4 or earlier):
+   (a) f(a,b,...) accepts f((1,2,...))
+   (b) f((a,b,...)) accepts f(1,2,...)
+   (c) f(self,(a,b,...)) accepts f(x,1,2,...)
+*/
 				if (n == 1 && oparg != 1) {
 					/* Rule (a) */
 					w = gettupleitem(v, 0);
@@ -819,7 +818,6 @@
 						n = gettuplesize(v);
 					}
 				}
-#ifdef COMPAT_HACKS /* Compatibility hacks no longer needed (I think) */
 				else if (n != 1 && oparg == 1) {
 					/* Rule (b) */
 					PUSH(v);
