changeset 4984:5b2c8f3b3906 v7.3.1237

updated for version 7.3.1237 Problem: Python: non-import errors not handled correctly. Solution: Let non-ImportError exceptions pass the finder. (ZyX)
author Bram Moolenaar <bram@vim.org>
date Sun, 23 Jun 2013 16:40:39 +0200
parents ca16c61923aa
children 7a5c346861e1
files src/if_py_both.h src/testdir/test86.ok src/testdir/test87.ok src/version.c
diffstat 4 files changed, 12 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/if_py_both.h
+++ b/src/if_py_both.h
@@ -1199,6 +1199,14 @@ FinderFindModule(PyObject *self, PyObjec
 
     if (!module)
     {
+	if (PyErr_Occurred())
+	{
+	    if (PyErr_ExceptionMatches(PyExc_ImportError))
+		PyErr_Clear();
+	    else
+		return NULL;
+	}
+
 	Py_INCREF(Py_None);
 	return Py_None;
     }
--- a/src/testdir/test86.ok
+++ b/src/testdir/test86.ok
@@ -497,7 +497,7 @@ vim.foreach_rtp(int, 2):TypeError:('fore
 > import
 import xxx_no_such_module_xxx:ImportError:('No module named xxx_no_such_module_xxx',)
 import failing_import:ImportError:('No module named failing_import',)
-import failing:ImportError:('No module named failing',)
+import failing:NotImplementedError:()
 > Dictionary
 >> DictionaryConstructor
 vim.Dictionary("abcI"):ValueError:('expected sequence element of size 2, but got sequence of size 1',)
--- a/src/testdir/test87.ok
+++ b/src/testdir/test87.ok
@@ -486,7 +486,7 @@ vim.foreach_rtp(int, 2):(<class 'TypeErr
 > import
 import xxx_no_such_module_xxx:(<class 'ImportError'>, ImportError('No module named xxx_no_such_module_xxx',))
 import failing_import:(<class 'ImportError'>, ImportError('No module named failing_import',))
-import failing:(<class 'ImportError'>, ImportError('No module named failing',))
+import failing:(<class 'NotImplementedError'>, NotImplementedError())
 > Dictionary
 >> DictionaryConstructor
 vim.Dictionary("abcI"):(<class 'ValueError'>, ValueError('expected sequence element of size 2, but got sequence of size 1',))
--- 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 */
 /**/
+    1237,
+/**/
     1236,
 /**/
     1235,