[vim/f17] - patchlevel 956

Karsten Hopp karsten at fedoraproject.org
Tue May 21 11:35:03 UTC 2013


commit dc13e80ac903ca064c9e46ebb37ba4c17e8be3f0
Author: Karsten Hopp <karsten at redhat.com>
Date:   Tue May 21 13:33:33 2013 +0200

    - patchlevel 956

 7.3.956 |  224 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 224 insertions(+), 0 deletions(-)
---
diff --git a/7.3.956 b/7.3.956
new file mode 100644
index 0000000..d4c1be6
--- /dev/null
+++ b/7.3.956
@@ -0,0 +1,224 @@
+To: vim_dev at googlegroups.com
+Subject: Patch 7.3.956
+Fcc: outbox
+From: Bram Moolenaar <Bram at moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.956
+Problem:    Python vim.bindeval() causes SIGABRT.
+Solution:   Make pygilstate a local variable. (Yukihiro Nakadaira)
+Files:	    src/if_py_both.h, src/if_python.c, src/if_python3.c
+
+
+*** ../vim-7.3.955/src/if_py_both.h	2013-05-15 16:11:46.000000000 +0200
+--- src/if_py_both.h	2013-05-15 17:37:48.000000000 +0200
+***************
+*** 1298,1304 ****
+--- 1298,1311 ----
+  	}
+      }
+  
++     Py_BEGIN_ALLOW_THREADS
++     Python_Lock_Vim();
++ 
+      error = func_call(name, &args, selfdict, &rettv);
++ 
++     Python_Release_Vim();
++     Py_END_ALLOW_THREADS
++ 
+      if (error != OK)
+      {
+  	result = NULL;
+*** ../vim-7.3.955/src/if_python.c	2013-05-15 16:04:34.000000000 +0200
+--- src/if_python.c	2013-05-15 17:37:48.000000000 +0200
+***************
+*** 676,686 ****
+  typedef PyObject PyThreadState;
+  #endif
+  
+! #ifdef PY_CAN_RECURSE
+! static PyGILState_STATE pygilstate = PyGILState_UNLOCKED;
+! #else
+  static PyThreadState *saved_python_thread = NULL;
+- #endif
+  
+  /*
+   * Suspend a thread of the Python interpreter, other threads are allowed to
+--- 676,683 ----
+  typedef PyObject PyThreadState;
+  #endif
+  
+! #ifndef PY_CAN_RECURSE
+  static PyThreadState *saved_python_thread = NULL;
+  
+  /*
+   * Suspend a thread of the Python interpreter, other threads are allowed to
+***************
+*** 689,699 ****
+      static void
+  Python_SaveThread(void)
+  {
+- #ifdef PY_CAN_RECURSE
+-     PyGILState_Release(pygilstate);
+- #else
+      saved_python_thread = PyEval_SaveThread();
+- #endif
+  }
+  
+  /*
+--- 686,692 ----
+***************
+*** 703,715 ****
+      static void
+  Python_RestoreThread(void)
+  {
+- #ifdef PY_CAN_RECURSE
+-     pygilstate = PyGILState_Ensure();
+- #else
+      PyEval_RestoreThread(saved_python_thread);
+      saved_python_thread = NULL;
+- #endif
+  }
+  
+      void
+  python_end()
+--- 696,705 ----
+      static void
+  Python_RestoreThread(void)
+  {
+      PyEval_RestoreThread(saved_python_thread);
+      saved_python_thread = NULL;
+  }
++ #endif
+  
+      void
+  python_end()
+***************
+*** 725,738 ****
+--- 715,736 ----
+  #ifdef DYNAMIC_PYTHON
+      if (hinstPython && Py_IsInitialized())
+      {
++ # ifdef PY_CAN_RECURSE
++ 	PyGILState_Ensure();
++ # else
+  	Python_RestoreThread();	    /* enter python */
++ # endif
+  	Py_Finalize();
+      }
+      end_dynamic_python();
+  #else
+      if (Py_IsInitialized())
+      {
++ # ifdef PY_CAN_RECURSE
++ 	PyGILState_Ensure();
++ # else
+  	Python_RestoreThread();	    /* enter python */
++ # endif
+  	Py_Finalize();
+      }
+  #endif
+***************
+*** 837,842 ****
+--- 835,843 ----
+  #if defined(HAVE_LOCALE_H) || defined(X_LOCALE)
+      char		*saved_locale;
+  #endif
++ #ifdef PY_CAN_RECURSE
++     PyGILState_STATE	pygilstate;
++ #endif
+  
+  #ifndef PY_CAN_RECURSE
+      if (recursive)
+***************
+*** 881,887 ****
+--- 882,892 ----
+      }
+  #endif
+  
++ #ifdef PY_CAN_RECURSE
++     pygilstate = PyGILState_Ensure();
++ #else
+      Python_RestoreThread();	    /* enter python */
++ #endif
+  
+      if (rettv == NULL)
+  	PyRun_SimpleString((char *)(cmd));
+***************
+*** 905,911 ****
+--- 910,920 ----
+  	PyErr_Clear();
+      }
+  
++ #ifdef PY_CAN_RECURSE
++     PyGILState_Release(pygilstate);
++ #else
+      Python_SaveThread();	    /* leave python */
++ #endif
+  
+  #if defined(HAVE_LOCALE_H) || defined(X_LOCALE)
+      if (saved_locale != NULL)
+*** ../vim-7.3.955/src/if_python3.c	2013-05-15 16:04:34.000000000 +0200
+--- src/if_python3.c	2013-05-15 17:37:48.000000000 +0200
+***************
+*** 699,706 ****
+   * 1. Python interpreter main program.
+   */
+  
+- static PyGILState_STATE pygilstate = PyGILState_UNLOCKED;
+- 
+      void
+  python3_end()
+  {
+--- 699,704 ----
+***************
+*** 718,724 ****
+      if (Py_IsInitialized())
+      {
+  	// acquire lock before finalizing
+! 	pygilstate = PyGILState_Ensure();
+  
+  	Py_Finalize();
+      }
+--- 716,722 ----
+      if (Py_IsInitialized())
+      {
+  	// acquire lock before finalizing
+! 	PyGILState_Ensure();
+  
+  	Py_Finalize();
+      }
+***************
+*** 826,831 ****
+--- 824,830 ----
+  #endif
+      PyObject		*cmdstr;
+      PyObject		*cmdbytes;
++     PyGILState_STATE	pygilstate;
+  
+  #if defined(MACOS) && !defined(MACOS_X_UNIX)
+      GetPort(&oldPort);
+*** ../vim-7.3.955/src/version.c	2013-05-15 16:27:33.000000000 +0200
+--- src/version.c	2013-05-15 17:48:15.000000000 +0200
+***************
+*** 730,731 ****
+--- 730,733 ----
+  {   /* Add new patch number below this line */
++ /**/
++     956,
+  /**/
+
+-- 
+GUEST:        He's killed the best man!
+SECOND GUEST: (holding a limp WOMAN) He's killed my auntie.
+FATHER:       No, please!  This is supposed to be a happy occasion!  Let's
+              not bicker and argue about who killed who ...
+                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram at Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///


More information about the scm-commits mailing list