# HG changeset patch # User Bram Moolenaar # Date 1365183156 -7200 # Node ID d8acfc49d94e485f839d8e2534d302b91a98bf9d # Parent d26e3be050b2fb7245d080b200837ce28e091649 updated for version 7.3.881 Problem: Python list does not work correctly. Solution: Fix it and add a test. (Yukihiro Nakadaira) diff --git a/src/if_py_both.h b/src/if_py_both.h --- a/src/if_py_both.h +++ b/src/if_py_both.h @@ -1139,7 +1139,7 @@ ListSlice(PyObject *self, Py_ssize_t fir for (i = 0; i < n; ++i) { - PyObject *item = ListItem(self, i); + PyObject *item = ListItem(self, first + i); if (item == NULL) { Py_DECREF(list); diff --git a/src/testdir/test86.in b/src/testdir/test86.in --- a/src/testdir/test86.in +++ b/src/testdir/test86.in @@ -321,6 +321,31 @@ EOF :py trace_main() :py sys.settrace(None) :$put =string(l) +:" +:" Slice +:py ll = vim.bindeval('[0, 1, 2, 3, 4, 5]') +:py l = ll[:4] +:$put =string(pyeval('l')) +:py l = ll[2:] +:$put =string(pyeval('l')) +:py l = ll[:-4] +:$put =string(pyeval('l')) +:py l = ll[-2:] +:$put =string(pyeval('l')) +:py l = ll[2:4] +:$put =string(pyeval('l')) +:py l = ll[4:2] +:$put =string(pyeval('l')) +:py l = ll[-4:-2] +:$put =string(pyeval('l')) +:py l = ll[-2:-4] +:$put =string(pyeval('l')) +:py l = ll[:] +:$put =string(pyeval('l')) +:py l = ll[0:6] +:$put =string(pyeval('l')) +:py l = ll[-10:10] +:$put =string(pyeval('l')) :endfun :" :call Test() diff --git a/src/testdir/test86.ok b/src/testdir/test86.ok --- a/src/testdir/test86.ok +++ b/src/testdir/test86.ok @@ -65,3 +65,14 @@ undefined_name: Vim(let):Trace vim: Vim(let):E859: [1] [1, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 1] +[0, 1, 2, 3] +[2, 3, 4, 5] +[0, 1] +[4, 5] +[2, 3] +[] +[2, 3] +[] +[0, 1, 2, 3, 4, 5] +[0, 1, 2, 3, 4, 5] +[0, 1, 2, 3, 4, 5] diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -729,6 +729,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 881, +/**/ 880, /**/ 879,