]> git.pld-linux.org Git - packages/vim.git/blame - 7.2.192
- new
[packages/vim.git] / 7.2.192
CommitLineData
ef0610d1
AG
1To: vim-dev@vim.org
2Subject: Patch 7.2.192
3Fcc: outbox
4From: Bram Moolenaar <Bram@moolenaar.net>
5Mime-Version: 1.0
6Content-Type: text/plain; charset=UTF-8
7Content-Transfer-Encoding: 8bit
8------------
9
10Patch 7.2.192 (after 7.2.188)
11Problem: Still a crash in the garbage collector for a very rare situation.
12Solution: Make sure current_copyID is always incremented correctly. (Kent
13 Sibilev)
14Files: src/eval.c
15
16
17*** ../vim-7.2.191/src/eval.c 2009-05-26 22:58:43.000000000 +0200
18--- src/eval.c 2009-05-29 21:13:47.000000000 +0200
19***************
20*** 6526,6532 ****
21
22 /* Don't free variables in the previous_funccal list unless they are only
23 * referenced through previous_funccal. This must be first, because if
24! * the item is referenced elsewhere it must not be freed. */
25 for (fc = previous_funccal; fc != NULL; fc = fc->caller)
26 {
27 set_ref_in_ht(&fc->l_vars.dv_hashtab, copyID + 1);
28--- 6526,6532 ----
29
30 /* Don't free variables in the previous_funccal list unless they are only
31 * referenced through previous_funccal. This must be first, because if
32! * the item is referenced elsewhere the funccal must not be freed. */
33 for (fc = previous_funccal; fc != NULL; fc = fc->caller)
34 {
35 set_ref_in_ht(&fc->l_vars.dv_hashtab, copyID + 1);
36***************
37*** 6564,6573 ****
38 /* v: vars */
39 set_ref_in_ht(&vimvarht, copyID);
40
41! /* Free lists and dictionaries that are not referenced. */
42 did_free = free_unref_items(copyID);
43
44! /* check if any funccal can be freed now */
45 for (pfc = &previous_funccal; *pfc != NULL; )
46 {
47 if (can_free_funccal(*pfc, copyID))
48--- 6564,6577 ----
49 /* v: vars */
50 set_ref_in_ht(&vimvarht, copyID);
51
52! /*
53! * 2. Free lists and dictionaries that are not referenced.
54! */
55 did_free = free_unref_items(copyID);
56
57! /*
58! * 3. Check if any funccal can be freed now.
59! */
60 for (pfc = &previous_funccal; *pfc != NULL; )
61 {
62 if (can_free_funccal(*pfc, copyID))
63***************
64*** 9286,9292 ****
65 if (noref < 0 || noref > 1)
66 EMSG(_(e_invarg));
67 else
68! item_copy(&argvars[0], rettv, TRUE, noref == 0 ? ++current_copyID : 0);
69 }
70
71 /*
72--- 9290,9299 ----
73 if (noref < 0 || noref > 1)
74 EMSG(_(e_invarg));
75 else
76! {
77! current_copyID += COPYID_INC;
78! item_copy(&argvars[0], rettv, TRUE, noref == 0 ? current_copyID : 0);
79! }
80 }
81
82 /*
83***************
84*** 18966,18972 ****
85 char_u *s;
86 char_u numbuf[NUMBUFLEN];
87
88! s = echo_string(&v->di_tv, &tofree, numbuf, ++current_copyID);
89 list_one_var_a(prefix, v->di_key, v->di_tv.v_type,
90 s == NULL ? (char_u *)"" : s, first);
91 vim_free(tofree);
92--- 18973,18980 ----
93 char_u *s;
94 char_u numbuf[NUMBUFLEN];
95
96! current_copyID += COPYID_INC;
97! s = echo_string(&v->di_tv, &tofree, numbuf, current_copyID);
98 list_one_var_a(prefix, v->di_key, v->di_tv.v_type,
99 s == NULL ? (char_u *)"" : s, first);
100 vim_free(tofree);
101***************
102*** 19401,19407 ****
103 }
104 else if (eap->cmdidx == CMD_echo)
105 msg_puts_attr((char_u *)" ", echo_attr);
106! p = echo_string(&rettv, &tofree, numbuf, ++current_copyID);
107 if (p != NULL)
108 for ( ; *p != NUL && !got_int; ++p)
109 {
110--- 19409,19416 ----
111 }
112 else if (eap->cmdidx == CMD_echo)
113 msg_puts_attr((char_u *)" ", echo_attr);
114! current_copyID += COPYID_INC;
115! p = echo_string(&rettv, &tofree, numbuf, current_copyID);
116 if (p != NULL)
117 for ( ; *p != NUL && !got_int; ++p)
118 {
119*** ../vim-7.2.191/src/version.c 2009-05-26 22:58:43.000000000 +0200
120--- src/version.c 2009-06-03 13:21:20.000000000 +0200
121***************
122*** 678,679 ****
123--- 678,681 ----
124 { /* Add new patch number below this line */
125+ /**/
126+ 192,
127 /**/
128
129--
130Imagine a world without hypothetical situations.
131
132 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
133/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
134\\\ download, build and distribute -- http://www.A-A-P.org ///
135 \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
This page took 0.047617 seconds and 4 git commands to generate.