1
0
Fork 0
mirror of git://slackware.nl/current.git synced 2025-02-15 08:50:09 +01:00
slackware-current/source/ap/vim/patches/7.3.317
Patrick J Volkerding 9664bee729 Slackware 14.0
Wed Sep 26 01:10:42 UTC 2012
Slackware 14.0 x86_64 stable is released!

We're perfectionists here at Slackware, so this release has been a long
time a-brewing.  But we think you'll agree that it was worth the wait.
Slackware 14.0 combines modern components, ease of use, and flexible
configuration... our "KISS" philosophy demands it.

The ISOs are off to be replicated, a 6 CD-ROM 32-bit set and a
dual-sided
32-bit/64-bit x86/x86_64 DVD.  Please consider supporting the Slackware
project by picking up a copy from store.slackware.com.  We're taking
pre-orders now, and offer a discount if you sign up for a subscription.

Thanks to everyone who helped make this happen.  The Slackware team, the
upstream developers, and (of course) the awesome Slackware user
community.

Have fun!  :-)
2018-05-31 22:51:55 +02:00

116 lines
3.8 KiB
Text

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 ///