Commit d49cbe10 authored by Jack Jansen's avatar Jack Jansen

Added PyOS_CheckStack call to PyObject_Compare

Lowered the recursion limit on compares to 60 (one recursion depth can
take a whopping 2K of stack space when running test_b1!)
parent e979160f
......@@ -11,6 +11,9 @@ redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
/* Generic object operations; and implementation of None (NoObject) */
#include "Python.h"
#ifdef HAVE_LIMITS_H
#include <limits.h>
#endif
#ifdef macintosh
#include "macglue.h"
......@@ -339,7 +342,11 @@ PyObject *_PyCompareState_Key;
some types) and decremented on exit. If the count exceeds the
nesting limit, enable code to detect circular data structures.
*/
#ifdef macintosh
#define NESTING_LIMIT 60
#else
#define NESTING_LIMIT 500
#endif
int _PyCompareState_nesting = 0;
static PyObject*
......@@ -394,6 +401,12 @@ PyObject_Compare(PyObject *v, PyObject *w)
PyTypeObject *vtp, *wtp;
int result;
#if defined(USE_STACKCHECK)
if (PyOS_CheckStack() < 0) {
PyErr_SetString(PyExc_MemoryError, "Stack overflow");
return -1;
}
#endif
if (v == NULL || w == NULL) {
PyErr_BadInternalCall();
return -1;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment