changeset 4270:c5eab656ec51 v7.3.885

updated for version 7.3.885 Problem: Double free for list and dict in Lua. (Shougo Matsu) Solution: Do not unref list and dict. (Yasuhiro Matsumoto)
author Bram Moolenaar <bram@vim.org>
date Fri, 12 Apr 2013 12:18:49 +0200
parents a079ef0ce001
children 317fd10cf5f0
files src/if_lua.c src/version.c
diffstat 2 files changed, 2 insertions(+), 16 deletions(-) [+]
line wrap: on
line diff
--- a/src/if_lua.c
+++ b/src/if_lua.c
@@ -665,13 +665,6 @@ luaV_pushtype(list_T, list, luaV_List)
 luaV_type_tostring(list, LUAVIM_LIST)
 
     static int
-luaV_list_gc (lua_State *L)
-{
-    list_unref(luaV_unbox(L, luaV_List, 1));
-    return 0;
-}
-
-    static int
 luaV_list_len (lua_State *L)
 {
     list_T *l = luaV_unbox(L, luaV_List, 1);
@@ -801,7 +794,6 @@ luaV_list_insert (lua_State *L)
 
 static const luaL_Reg luaV_List_mt[] = {
     {"__tostring", luaV_list_tostring},
-    {"__gc", luaV_list_gc},
     {"__len", luaV_list_len},
     {"__call", luaV_list_call},
     {"__index", luaV_list_index},
@@ -830,13 +822,6 @@ luaV_pushtype(dict_T, dict, luaV_Dict)
 luaV_type_tostring(dict, LUAVIM_DICT)
 
     static int
-luaV_dict_gc (lua_State *L)
-{
-    dict_unref(luaV_unbox(L, luaV_Dict, 1));
-    return 0;
-}
-
-    static int
 luaV_dict_len (lua_State *L)
 {
     dict_T *d = luaV_unbox(L, luaV_Dict, 1);
@@ -929,7 +914,6 @@ luaV_dict_newindex (lua_State *L)
 
 static const luaL_Reg luaV_Dict_mt[] = {
     {"__tostring", luaV_dict_tostring},
-    {"__gc", luaV_dict_gc},
     {"__len", luaV_dict_len},
     {"__call", luaV_dict_call},
     {"__index", luaV_dict_index},
--- a/src/version.c
+++ b/src/version.c
@@ -729,6 +729,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    885,
+/**/
     884,
 /**/
     883,