- fixed pointer size test in spawn functions.  also added
  cast to make sure Py_BuildValue gets the right thing.

  this change eliminates bogus return codes from successful
  spawn calls (e.g. 2167387144924954624 instead of 0).
diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c
index 1a40d9e..5b61193 100644
--- a/Modules/posixmodule.c
+++ b/Modules/posixmodule.c
@@ -1540,10 +1540,10 @@
 	if (spawnval == -1)
 		return posix_error();
 	else
-#if SIZEOF_LONG == SIZE_VOID_P
-		return Py_BuildValue("l", spawnval);
+#if SIZEOF_LONG == SIZEOF_VOID_P
+		return Py_BuildValue("l", (long) spawnval);
 #else
-		return Py_BuildValue("L", spawnval);
+		return Py_BuildValue("L", (LONG_LONG) spawnval);
 #endif
 }
 
@@ -1648,10 +1648,10 @@
 	if (spawnval == -1)
 		(void) posix_error();
 	else
-#if SIZEOF_LONG == SIZE_VOID_P
-		res = Py_BuildValue("l", spawnval);
+#if SIZEOF_LONG == SIZEOF_VOID_P
+		res = Py_BuildValue("l", (long) spawnval);
 #else
-		res = Py_BuildValue("L", spawnval);
+		res = Py_BuildValue("L", (LONG_LONG) spawnval);
 #endif
 
  fail_2: