]>
Commit | Line | Data |
---|---|---|
78f27e33 AG |
1 | To: vim-dev@vim.org |
2 | Subject: Patch 7.2.126 | |
3 | Fcc: outbox | |
4 | From: Bram Moolenaar <Bram@moolenaar.net> | |
5 | Mime-Version: 1.0 | |
6 | Content-Type: text/plain; charset=ISO-8859-1 | |
7 | Content-Transfer-Encoding: 8bit | |
8 | ------------ | |
9 | ||
10 | Patch 7.2.126 | |
11 | Problem: When EXITFREE is defined signs are not freed. | |
12 | Solution: Free all signs on exit. Also free keymaps. (Dominique Pelle) | |
13 | Files: src/misc2.c, src/ex_cmds.c, src/proto/ex_cmds.pro | |
14 | ||
15 | ||
16 | *** ../vim-7.2.125/src/misc2.c Thu Jan 22 21:31:24 2009 | |
17 | --- src/misc2.c Sun Feb 22 22:04:53 2009 | |
18 | *************** | |
19 | *** 1010,1015 **** | |
20 | --- 1010,1018 ---- | |
21 | # if defined(FEAT_PROFILE) | |
22 | do_cmdline_cmd((char_u *)"profdel *"); | |
23 | # endif | |
24 | + # if defined(FEAT_KEYMAP) | |
25 | + do_cmdline_cmd((char_u *)"set keymap="); | |
26 | + #endif | |
27 | ||
28 | # ifdef FEAT_TITLE | |
29 | free_titles(); | |
30 | *************** | |
31 | *** 1034,1039 **** | |
32 | --- 1037,1045 ---- | |
33 | free_regexp_stuff(); | |
34 | free_tag_stuff(); | |
35 | free_cd_dir(); | |
36 | + # ifdef FEAT_SIGNS | |
37 | + free_signs(); | |
38 | + # endif | |
39 | # ifdef FEAT_EVAL | |
40 | set_expr_line(NULL); | |
41 | # endif | |
42 | *** ../vim-7.2.125/src/ex_cmds.c Wed Feb 11 16:02:29 2009 | |
43 | --- src/ex_cmds.c Sun Feb 22 22:07:08 2009 | |
44 | *************** | |
45 | *** 6541,6546 **** | |
46 | --- 6541,6547 ---- | |
47 | static int last_sign_typenr = MAX_TYPENR; /* is decremented */ | |
48 | ||
49 | static void sign_list_defined __ARGS((sign_T *sp)); | |
50 | + static void sign_undefine __ARGS((sign_T *sp, sign_T *sp_prev)); | |
51 | ||
52 | /* | |
53 | * ":sign" command | |
54 | *************** | |
55 | *** 6749,6772 **** | |
56 | /* ":sign list {name}" */ | |
57 | sign_list_defined(sp); | |
58 | else | |
59 | - { | |
60 | /* ":sign undefine {name}" */ | |
61 | ! vim_free(sp->sn_name); | |
62 | ! vim_free(sp->sn_icon); | |
63 | ! #ifdef FEAT_SIGN_ICONS | |
64 | ! if (sp->sn_image != NULL) | |
65 | ! { | |
66 | ! out_flush(); | |
67 | ! gui_mch_destroy_sign(sp->sn_image); | |
68 | ! } | |
69 | ! #endif | |
70 | ! vim_free(sp->sn_text); | |
71 | ! if (sp_prev == NULL) | |
72 | ! first_sign = sp->sn_next; | |
73 | ! else | |
74 | ! sp_prev->sn_next = sp->sn_next; | |
75 | ! vim_free(sp); | |
76 | ! } | |
77 | } | |
78 | } | |
79 | else | |
80 | --- 6750,6757 ---- | |
81 | /* ":sign list {name}" */ | |
82 | sign_list_defined(sp); | |
83 | else | |
84 | /* ":sign undefine {name}" */ | |
85 | ! sign_undefine(sp, sp_prev); | |
86 | } | |
87 | } | |
88 | else | |
89 | *************** | |
90 | *** 7015,7020 **** | |
91 | --- 7000,7030 ---- | |
92 | } | |
93 | ||
94 | /* | |
95 | + * Undefine a sign and free its memory. | |
96 | + */ | |
97 | + static void | |
98 | + sign_undefine(sp, sp_prev) | |
99 | + sign_T *sp; | |
100 | + sign_T *sp_prev; | |
101 | + { | |
102 | + vim_free(sp->sn_name); | |
103 | + vim_free(sp->sn_icon); | |
104 | + #ifdef FEAT_SIGN_ICONS | |
105 | + if (sp->sn_image != NULL) | |
106 | + { | |
107 | + out_flush(); | |
108 | + gui_mch_destroy_sign(sp->sn_image); | |
109 | + } | |
110 | + #endif | |
111 | + vim_free(sp->sn_text); | |
112 | + if (sp_prev == NULL) | |
113 | + first_sign = sp->sn_next; | |
114 | + else | |
115 | + sp_prev->sn_next = sp->sn_next; | |
116 | + vim_free(sp); | |
117 | + } | |
118 | + | |
119 | + /* | |
120 | * Get highlighting attribute for sign "typenr". | |
121 | * If "line" is TRUE: line highl, if FALSE: text highl. | |
122 | */ | |
123 | *************** | |
124 | *** 7088,7093 **** | |
125 | --- 7098,7115 ---- | |
126 | return (char_u *)_("[Deleted]"); | |
127 | } | |
128 | ||
129 | + #if defined(EXITFREE) || defined(PROTO) | |
130 | + /* | |
131 | + * Undefine/free all signs. | |
132 | + */ | |
133 | + void | |
134 | + free_signs() | |
135 | + { | |
136 | + while (first_sign != NULL) | |
137 | + sign_undefine(first_sign, NULL); | |
138 | + } | |
139 | + #endif | |
140 | + | |
141 | #endif | |
142 | ||
143 | #if defined(FEAT_GUI) || defined(FEAT_CLIENTSERVER) || defined(PROTO) | |
144 | *** ../vim-7.2.125/src/proto/ex_cmds.pro Sat Nov 15 14:10:23 2008 | |
145 | --- src/proto/ex_cmds.pro Sun Feb 22 22:04:53 2009 | |
146 | *************** | |
147 | *** 40,45 **** | |
148 | --- 40,46 ---- | |
149 | int read_viminfo_sub_string __ARGS((vir_T *virp, int force)); | |
150 | void write_viminfo_sub_string __ARGS((FILE *fp)); | |
151 | void free_old_sub __ARGS((void)); | |
152 | + void free_signs __ARGS((void)); | |
153 | int prepare_tagpreview __ARGS((int undo_sync)); | |
154 | void ex_help __ARGS((exarg_T *eap)); | |
155 | char_u *check_help_lang __ARGS((char_u *arg)); | |
156 | *** ../vim-7.2.125/src/version.c Tue Feb 24 04:11:07 2009 | |
157 | --- src/version.c Tue Feb 24 04:24:46 2009 | |
158 | *************** | |
159 | *** 678,679 **** | |
160 | --- 678,681 ---- | |
161 | { /* Add new patch number below this line */ | |
162 | + /**/ | |
163 | + 126, | |
164 | /**/ | |
165 | ||
166 | -- | |
167 | hundred-and-one symptoms of being an internet addict: | |
168 | 125. You begin to wonder how often it REALLY is necessary to get up | |
169 | and shower or bathe. | |
170 | ||
171 | /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ | |
172 | /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ | |
173 | \\\ download, build and distribute -- http://www.A-A-P.org /// | |
174 | \\\ help me help AIDS victims -- http://ICCF-Holland.org /// |