aboutsummaryrefslogtreecommitdiff
path: root/editors
diff options
context:
space:
mode:
Diffstat (limited to 'editors')
-rw-r--r--editors/sed.c17
1 files changed, 13 insertions, 4 deletions
diff --git a/editors/sed.c b/editors/sed.c
index f4a5f7b8a..07f7b7a9b 100644
--- a/editors/sed.c
+++ b/editors/sed.c
@@ -102,7 +102,7 @@ enum {
102 102
103struct sed_FILE { 103struct sed_FILE {
104 struct sed_FILE *next; /* Next (linked list, NULL terminated) */ 104 struct sed_FILE *next; /* Next (linked list, NULL terminated) */
105 const char *fname; 105 char *fname;
106 FILE *fp; 106 FILE *fp;
107}; 107};
108 108
@@ -194,9 +194,6 @@ static void sed_free_and_close_stuff(void)
194 while (sed_cmd) { 194 while (sed_cmd) {
195 sed_cmd_t *sed_cmd_next = sed_cmd->next; 195 sed_cmd_t *sed_cmd_next = sed_cmd->next;
196 196
197 if (sed_cmd->sw_file)
198 fclose(sed_cmd->sw_file);
199
200 /* Used to free regexps, but now there is code 197 /* Used to free regexps, but now there is code
201 * in get_address() which can reuse a regexp 198 * in get_address() which can reuse a regexp
202 * for constructs as /regexp/cmd1;//cmd2 199 * for constructs as /regexp/cmd1;//cmd2
@@ -223,6 +220,18 @@ static void sed_free_and_close_stuff(void)
223 220
224 if (G.current_fp) 221 if (G.current_fp)
225 fclose(G.current_fp); 222 fclose(G.current_fp);
223
224 if (G.FILE_head) {
225 struct sed_FILE *cur = G.FILE_head;
226 do {
227 struct sed_FILE *p;
228 fclose(cur->fp);
229 free(cur->fname);
230 p = cur;
231 cur = cur->next;
232 free(p);
233 } while (cur);
234 }
226} 235}
227#else 236#else
228void sed_free_and_close_stuff(void); 237void sed_free_and_close_stuff(void);