Skip to content

Commit cb25ea5

Browse files
committed
improved goto logic
1 parent 838c8b1 commit cb25ea5

File tree

1 file changed

+10
-12
lines changed

1 file changed

+10
-12
lines changed

Modules/_functoolsmodule.c

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -713,14 +713,14 @@ partial_repr(PyObject *self)
713713

714714
arglist = Py_GetConstant(Py_CONSTANT_EMPTY_STR);
715715
if (arglist == NULL)
716-
goto done;
716+
goto free_arguments;
717717
/* Pack positional arguments */
718718
n = PyTuple_GET_SIZE(args);
719719
for (i = 0; i < n; i++) {
720720
Py_SETREF(arglist, PyUnicode_FromFormat("%U, %R", arglist,
721721
PyTuple_GET_ITEM(args, i)));
722722
if (arglist == NULL)
723-
goto done;
723+
goto free_arguments;
724724

725725
}
726726
/* Pack keyword arguments */
@@ -731,30 +731,28 @@ partial_repr(PyObject *self)
731731
key, value));
732732
Py_DECREF(value);
733733
if (arglist == NULL)
734-
goto done;
734+
goto free_arguments;
735735
}
736736

737737
mod = PyType_GetModuleName(Py_TYPE(pto));
738738
if (mod == NULL) {
739-
Py_DECREF(arglist);
740-
goto done;
739+
goto free_arglist;
741740
}
742741
name = PyType_GetQualName(Py_TYPE(pto));
743742
if (name == NULL) {
744-
Py_DECREF(arglist);
745-
Py_DECREF(mod);
746-
goto done;
743+
goto free_mod;
747744
}
748745
result = PyUnicode_FromFormat("%S.%S(%R%U)", mod, name, fn, arglist);
749-
Py_DECREF(mod);
750746
Py_DECREF(name);
747+
free_mod:
748+
Py_DECREF(mod);
749+
free_arglist:
751750
Py_DECREF(arglist);
752-
753-
done:
754-
Py_ReprLeave(self);
751+
free_arguments:
755752
Py_DECREF(fn);
756753
Py_DECREF(args);
757754
Py_DECREF(kw);
755+
Py_ReprLeave(self);
758756
return result;
759757
}
760758

0 commit comments

Comments
 (0)