1
0
mirror of https://github.com/weechat/weechat.git synced 2026-07-10 19:53:13 +02:00

Fixed many memory leaks

This commit is contained in:
Sebastien Helleu
2005-01-31 23:33:59 +00:00
parent 74b83e5294
commit 8921e45815
26 changed files with 314 additions and 44 deletions
+13
View File
@@ -1947,6 +1947,19 @@ gui_end ()
gui_buffer_free (gui_buffers, 0);
}
/* delete all windows */
while (gui_windows)
{
gui_window_free (gui_windows);
}
/* delete general history */
history_general_free ();
/* delete infobar messages */
while (gui_infobar)
gui_infobar_remove ();
/* end of curses output */
refresh ();
endwin ();
+4
View File
@@ -89,6 +89,7 @@ gui_read_keyb ()
/* remove last infobar message */
case KEY_F(10):
gui_infobar_remove ();
gui_draw_buffer_infobar (gui_current_window->buffer, 1);
break;
/* cursor up */
case KEY_UP:
@@ -666,7 +667,10 @@ gui_main_loop ()
{
gui_infobar->remaining_time--;
if (gui_infobar->remaining_time == 0)
{
gui_infobar_remove ();
gui_draw_buffer_infobar (gui_current_window->buffer, 1);
}
}
check_away++;
if (check_away >= CHECK_AWAY_DELAY)
+22 -1
View File
@@ -329,6 +329,26 @@ gui_infobar_printf (int time_displayed, int color, char *message, ...)
free (buf2);
}
/*
* gui_window_free: delete a window
*/
void
gui_window_free (t_gui_window *window)
{
/* remove window from windows list */
if (window->prev_window)
window->prev_window->next_window = window->next_window;
if (window->next_window)
window->next_window->prev_window = window->prev_window;
if (gui_windows == window)
gui_windows = window->next_window;
if (last_gui_window == window)
last_gui_window = window->prev_window;
free (window);
}
/*
* gui_infobar_remove: remove last displayed message in infobar
*/
@@ -345,7 +365,6 @@ gui_infobar_remove ()
free (gui_infobar->text);
free (gui_infobar);
gui_infobar = new_infobar;
gui_draw_buffer_infobar (gui_current_window->buffer, 1);
}
}
@@ -423,6 +442,8 @@ gui_buffer_free (t_gui_buffer *buffer, int switch_to_another)
completion_free (&(buffer->completion));
history_buffer_free (buffer);
/* remove buffer from buffers list */
if (buffer->prev_buffer)
buffer->prev_buffer->next_buffer = buffer->next_buffer;
+1
View File
@@ -255,6 +255,7 @@ extern t_gui_buffer *gui_buffer_new (t_gui_window *, void *, void *, int, int);
extern void gui_buffer_clear (t_gui_buffer *);
extern void gui_buffer_clear_all ();
extern void gui_infobar_printf (int, int, char *, ...);
extern void gui_window_free (t_gui_window *);
extern void gui_infobar_remove ();
extern void gui_buffer_free (t_gui_buffer *, int);
extern t_gui_line *gui_new_line (t_gui_buffer *);