fix error handling
diff --git a/Modules/future_builtins.c b/Modules/future_builtins.c
index 4c840fb..bcd42ef 100644
--- a/Modules/future_builtins.c
+++ b/Modules/future_builtins.c
@@ -85,11 +85,12 @@
 	if (itertools == NULL)
 		return;
 
+	/* If anything in the following loop fails, we fall through. */
 	for (cur_func = it_funcs; *cur_func; ++cur_func){
 		iter_func = PyObject_GetAttrString(itertools, *cur_func);
-		if (iter_func == NULL)
-			return;
-		PyModule_AddObject(m, *cur_func+1, iter_func);
+		if (iter_func == NULL ||
+		    PyModule_AddObject(m, *cur_func+1, iter_func) < 0)
+			break;
 	}
 	Py_DECREF(itertools);
 	/* any other initialization needed */