[vim] - patchlevel 317

Karsten Hopp karsten at fedoraproject.org
Mon Sep 26 13:57:20 UTC 2011


commit 98cd3d4a69189703e21b1f7e56491e4095db7515
Author: Karsten Hopp <karsten at redhat.com>
Date:   Mon Sep 26 15:58:49 2011 +0200

    - patchlevel 317

 7.3.317 |  116 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 116 insertions(+), 0 deletions(-)
---
diff --git a/7.3.317 b/7.3.317
new file mode 100644
index 0000000..220cae2
--- /dev/null
+++ b/7.3.317
@@ -0,0 +1,116 @@
+To: vim_dev at googlegroups.com
+Subject: Patch 7.3.317
+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.317
+Problem:    Calling debug.debug() in Lua may cause Vim to hang.
+Solution:   Add a better debug method. (Rob Hoelz, Luis Carvalho)
+Files:	    src/if_lua.c
+
+
+*** ../vim-7.3.316/src/if_lua.c	2011-01-17 19:53:20.000000000 +0100
+--- src/if_lua.c	2011-09-21 17:15:21.000000000 +0200
+***************
+*** 100,105 ****
+--- 100,106 ----
+  #define lua_setfield dll_lua_setfield
+  #define lua_rawset dll_lua_rawset
+  #define lua_rawseti dll_lua_rawseti
++ #define lua_remove dll_lua_remove
+  #define lua_setmetatable dll_lua_setmetatable
+  #define lua_call dll_lua_call
+  #define lua_pcall dll_lua_pcall
+***************
+*** 161,166 ****
+--- 162,168 ----
+  void (*dll_lua_setfield) (lua_State *L, int idx, const char *k);
+  void (*dll_lua_rawset) (lua_State *L, int idx);
+  void (*dll_lua_rawseti) (lua_State *L, int idx, int n);
++ void (*dll_lua_remove) (lua_State *L, int idx);
+  int (*dll_lua_setmetatable) (lua_State *L, int objindex);
+  void (*dll_lua_call) (lua_State *L, int nargs, int nresults);
+  int (*dll_lua_pcall) (lua_State *L, int nargs, int nresults, int errfunc);
+***************
+*** 229,234 ****
+--- 231,237 ----
+      {"lua_setfield", (luaV_function) &dll_lua_setfield},
+      {"lua_rawset", (luaV_function) &dll_lua_rawset},
+      {"lua_rawseti", (luaV_function) &dll_lua_rawseti},
++     {"lua_remove", (luaV_function) &dll_lua_remove},
+      {"lua_setmetatable", (luaV_function) &dll_lua_setmetatable},
+      {"lua_call", (luaV_function) &dll_lua_call},
+      {"lua_pcall", (luaV_function) &dll_lua_pcall},
+***************
+*** 924,929 ****
+--- 927,957 ----
+  }
+  
+      static int
++ luaV_debug(lua_State *L)
++ {
++     lua_settop(L, 0);
++     lua_getglobal(L, "vim");
++     lua_getfield(L, -1, "eval");
++     lua_remove(L, -2); /* vim.eval at position 1 */
++     for (;;)
++     {
++ 	const char *input;
++ 	size_t l;
++ 	lua_pushvalue(L, 1); /* vim.eval */
++ 	lua_pushliteral(L, "input('lua_debug> ')");
++ 	lua_call(L, 1, 1); /* return string */
++ 	input = lua_tolstring(L, -1, &l);
++ 	if (l == 0 || strcmp(input, "cont") == 0)
++ 	    return 0;
++ 	msg_putchar('\n'); /* avoid outputting on input line */
++ 	if (luaL_loadbuffer(L, input, l, "=(debug command)")
++ 		|| lua_pcall(L, 0, 0, 0))
++ 	    luaV_emsg(L);
++ 	lua_settop(L, 1); /* remove eventual returns, but keep vim.eval */
++     }
++ }
++ 
++     static int
+  luaV_command(lua_State *L)
+  {
+      do_cmdline_cmd((char_u *) luaL_checkstring(L, 1));
+***************
+*** 1082,1087 ****
+--- 1110,1120 ----
+      /* print */
+      lua_pushcfunction(L, luaV_print);
+      lua_setglobal(L, "print");
++     /* debug.debug */
++     lua_getglobal(L, "debug");
++     lua_pushcfunction(L, luaV_debug);
++     lua_setfield(L, -2, "debug");
++     lua_pop(L, 1);
+      /* free */
+      lua_pushlightuserdata(L, (void *) LUAVIM_FREE);
+      lua_pushcfunction(L, luaV_free);
+*** ../vim-7.3.316/src/version.c	2011-09-21 13:40:13.000000000 +0200
+--- src/version.c	2011-09-21 17:14:01.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     317,
+  /**/
+
+-- 
+Q: What is the difference betwee open-source and commercial software?
+A: If you have a problem with commercial software you can call a phone
+   number and they will tell you it might be solved in a future version.
+   For open-source software there isn't a phone number to call, but you
+   get the solution within a day.
+
+ /// 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