To: vim_dev@googlegroups.com Subject: Patch 7.4.161 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 7.4.161 Problem: Crash in Python exception handling. Solution: Only use exception variables if did_throw is set. (ZyX) Files: if_py_both.h *** ../vim-7.4.160/src/if_py_both.h 2014-01-14 19:35:49.000000000 +0100 --- src/if_py_both.h 2014-01-31 14:46:20.455526607 +0100 *************** *** 564,573 **** /* Keyboard interrupt should be preferred over anything else */ if (got_int) { ! if (current_exception != NULL) discard_current_exception(); - else - need_rethrow = did_throw = FALSE; got_int = FALSE; PyErr_SetNone(PyExc_KeyboardInterrupt); return -1; --- 564,571 ---- /* Keyboard interrupt should be preferred over anything else */ if (got_int) { ! if (did_throw) discard_current_exception(); got_int = FALSE; PyErr_SetNone(PyExc_KeyboardInterrupt); return -1; *************** *** 599,608 **** /* Python exception is preferred over vim one; unlikely to occur though */ else if (PyErr_Occurred()) { ! if (current_exception != NULL) ! discard_current_exception(); ! else ! need_rethrow = did_throw = FALSE; return -1; } /* Finally transform VimL exception to python one */ --- 597,603 ---- /* Python exception is preferred over vim one; unlikely to occur though */ else if (PyErr_Occurred()) { ! discard_current_exception(); return -1; } /* Finally transform VimL exception to python one */ *** ../vim-7.4.160/src/version.c 2014-01-24 19:55:33.078220735 +0100 --- src/version.c 2014-01-31 14:46:39.127526894 +0100 *************** *** 740,741 **** --- 740,743 ---- { /* Add new patch number below this line */ + /**/ + 161, /**/ -- Eagles may soar, but weasels don't get sucked into jet engines. /// Bram Moolenaar -- Bram@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 ///