1
0
mirror of https://github.com/weechat/weechat.git synced 2026-06-26 04:46:37 +02:00

Fix 14 memory leaks (in core, gui, irc, jabber, logger, script plugins)

This commit is contained in:
Sebastien Helleu
2009-02-04 14:12:46 +01:00
parent aeb11f7e05
commit 7cc562be45
11 changed files with 33 additions and 12 deletions
+4
View File
@@ -1637,8 +1637,12 @@ unhook (struct t_hook *hook)
free ((struct t_hook_fd *)hook->hook_data);
break;
case HOOK_TYPE_CONNECT:
if (HOOK_CONNECT(hook, proxy))
free (HOOK_CONNECT(hook, proxy));
if (HOOK_CONNECT(hook, address))
free (HOOK_CONNECT(hook, address));
if (HOOK_CONNECT(hook, local_hostname))
free (HOOK_CONNECT(hook, local_hostname));
if (HOOK_CONNECT(hook, hook_fd))
unhook (HOOK_CONNECT(hook, hook_fd));
if (HOOK_CONNECT(hook, child_pid) > 0)
+2
View File
@@ -293,6 +293,8 @@ gui_bar_window_content_free (struct t_gui_bar_window *bar_window)
free (bar_window->items_content[i]);
free (bar_window->items_refresh_needed[i]);
}
free (bar_window->items_subcount);
bar_window->items_subcount = NULL;
free (bar_window->items_content);
bar_window->items_content = NULL;
free (bar_window->items_refresh_needed);
+1
View File
@@ -700,6 +700,7 @@ gui_bar_set_items_array (struct t_gui_bar *bar, const char *items)
&(bar->items_subcount[i]));
}
}
string_free_exploded (tmp_array);
}
}
+2
View File
@@ -1248,6 +1248,8 @@ gui_buffer_close (struct t_gui_buffer *buffer)
gui_nicklist_remove_group (buffer, buffer->nicklist_root);
if (buffer->highlight_words)
free (buffer->highlight_words);
if (buffer->highlight_tags)
free (buffer->highlight_tags);
if (buffer->highlight_tags_array)
string_free_exploded (buffer->highlight_tags_array);
gui_keyboard_free_all (&buffer->keys, &buffer->last_key);
+1 -4
View File
@@ -743,13 +743,9 @@ gui_chat_line_free (struct t_gui_buffer *buffer, struct t_gui_line *line)
void
gui_chat_line_free_all (struct t_gui_buffer *buffer)
{
struct t_gui_line *next_line;
while (buffer->lines)
{
next_line = buffer->lines->next_line;
gui_chat_line_free (buffer, buffer->lines);
buffer->lines = next_line;
}
}
@@ -1119,6 +1115,7 @@ gui_chat_printf_date_tags (struct t_gui_buffer *buffer, time_t date,
free (new_msg);
new_msg = NULL;
}
free (modifier_data);
}
}
+6
View File
@@ -423,6 +423,12 @@ gui_window_free (struct t_gui_window *window)
gui_bar_window_free (window->bar_windows, window);
}
/* free other data */
if (window->layout_plugin_name)
free (window->layout_plugin_name);
if (window->layout_buffer_name)
free (window->layout_buffer_name);
/* remove window from windows list */
if (window->prev_window)
(window->prev_window)->next_window = window->next_window;
+2
View File
@@ -652,6 +652,8 @@ irc_server_free_data (struct t_irc_server *server)
if (server->options[i])
weechat_config_option_free (server->options[i]);
}
if (server->name)
free (server->name);
if (server->addresses_array)
weechat_string_free_exploded (server->addresses_array);
if (server->ports_array)
+2
View File
@@ -1344,6 +1344,8 @@ jabber_server_free_data (struct t_jabber_server *server)
if (server->options[i])
weechat_config_option_free (server->options[i]);
}
if (server->name)
free (server->name);
if (server->address)
free (server->address);
if (server->current_ip)
+2
View File
@@ -183,6 +183,8 @@ logger_buffer_free (struct t_logger_buffer *logger_buffer)
if (logger_buffer->log_filename)
free (logger_buffer->log_filename);
free (logger_buffer);
logger_buffers = new_logger_buffers;
}
+5 -6
View File
@@ -307,6 +307,7 @@ logger_get_filename (struct t_gui_buffer *buffer)
free (log_path);
if (log_path2)
free (log_path2);
free (mask_decoded);
return res;
}
@@ -487,12 +488,9 @@ logger_stop (struct t_logger_buffer *logger_buffer, int write_info_line)
void
logger_stop_all ()
{
struct t_logger_buffer *ptr_logger_buffer;
for (ptr_logger_buffer = logger_buffers; ptr_logger_buffer;
ptr_logger_buffer = ptr_logger_buffer->next_buffer)
while (logger_buffers)
{
logger_stop (ptr_logger_buffer, 1);
logger_stop (logger_buffers, 1);
}
}
@@ -766,11 +764,12 @@ logger_backlog (struct t_gui_buffer *buffer, const char *filename, int lines)
pos_message = strchr (ptr_lines->data, '\t');
if (pos_message)
{
memset (&tm_line, 0, sizeof (struct tm));
pos_message[0] = '\0';
error = strptime (ptr_lines->data,
weechat_config_string (logger_config_file_time_format),
&tm_line);
if (error && !error[0])
if (error && !error[0] && (tm_line.tm_year > 0))
datetime = mktime (&tm_line);
pos_message[0] = '\t';
}
+6 -2
View File
@@ -500,10 +500,14 @@ script_remove (struct t_weechat_plugin *weechat_plugin,
free (script->filename);
if (script->name)
free (script->name);
if (script->description)
free (script->description);
if (script->author)
free (script->author);
if (script->version)
free (script->version);
if (script->license)
free (script->license);
if (script->description)
free (script->description);
if (script->shutdown_func)
free (script->shutdown_func);
if (script->charset)