diff --git a/Modules/gcmodule.c b/Modules/gcmodule.c
index 98a0ee5..dcf0128 100644
--- a/Modules/gcmodule.c
+++ b/Modules/gcmodule.c
@@ -677,51 +677,48 @@
 	return Py_BuildValue("(iii)", threshold0, threshold1, threshold2);
 }
 
-struct referents{
-	PyObject *objs;
-	int seen;
-};
-
 static int
-referentsvisit(PyObject* obj, struct referents* refs)
+referentsvisit(PyObject* obj, PyObject *objs)
 {
-	if (PySequence_Contains (refs->objs, obj)) {
-		refs->seen = 1;
+	if (PySequence_Contains(objs, obj)) {
 		return 1;
 	}
 	return 0;
 }
 
-static void
+static int
 gc_referents_for(PyObject *objs, PyGC_Head *list, PyObject *resultlist)
 {
 	PyGC_Head *gc;
 	PyObject *obj;
 	traverseproc traverse;
-	struct referents refs = {objs, 0};
-	for (gc = list->gc_next; gc != list; gc = gc->gc_next){
-	  obj = PyObject_FROM_GC(gc);
+	for (gc = list->gc_next; gc != list; gc = gc->gc_next) {
+		obj = PyObject_FROM_GC(gc);
 		traverse = obj->ob_type->tp_traverse;
 		if (obj == objs || obj == resultlist)
 			continue;
-		if (traverse(obj, (visitproc)referentsvisit, &refs)) {
-			PyList_Append(resultlist, obj);
-			refs.seen = 0;
+		if (traverse(obj, (visitproc)referentsvisit, objs)) {
+			if (PyList_Append(resultlist, obj) < 0)
+				return 0; /* error */
 		}
 	}
+	return 1; /* no error */
 }
 
 static char gc_get_referents__doc__[]=
 "get_referents(*objs) -> list\n\
 Return the list of objects that directly refer to any of objs.";
 
-static PyObject*
-gc_get_referents(PyObject *self, PyObject* args)
+static PyObject *
+gc_get_referents(PyObject *self, PyObject *args)
 {
 	PyObject *result = PyList_New(0);
-	gc_referents_for(args, &generation0, result);
-	gc_referents_for(args, &generation1, result);
-	gc_referents_for(args, &generation2, result);
+	if (!(gc_referents_for(args, &generation0, result) &&
+	      gc_referents_for(args, &generation1, result) &&
+	      gc_referents_for(args, &generation2, result))) {
+		Py_DECREF(result);
+		return NULL;
+	}
 	return result;
 }
 
