Minor bit of factoring-out common code.
diff --git a/Objects/setobject.c b/Objects/setobject.c
index 383e7a4..12f82f3 100644
--- a/Objects/setobject.c
+++ b/Objects/setobject.c
@@ -1271,26 +1271,14 @@
while ((key = PyIter_Next(it)) != NULL) {
hash = PyObject_Hash(key);
- if (hash == -1) {
- Py_DECREF(it);
- Py_DECREF(result);
- Py_DECREF(key);
- return NULL;
- }
+ if (hash == -1)
+ goto error;
rv = set_contains_entry(so, key, hash);
- if (rv < 0) {
- Py_DECREF(it);
- Py_DECREF(result);
- Py_DECREF(key);
- return NULL;
- }
+ if (rv < 0)
+ goto error;
if (rv) {
- if (set_add_entry(result, key, hash)) {
- Py_DECREF(it);
- Py_DECREF(result);
- Py_DECREF(key);
- return NULL;
- }
+ if (set_add_entry(result, key, hash))
+ goto error;
}
Py_DECREF(key);
}
@@ -1300,6 +1288,11 @@
return NULL;
}
return (PyObject *)result;
+ error:
+ Py_DECREF(it);
+ Py_DECREF(result);
+ Py_DECREF(key);
+ return NULL;
}
static PyObject *