summaryrefslogtreecommitdiffstats
path: root/source/ap/vim/patches/7.3.317
diff options
context:
space:
mode:
Diffstat (limited to 'source/ap/vim/patches/7.3.317')
-rw-r--r--source/ap/vim/patches/7.3.317116
1 files changed, 116 insertions, 0 deletions
diff --git a/source/ap/vim/patches/7.3.317 b/source/ap/vim/patches/7.3.317
new file mode 100644
index 000000000..220cae218
--- /dev/null
+++ b/source/ap/vim/patches/7.3.317
@@ -0,0 +1,116 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.317
+Fcc: outbox
+From: Bram Moolenaar <Bram@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@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 ///