summaryrefslogtreecommitdiffstats
path: root/src/proto/eval.pro
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2015-02-03 12:55:18 +0100
committerBram Moolenaar <Bram@vim.org>2015-02-03 12:55:18 +0100
commit2459a5ecaa43c8549ea53e9364253ff891676da5 (patch)
treeb503323856e11d0e1e47e6c81875d32b1541ee04 /src/proto/eval.pro
parent4ac163ae5f137af236931e778660cf7878d70c25 (diff)
updated for version 7.4.609v7.4.609
Problem: For complicated list and dict use the garbage collector can run out of stack space. Solution: Use a stack of dicts and lists to be marked, thus making it iterative instead of recursive. (Ben Fritz)
Diffstat (limited to 'src/proto/eval.pro')
-rw-r--r--src/proto/eval.pro6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/proto/eval.pro b/src/proto/eval.pro
index b264365fe1..30416fb878 100644
--- a/src/proto/eval.pro
+++ b/src/proto/eval.pro
@@ -62,9 +62,9 @@ int list_insert_tv __ARGS((list_T *l, typval_T *tv, listitem_T *item));
void list_insert __ARGS((list_T *l, listitem_T *ni, listitem_T *item));
void vimlist_remove __ARGS((list_T *l, listitem_T *item, listitem_T *item2));
int garbage_collect __ARGS((void));
-void set_ref_in_ht __ARGS((hashtab_T *ht, int copyID));
-void set_ref_in_list __ARGS((list_T *l, int copyID));
-void set_ref_in_item __ARGS((typval_T *tv, int copyID));
+int set_ref_in_ht __ARGS((hashtab_T *ht, int copyID, list_stack_T **list_stack));
+int set_ref_in_list __ARGS((list_T *l, int copyID, ht_stack_T **ht_stack));
+int set_ref_in_item __ARGS((typval_T *tv, int copyID, ht_stack_T **ht_stack, list_stack_T **list_stack));
dict_T *dict_alloc __ARGS((void));
void dict_unref __ARGS((dict_T *d));
void dict_free __ARGS((dict_T *d, int recurse));