diff options
author | Sebastien Helleu <flashcode@flashtux.org> | 2013-08-10 18:18:01 +0200 |
---|---|---|
committer | Sebastien Helleu <flashcode@flashtux.org> | 2013-08-10 18:18:01 +0200 |
commit | 784de68a5f939c519959c183415e4be9ba45952c (patch) | |
tree | e0290636620eec235566ed43942541cb2fd5754a /src | |
parent | 6714d6fc820e56ea53cd67e604a0928e7a974e84 (diff) | |
download | weechat-784de68a5f939c519959c183415e4be9ba45952c.zip |
core: fix random crash on "/buffer close" with a buffer number (or a range of buffers)
Diffstat (limited to 'src')
-rw-r--r-- | src/core/wee-command.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/core/wee-command.c b/src/core/wee-command.c index d3ace4b69..dd2df49d4 100644 --- a/src/core/wee-command.c +++ b/src/core/wee-command.c @@ -509,7 +509,8 @@ command_buffer_display_localvar (void *data, COMMAND_CALLBACK(buffer) { - struct t_gui_buffer *ptr_buffer, *ptr_buffer2, *weechat_buffer; + struct t_gui_buffer *ptr_buffer, *ptr_buffer2, *ptr_prev_buffer; + struct t_gui_buffer *weechat_buffer; long number, number1, number2; char *error, *value, *pos, *str_number1, *pos_number2; int i, target_buffer, error_main_buffer, num_buffers; @@ -798,9 +799,10 @@ COMMAND_CALLBACK(buffer) num_buffers = 0; for (i = number2; i >= number1; i--) { - for (ptr_buffer = last_gui_buffer; ptr_buffer; - ptr_buffer = ptr_buffer->prev_buffer) + ptr_buffer = last_gui_buffer; + while (ptr_buffer) { + ptr_prev_buffer = ptr_buffer->prev_buffer; if (ptr_buffer->number == i) { num_buffers++; @@ -813,6 +815,7 @@ COMMAND_CALLBACK(buffer) gui_buffer_close (ptr_buffer); } } + ptr_buffer = ptr_prev_buffer; } } /* |