[Image-SIG] PIL patch

Richard Jones richard.jones@bom.gov.au
Wed, 27 May 1998 05:31:11 +0000


Fredrik,

    Here's a small patch for path.c so PyPath_Flatten copes with sequences 
a little better...


*** path.c.orig Wed May 27 05:04:43 1998
--- path.c      Wed May 27 05:28:22 1998
***************
*** 111,116 ****
--- 111,120 ----
  
      j = 0;
      n = PyObject_Length(data);
+     /* just in case __len__ breaks (or doesn't exist) */
+     if (PyErr_Occurred()) {
+       return -1;
+     }
  
      /* Allocate for worst case */
      xy = malloc(2 * n * sizeof(double));
***************
*** 123,128 ****
--- 127,142 ----
      for (i = 0; i < n; i++) {
        double x, y;
        PyObject *op = PySequence_GetItem(data, i);
+       if (!op) {
+           /* IndexError is OK */
+           if (PyErr_Occurred() == PyExc_IndexError) {
+               PyErr_Clear();
+               break;
+           } else {
+               free(xy);
+               return -1;
+           }
+       }
        if (PyNumber_Check(op))
            xy[j++] = PyFloat_AsDouble(op);
        else if (PyArg_ParseTuple(op, "dd", &x, &y)) {