]> granicus.if.org Git - python/commit
Checkin Tim's fix to an error discussed on python-dev.
authorRaymond Hettinger <python@rcn.com>
Sun, 26 Sep 2004 19:24:20 +0000 (19:24 +0000)
committerRaymond Hettinger <python@rcn.com>
Sun, 26 Sep 2004 19:24:20 +0000 (19:24 +0000)
commitaa241e014979612e2c8851bf9b12c16bcc07b161
treecc33f2bd537e8d23dc24cf479829627280a25b36
parent55593c3ef530ea01b1cfb1f7c81ee34fd994d0ef
Checkin Tim's fix to an error discussed on python-dev.
Also, add a testcase.

Formerly, the list_extend() code used several local variables to remember
its state across iterations.  Since an iteration could call arbitrary
Python code, it was possible for the list state to be changed.  The new
code uses dynamic structure references instead of C locals.  So, they
are always up-to-date.

After list_resize() is called, its size has been updated but the new
cells are filled with NULLs.  These needed to be filled before arbitrary
iteration code was called; otherwise, that code could attempt to modify
a list that was in a semi-invalid state.  The solution was to change
the ob->size field back to a value reflecting the actual number of valid
cells.
Lib/test/test_builtin.py
Objects/listobject.c