From 9b00dfae752aa8f1e4c6d70469e50ec45fb057c3 Mon Sep 17 00:00:00 2001 From: Guido van Rossum Date: Tue, 28 Apr 1998 16:06:54 +0000 Subject: [PATCH] If USE_STACKCHECK is defined use PyOS_CheckStack() in the repr and str routines. This catches a slightly different set of crashes than the recursive-repr fix. (Jack) --- Objects/object.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/Objects/object.c b/Objects/object.c index 3289aba4945..0588fea5061 100644 --- a/Objects/object.c +++ b/Objects/object.c @@ -162,6 +162,12 @@ PyObject_Print(op, fp, flags) int ret = 0; if (PyErr_CheckSignals()) return -1; +#ifdef USE_STACKCHECK + if (PyOS_CheckStack()) { + PyErr_SetString(PyExc_MemoryError, "Stack overflow"); + return -1; + } +#endif if (op == NULL) { fprintf(fp, ""); } @@ -213,6 +219,12 @@ PyObject_Repr(v) { if (PyErr_CheckSignals()) return NULL; +#ifdef USE_STACKCHECK + if (PyOS_CheckStack()) { + PyErr_SetString(PyExc_MemoryError, "Stack overflow"); + return NULL; + } +#endif if (v == NULL) return PyString_FromString(""); else if (v->ob_type->tp_repr == NULL) {