sed: fix memory leak in 'r FILE' command

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Denys Vlasenko 2013-10-30 10:22:47 +01:00
parent af0cdeedc6
commit 9d46a7a9a4

View File

@ -848,7 +848,7 @@ static sed_cmd_t *branch_to(char *label)
static void append(char *s) static void append(char *s)
{ {
llist_add_to_end(&G.append_head, xstrdup(s)); llist_add_to_end(&G.append_head, s);
} }
static void flush_append(void) static void flush_append(void)
@ -1181,7 +1181,7 @@ static void process_files(void)
/* Append line to linked list to be printed later */ /* Append line to linked list to be printed later */
case 'a': case 'a':
append(sed_cmd->string); append(xstrdup(sed_cmd->string));
break; break;
/* Insert text before this line */ /* Insert text before this line */
@ -1203,11 +1203,10 @@ static void process_files(void)
rfile = fopen_for_read(sed_cmd->string); rfile = fopen_for_read(sed_cmd->string);
if (rfile) { if (rfile) {
char *line; char *line;
while ((line = xmalloc_fgetline(rfile)) while ((line = xmalloc_fgetline(rfile))
!= NULL) != NULL)
append(line); append(line);
xprint_and_close_file(rfile); fclose(rfile);
} }
break; break;