summaryrefslogtreecommitdiffstats
path: root/Python/bltinmodule.c
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>1997-05-23 00:06:51 (GMT)
committerGuido van Rossum <guido@python.org>1997-05-23 00:06:51 (GMT)
commitc8b6df90045a3f419e6fab272d93ad4159e54ccc (patch)
tree20cb4b6f0ba2718577079198780d5fc3852e4a70 /Python/bltinmodule.c
parent5b2121b25fc6a50fe229fe25ef6be8a2f883d1f4 (diff)
downloadcpython-c8b6df90045a3f419e6fab272d93ad4159e54ccc.zip
cpython-c8b6df90045a3f419e6fab272d93ad4159e54ccc.tar.gz
cpython-c8b6df90045a3f419e6fab272d93ad4159e54ccc.tar.bz2
PyObject_Compare can raise an exception now.
Diffstat (limited to 'Python/bltinmodule.c')
-rw-r--r--Python/bltinmodule.c18
1 files changed, 14 insertions, 4 deletions
diff --git a/Python/bltinmodule.c b/Python/bltinmodule.c
index 4029e1b..245d31e 100644
--- a/Python/bltinmodule.c
+++ b/Python/bltinmodule.c
@@ -245,10 +245,14 @@ builtin_cmp(self, args)
PyObject *args;
{
PyObject *a, *b;
+ long c;
if (!PyArg_ParseTuple(args, "OO:cmp", &a, &b))
return NULL;
- return PyInt_FromLong((long)PyObject_Compare(a, b));
+ c = PyObject_Compare(a, b);
+ if (c && PyErr_Occurred())
+ return NULL;
+ return PyInt_FromLong(c);
}
static PyObject *
@@ -1073,7 +1077,13 @@ min_max(args, sign)
if (w == NULL)
w = x;
else {
- if (PyObject_Compare(x, w) * sign > 0) {
+ int c = PyObject_Compare(x, w);
+ if (c && PyErr_Occurred()) {
+ Py_DECREF(x);
+ Py_XDECREF(w);
+ return NULL;
+ }
+ if (c * sign > 0) {
Py_DECREF(w);
w = x;
}
@@ -1360,8 +1370,8 @@ builtin_raw_input(self, args)
PyErr_SetString(PyExc_RuntimeError, "lost sys.stdout");
return NULL;
}
- Py_FlushLine();
- if (PyFile_WriteObject(v, f, Py_PRINT_RAW) != 0)
+ if (Py_FlushLine() != 0 ||
+ PyFile_WriteObject(v, f, Py_PRINT_RAW) != 0)
return NULL;
}
f = PySys_GetObject("stdin");