diff options
author | Bram Moolenaar <bram@vim.org> | 2013-04-05 19:32:36 +0200 |
---|---|---|
committer | Bram Moolenaar <bram@vim.org> | 2013-04-05 19:32:36 +0200 |
commit | c240606c1de953157e2947e0a0641007de287c38 (patch) | |
tree | c63dc811849a81d735146619e2d62869032ba470 | |
parent | 061e0f7388c9c6b89f4fd8f55230bfe2438d57b3 (diff) | |
download | vim-c240606c1de953157e2947e0a0641007de287c38.tar.gz |
Problem: Python list does not work correctly.
Solution: Fix it and add a test. (Yukihiro Nakadaira)
-rw-r--r-- | src/if_py_both.h | 2 | ||||
-rw-r--r-- | src/testdir/test86.in | 25 | ||||
-rw-r--r-- | src/testdir/test86.ok | 11 | ||||
-rw-r--r-- | src/version.c | 2 |
4 files changed, 39 insertions, 1 deletions
diff --git a/src/if_py_both.h b/src/if_py_both.h index 1d999095..f5617acf 100644 --- a/src/if_py_both.h +++ b/src/if_py_both.h @@ -1139,7 +1139,7 @@ ListSlice(PyObject *self, Py_ssize_t first, Py_ssize_t last) 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 index 5282269a..b53b6bf3 100644 --- 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 index 8960390f..fd670c84 100644 --- 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 index 78dc1d00..4d056c64 100644 --- 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, |