changeset 4260:d8acfc49d94e v7.3.881

updated for version 7.3.881 Problem: Python list does not work correctly. Solution: Fix it and add a test. (Yukihiro Nakadaira)
author Bram Moolenaar <bram@vim.org>
date Fri, 05 Apr 2013 19:32:36 +0200
parents d26e3be050b2
children 1659ea021276
files src/if_py_both.h src/testdir/test86.in src/testdir/test86.ok src/version.c
diffstat 4 files changed, 39 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- 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);
--- 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()
--- 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]
--- 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,