diff --git a/src/core/wee-hook.c b/src/core/wee-hook.c index 39c8fbdc2..3d8deec35 100644 --- a/src/core/wee-hook.c +++ b/src/core/wee-hook.c @@ -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) diff --git a/src/gui/gui-bar-window.c b/src/gui/gui-bar-window.c index 961e3bf4f..7bc6bf413 100644 --- a/src/gui/gui-bar-window.c +++ b/src/gui/gui-bar-window.c @@ -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); diff --git a/src/gui/gui-bar.c b/src/gui/gui-bar.c index 2246d1df8..0f5c86b89 100644 --- a/src/gui/gui-bar.c +++ b/src/gui/gui-bar.c @@ -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); } } diff --git a/src/gui/gui-buffer.c b/src/gui/gui-buffer.c index 2b18bfb49..3846cf513 100644 --- a/src/gui/gui-buffer.c +++ b/src/gui/gui-buffer.c @@ -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); diff --git a/src/gui/gui-chat.c b/src/gui/gui-chat.c index 87249999a..9b8854df7 100644 --- a/src/gui/gui-chat.c +++ b/src/gui/gui-chat.c @@ -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); } } diff --git a/src/gui/gui-window.c b/src/gui/gui-window.c index 1d4fd3371..e1b19a5a9 100644 --- a/src/gui/gui-window.c +++ b/src/gui/gui-window.c @@ -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; diff --git a/src/plugins/irc/irc-server.c b/src/plugins/irc/irc-server.c index 05bedf583..29f61cb7f 100644 --- a/src/plugins/irc/irc-server.c +++ b/src/plugins/irc/irc-server.c @@ -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) diff --git a/src/plugins/jabber/jabber-server.c b/src/plugins/jabber/jabber-server.c index 852ceea3c..2c49fc728 100644 --- a/src/plugins/jabber/jabber-server.c +++ b/src/plugins/jabber/jabber-server.c @@ -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) diff --git a/src/plugins/logger/logger-buffer.c b/src/plugins/logger/logger-buffer.c index 280ecd1c6..0e3836ae3 100644 --- a/src/plugins/logger/logger-buffer.c +++ b/src/plugins/logger/logger-buffer.c @@ -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; } diff --git a/src/plugins/logger/logger.c b/src/plugins/logger/logger.c index 93f9ae62e..9abff3d4e 100644 --- a/src/plugins/logger/logger.c +++ b/src/plugins/logger/logger.c @@ -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'; } diff --git a/src/plugins/scripts/script.c b/src/plugins/scripts/script.c index 2fdc8e4d0..1f4e074db 100644 --- a/src/plugins/scripts/script.c +++ b/src/plugins/scripts/script.c @@ -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)