Fix some memory leaks that occur when clearing the URL-grabber list.

git-svn-id: svn://svn.code.sf.net/p/bitchx/code/trunk@133 13b04d17-f746-0410-82c6-800466cd88b0
This commit is contained in:
Kevin Easton
2011-06-01 12:53:30 +00:00
parent 52753a9e15
commit 3f8952f20a

View File

@@ -1575,8 +1575,16 @@ BUILT_IN_COMMAND(url_grabber)
snprintf(buffer, BIG_BUFFER_SIZE, "%s/BitchX.url", get_string_var(CTOOLZ_DIR_VAR)); snprintf(buffer, BIG_BUFFER_SIZE, "%s/BitchX.url", get_string_var(CTOOLZ_DIR_VAR));
filename = expand_twiddle(buffer); filename = expand_twiddle(buffer);
if (!filename || !(file = fopen(filename, "a"))) if (!filename)
return; return;
file = fopen(filename, "a");
if (!file)
{
new_free(&filename);
return;
}
if (args && *args && (isdigit((unsigned char)*args) || *args == '-')) if (args && *args && (isdigit((unsigned char)*args) || *args == '-'))
number = next_arg(args, &args); number = next_arg(args, &args);
for (i = 0, cur_url = url_list; cur_url; cur_url = cur_url->next, i++) for (i = 0, cur_url = url_list; cur_url; cur_url = cur_url->next, i++)
@@ -1586,14 +1594,16 @@ BUILT_IN_COMMAND(url_grabber)
} }
new_free(&filename); new_free(&filename);
fclose(file); fclose(file);
prev_url = url_list;
while (prev_url) /* Clear URL list */
while (url_list)
{ {
cur_url = prev_url; UrlList *tmp = url_list;
prev_url = cur_url->next; url_list = url_list->next;
new_free(&cur_url); new_free(&tmp->name);
new_free(&tmp);
} }
url_list = NULL;
bitchsay("Url list saved"); bitchsay("Url list saved");
do_display = 0; do_display = 0;
} }
@@ -1621,14 +1631,13 @@ BUILT_IN_COMMAND(url_grabber)
{ {
if (!*++p) if (!*++p)
{ {
prev_url = url_list; while (url_list)
while (prev_url)
{ {
cur_url = prev_url; UrlList *tmp = url_list;
prev_url = cur_url->next; url_list = url_list->next;
new_free(&cur_url); new_free(&tmp->name);
new_free(&tmp);
} }
url_list = NULL;
bitchsay("Url list cleared"); bitchsay("Url list cleared");
} }
else else
@@ -1641,6 +1650,7 @@ BUILT_IN_COMMAND(url_grabber)
url_list = url_list->next; url_list = url_list->next;
else else
prev_url->next = cur_url->next; prev_url->next = cur_url->next;
new_free(&cur_url->name);
new_free(&cur_url); new_free(&cur_url);
bitchsay("Cleared Url [%d]", q); bitchsay("Cleared Url [%d]", q);
} }