[Python-Dev] RE: [Python-checkins] python/dist/src/Objects listobject.c, 2.218, 2.219

Armin Rigo arigo at tunes.org
Tue Aug 3 11:12:33 CEST 2004


Hello Raymond,

On Mon, Aug 02, 2004 at 01:11:49PM -0400, Raymond Hettinger wrote:
> >   	 * complain about the unused name.
> >   	 */
> > ! 	return status, v;
> >   }
> > 
> > --- 863,867 ----
> >   	 * complain about the unused name.
> >   	 */
> > ! 	return status++, v;
> 
> Does anyone else see this as perverse?

Yes!  And obfuscated definitely.  A general solution to this problem would be
helpful... well in this case I can think about a specific solution:

  assert(!PyErr_Occurred());

Patch below.

Armin

*** listobject.c        3 Aug 2004 04:53:29 -0000       2.219
--- listobject.c        3 Aug 2004 09:15:45 -0000
***************
*** 829,835 ****
  {
        int i = -1;
        PyObject *v, *arg = NULL;
-       int status;
  
        if (!PyArg_UnpackTuple(args, "pop", 0, 1, &arg))
                return NULL;
--- 829,834 ----
***************
*** 852,868 ****
        }
        v = self->ob_item[i];
        if (i == self->ob_size - 1) {
!               status = list_resize(self, self->ob_size - 1);
!               assert(status >= 0);
                return v; /* and v now owns the reference the list had */
        }
        Py_INCREF(v);
!       status = list_ass_slice(self, i, i+1, (PyObject *)NULL);
!       assert(status >= 0);
!       /* Use status, so that in a release build compilers don't
!        * complain about the unused name.
!        */
!       return status++, v;
  }
  
  /* Reverse a slice of a list in place, from lo up to (exclusive) hi. */
--- 851,863 ----
        }
        v = self->ob_item[i];
        if (i == self->ob_size - 1) {
!               list_resize(self, self->ob_size - 1);
                return v; /* and v now owns the reference the list had */
        }
        Py_INCREF(v);
!       list_ass_slice(self, i, i+1, (PyObject *)NULL);
!       assert(!PyErr_Occurred());
!       return v;
  }
  
  /* Reverse a slice of a list in place, from lo up to (exclusive) hi. */


More information about the Python-Dev mailing list