]> granicus.if.org Git - vim/commitdiff
updated for version 7.3.948 v7.3.948
authorBram Moolenaar <Bram@vim.org>
Wed, 15 May 2013 12:51:35 +0000 (14:51 +0200)
committerBram Moolenaar <Bram@vim.org>
Wed, 15 May 2013 12:51:35 +0000 (14:51 +0200)
Problem:    Cannot build with Python 2.2
Solution:   Make Python interface work with Python 2.2
            Make 2.2 the first supported version. (ZyX)

src/auto/configure
src/configure.in
src/if_py_both.h
src/if_python.c
src/if_python3.c
src/testdir/test86.in
src/testdir/test86.ok
src/testdir/test87.ok
src/version.c

index 6130945890f5e527a81fecbb1fcce1a81c9719fc..0559ce23cc936772fbab01411dea799fb883f0ad 100755 (executable)
@@ -5289,10 +5289,10 @@ fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $vi_cv_var_python_version" >&5
 $as_echo "$vi_cv_var_python_version" >&6; }
 
-        { $as_echo "$as_me:${as_lineno-$LINENO}: checking Python is 1.4 or better" >&5
-$as_echo_n "checking Python is 1.4 or better... " >&6; }
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking Python is 2.2 or better" >&5
+$as_echo_n "checking Python is 2.2 or better... " >&6; }
     if ${vi_cv_path_python} -c \
-       "import sys; sys.exit(${vi_cv_var_python_version} < 1.4)"
+       "import sys; sys.exit(${vi_cv_var_python_version} < 2.2)"
     then
       { $as_echo "$as_me:${as_lineno-$LINENO}: result: yep" >&5
 $as_echo "yep" >&6; }
index 34a75b3cd8ffcb4bcb3d862bce4d98132cbc2ef0..886c5f3f48a0451a0f6bac70cc03a2a4fca66a82 100644 (file)
@@ -863,10 +863,10 @@ if test "$enable_pythoninterp" = "yes" -o "$enable_pythoninterp" = "dynamic"; th
            ${vi_cv_path_python} -c 'import sys; print sys.version[:3]'`
     ]])
 
-    dnl -- it must be at least version 1.4
-    AC_MSG_CHECKING(Python is 1.4 or better)
+    dnl -- it must be at least version 2.2
+    AC_MSG_CHECKING(Python is 2.2 or better)
     if ${vi_cv_path_python} -c \
-       "import sys; sys.exit(${vi_cv_var_python_version} < 1.4)"
+       "import sys; sys.exit(${vi_cv_var_python_version} < 2.2)"
     then
       AC_MSG_RESULT(yep)
 
index 6370bd18a2fb05a35287a3c965baeefafd0a01c0..6f9166950a2ed61e4108c7805556b768a08d517d 100644 (file)
@@ -564,6 +564,7 @@ IterNew(void *start, destructorfun destruct, nextfun next)
     return (PyObject *)(self);
 }
 
+#if 0 /* unused */
     static void
 IterDestructor(PyObject *self)
 {
@@ -573,6 +574,7 @@ IterDestructor(PyObject *self)
 
     DESTRUCTOR_FINISH(self);
 }
+#endif
 
     static PyObject *
 IterNext(PyObject *self)
@@ -696,13 +698,7 @@ DictionarySetattr(PyObject *self, char *name, PyObject *val)
        }
        else
        {
-           if (!PyBool_Check(val))
-           {
-               PyErr_SetString(PyExc_TypeError, _("Only boolean objects are allowed"));
-               return -1;
-           }
-
-           if (val == Py_True)
+           if (PyObject_IsTrue(val))
                this->dict->dv_lock = VAR_LOCKED;
            else
                this->dict->dv_lock = 0;
@@ -1202,13 +1198,7 @@ ListSetattr(PyObject *self, char *name, PyObject *val)
        }
        else
        {
-           if (!PyBool_Check(val))
-           {
-               PyErr_SetString(PyExc_TypeError, _("Only boolean objects are allowed"));
-               return -1;
-           }
-
-           if (val == Py_True)
+           if (PyObject_IsTrue(val))
                this->list->lv_lock = VAR_LOCKED;
            else
                this->list->lv_lock = 0;
@@ -1484,14 +1474,8 @@ OptionsAssItem(OptionsObject *this, PyObject *keyObject, PyObject *valObject)
 
     if (flags & SOPT_BOOL)
     {
-       if (!PyBool_Check(valObject))
-       {
-           PyErr_SetString(PyExc_ValueError, "Object must be boolean");
-           return -1;
-       }
-
-       r = set_option_value_for(key, (valObject == Py_True), NULL, opt_flags,
-                               this->opt_type, this->from);
+       r = set_option_value_for(key, PyObject_IsTrue(valObject), NULL,
+                               opt_flags, this->opt_type, this->from);
     }
     else if (flags & SOPT_NUM)
     {
index 56db2b273c853389de3a7b5cefe73cc7f4194947..575f8220029c2b956c01995785160ba92cf6d0e9 100644 (file)
@@ -229,6 +229,7 @@ struct PyMethodDef { Py_ssize_t a; };
 # define _Py_TrueStruct (*dll__Py_TrueStruct)
 # define PyObject_Init dll__PyObject_Init
 # define PyObject_GetIter dll_PyObject_GetIter
+# define PyObject_IsTrue dll_PyObject_IsTrue
 # if defined(PY_VERSION_HEX) && PY_VERSION_HEX >= 0x02020000
 #  define PyType_IsSubtype dll_PyType_IsSubtype
 # endif
@@ -324,6 +325,7 @@ static int(*dll_Py_IsInitialized)(void);
 static PyObject*(*dll__PyObject_New)(PyTypeObject *, PyObject *);
 static PyObject*(*dll__PyObject_Init)(PyObject *, PyTypeObject *);
 static PyObject* (*dll_PyObject_GetIter)(PyObject *);
+static int (*dll_PyObject_IsTrue)(PyObject *);
 # if defined(PY_VERSION_HEX) && PY_VERSION_HEX >= 0x02070000
 static iternextfunc dll__PyObject_NextNotImplemented;
 # endif
@@ -459,6 +461,7 @@ static struct
     {"_PyObject_New", (PYTHON_PROC*)&dll__PyObject_New},
     {"PyObject_Init", (PYTHON_PROC*)&dll__PyObject_Init},
     {"PyObject_GetIter", (PYTHON_PROC*)&dll_PyObject_GetIter},
+    {"PyObject_IsTrue", (PYTHON_PROC*)&dll_PyObject_IsTrue},
 # if defined(PY_VERSION_HEX) && PY_VERSION_HEX >= 0x02070000
     {"_PyObject_NextNotImplemented", (PYTHON_PROC*)&dll__PyObject_NextNotImplemented},
 # endif
@@ -787,7 +790,10 @@ Python_Init(void)
         * so the following does both: unlock GIL and save thread state in TLS
         * without deleting thread state
         */
-       PyEval_SaveThread();
+#ifndef PY_CAN_RECURSE
+       saved_python_thread =
+#endif
+           PyEval_SaveThread();
 
        initialised = 1;
     }
index cae18c25e28ccc5d692a38cb1481cecdd7c12753..477c367ef4ff21132db4aa45c40d10bb94c8c405 100644 (file)
@@ -156,6 +156,7 @@ static void init_structs(void);
 # define PyMapping_Items py3_PyMapping_Items
 # define PyIter_Next py3_PyIter_Next
 # define PyObject_GetIter py3_PyObject_GetIter
+# define PyObject_IsTrue py3_PyObject_IsTrue
 # define PyModule_GetDict py3_PyModule_GetDict
 #undef PyRun_SimpleString
 # define PyRun_SimpleString py3_PyRun_SimpleString
@@ -264,6 +265,7 @@ static PyObject* (*py3_PyLong_FromLong)(long);
 static PyObject* (*py3_PyDict_New)(void);
 static PyObject* (*py3_PyIter_Next)(PyObject *);
 static PyObject* (*py3_PyObject_GetIter)(PyObject *);
+static int (*py3_PyObject_IsTrue)(PyObject *);
 static PyObject* (*py3_Py_BuildValue)(char *, ...);
 static int (*py3_PyType_Ready)(PyTypeObject *type);
 static int (*py3_PyDict_SetItemString)(PyObject *dp, char *key, PyObject *item);
@@ -392,6 +394,7 @@ static struct
     {"PyMapping_Items", (PYTHON_PROC*)&py3_PyMapping_Items},
     {"PyIter_Next", (PYTHON_PROC*)&py3_PyIter_Next},
     {"PyObject_GetIter", (PYTHON_PROC*)&py3_PyObject_GetIter},
+    {"PyObject_IsTrue", (PYTHON_PROC*)&py3_PyObject_IsTrue},
     {"PyLong_FromLong", (PYTHON_PROC*)&py3_PyLong_FromLong},
     {"PyDict_New", (PYTHON_PROC*)&py3_PyDict_New},
     {"PyType_Ready", (PYTHON_PROC*)&py3_PyType_Ready},
index 5b87633a7577ee7d5761f33f8315952e9aa5c795..8ef7e057fe2130dc9762c408604daf87daf4b46b 100644 (file)
@@ -183,38 +183,21 @@ STARTTEST
 :   $put ='[0.0, 0.0]'
 :endif
 :let messages=[]
-:py <<EOF
+py <<EOF
 d=vim.bindeval('{}')
 m=vim.bindeval('messages')
-try:
-    d['abc']
-except Exception as e:
-    m.extend([e.__class__.__name__])
-
-try:
-    d['abc']="\0"
-except Exception as e:
-    m.extend([e.__class__.__name__])
-
-try:
-    d['abc']=vim
-except Exception as e:
-    m.extend([e.__class__.__name__])
-
-try:
-    d['']=1
-except Exception as e:
-    m.extend([e.__class__.__name__])
-
-try:
-    d['a\0b']=1
-except Exception as e:
-    m.extend([e.__class__.__name__])
+def em(expr, g=globals(), l=locals()):
+    try:
+        exec(expr, g, l)
+    except:
+        m.extend([sys.exc_type.__name__])
 
-try:
-    d[b'a\0b']=1
-except Exception as e:
-    m.extend([e.__class__.__name__])
+em('d["abc"]')
+em('d["abc"]="\\0"')
+em('d["abc"]=vim')
+em('d[""]=1')
+em('d["a\\0b"]=1')
+em('d[u"a\\0b"]=1')
 EOF
 :$put =messages
 :unlet messages
@@ -394,14 +377,14 @@ py << EOF
 def e(s, g=globals(), l=locals()):
     try:
         exec(s, g, l)
-    except Exception as e:
-        vim.command('throw ' + repr(e.__class__.__name__))
+    except:
+        vim.command('throw ' + repr(sys.exc_type.__name__))
 
 def ev(s, g=globals(), l=locals()):
     try:
         return eval(s, g, l)
-    except Exception as e:
-        vim.command('throw ' + repr(e.__class__.__name__))
+    except:
+        vim.command('throw ' + repr(sys.exc_type.__name__))
         return 0
 EOF
 :function E(s)
index 4b54d985f351ddba29ec382b60b0c62c4cbc343a..481acae7dcac5751f80b6bd67ed93079c59281e1 100644 (file)
@@ -82,7 +82,6 @@ def
 bar
 >>> paste
   p/gopts1: False
-  inv: 2! ValueError
   p/wopts1! KeyError
   inv: 2! KeyError
   wopts1! KeyError
@@ -224,7 +223,6 @@ bar
   wopts2! KeyError
   wopts3! KeyError
   p/bopts1: False
-  inv: 2! ValueError
   G: 0
   W: 1:0 2:1 3:0 4:1
   B: 1:0 2:1 3:0 4:1
@@ -280,7 +278,6 @@ bar
   wopts2! KeyError
   wopts3! KeyError
   p/bopts1: False
-  inv: 2! ValueError
   G: 0
   W: 1:0 2:1 3:0 4:1
   B: 1:0 2:1 3:0 4:1
index e7d031bfb91cd910e6030ab51f16aa3eb5283ce4..3addec8b3fc71e922a30ce5e5b16ab0a8b572154 100644 (file)
@@ -71,7 +71,6 @@ def
 bar
 >>> paste
   p/gopts1: False
-  inv: 2! ValueError
   p/wopts1! KeyError
   inv: 2! KeyError
   wopts1! KeyError
@@ -213,7 +212,6 @@ bar
   wopts2! KeyError
   wopts3! KeyError
   p/bopts1: False
-  inv: 2! ValueError
   G: 0
   W: 1:0 2:1 3:0 4:1
   B: 1:0 2:1 3:0 4:1
@@ -269,7 +267,6 @@ bar
   wopts2! KeyError
   wopts3! KeyError
   p/bopts1: False
-  inv: 2! ValueError
   G: 0
   W: 1:0 2:1 3:0 4:1
   B: 1:0 2:1 3:0 4:1
index 3e4c310d75312f6790980414d15f7d8051799603..a6ebcab23f990aa4781db33557a68f389e513eba 100644 (file)
@@ -728,6 +728,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    948,
 /**/
     947,
 /**/