*.c: Be more careful about `PySequence_Size'.
authorMark Wooding <mdw@distorted.org.uk>
Sun, 24 Nov 2019 16:36:24 +0000 (16:36 +0000)
committerMark Wooding <mdw@distorted.org.uk>
Mon, 25 Nov 2019 17:31:23 +0000 (17:31 +0000)
This can be implemented by Python, so it can throw exceptions.
Fortunately, Python checks that the result is nonnegative, so we don't
have to worry about that.

catacomb.c

index edb0c4a..d82ed7c 100644 (file)
@@ -76,7 +76,8 @@ PyObject *mexp_common(PyObject *me, PyObject *arg,
     arg = PyTuple_GetItem(arg, 0);
   Py_INCREF(arg);
   if (!PySequence_Check(arg)) TYERR("not a sequence");
-  n = PySequence_Size(arg); if (!n) { z = id(me); goto end; }
+  n = PySequence_Size(arg); if (n < 0) goto end;
+  if (!n) { z = id(me); goto end; }
   x = PySequence_GetItem(arg, 0);
   if (PySequence_Check(x))
     flat = 0;