From: Guido van Rossum Date: Wed, 17 Jan 2001 15:47:24 +0000 (+0000) Subject: Use rich comparisons in min and max. X-Git-Tag: v2.1a1~199 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=53451b3fd19be3b6e7db058c34251898000408df;p=python Use rich comparisons in min and max. --- diff --git a/Python/bltinmodule.c b/Python/bltinmodule.c index 8f114f3617..683eec0914 100644 --- a/Python/bltinmodule.c +++ b/Python/bltinmodule.c @@ -1371,7 +1371,7 @@ Return the dictionary containing the current scope's local variables."; static PyObject * -min_max(PyObject *args, int sign) +min_max(PyObject *args, int op) { int i; PyObject *v, *w, *x; @@ -1401,16 +1401,16 @@ min_max(PyObject *args, int sign) if (w == NULL) w = x; else { - int c = PyObject_Compare(x, w); - if (c && PyErr_Occurred()) { + int cmp = PyObject_RichCompareBool(x, w, op); + if (cmp > 0) { + Py_DECREF(w); + w = x; + } + else if (cmp < 0) { Py_DECREF(x); Py_XDECREF(w); return NULL; } - if (c * sign > 0) { - Py_DECREF(w); - w = x; - } else Py_DECREF(x); } @@ -1424,7 +1424,7 @@ min_max(PyObject *args, int sign) static PyObject * builtin_min(PyObject *self, PyObject *v) { - return min_max(v, -1); + return min_max(v, Py_LT); } static char min_doc[] = @@ -1438,7 +1438,7 @@ With two or more arguments, return the smallest argument."; static PyObject * builtin_max(PyObject *self, PyObject *v) { - return min_max(v, 1); + return min_max(v, Py_GT); } static char max_doc[] =