From f391a5b5b0b0e4955e9230256b08a4c4387d24b8 Mon Sep 17 00:00:00 2001 From: Steven Schubiger Date: Tue, 2 Mar 2010 20:35:02 +0100 Subject: [PATCH] Fix memory leak in retrieve_from_file. --- src/ChangeLog | 4 ++++ src/retr.c | 10 +++++++--- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 1b8cb04d..0ee92fdc 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,7 @@ +2010-03-02 Steven Schubiger + + * retr.c (retrieve_from_file): Free memory of input file. + 2010-03-01 Steven Schubiger * retr.c (retrieve_url): Retrieve the local filename from ftp_loop. diff --git a/src/retr.c b/src/retr.c index ebcc3c20..55d5be78 100644 --- a/src/retr.c +++ b/src/retr.c @@ -889,7 +889,7 @@ retrieve_from_file (const char *file, bool html, int *count) struct urlpos *url_list, *cur_url; struct iri *iri = iri_new(); - char *input_file = NULL; + char *input_file, *url_file = NULL; const char *url = file; status = RETROK; /* Suppose everything is OK. */ @@ -916,11 +916,11 @@ retrieve_from_file (const char *file, bool html, int *count) if (!opt.base_href) opt.base_href = xstrdup (url); - status = retrieve_url (url_parsed, url, &input_file, NULL, NULL, &dt, + status = retrieve_url (url_parsed, url, &url_file, NULL, NULL, &dt, false, iri, true); url_free (url_parsed); - if (!input_file || (status != RETROK)) + if (!url_file || (status != RETROK)) return status; if (dt & TEXTHTML) @@ -935,6 +935,8 @@ retrieve_from_file (const char *file, bool html, int *count) iri->utf8_encode = opt.enable_iri; xfree_null (iri->orig_url); iri->orig_url = NULL; + + input_file = url_file; } else input_file = (char *) file; @@ -942,6 +944,8 @@ retrieve_from_file (const char *file, bool html, int *count) url_list = (html ? get_urls_html (input_file, NULL, NULL, iri) : get_urls_file (input_file)); + xfree_null (url_file); + for (cur_url = url_list; cur_url; cur_url = cur_url->next, ++*count) { char *filename = NULL, *new_file = NULL; -- 2.39.2