summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSebastien Helleu <flashcode@flashtux.org>2013-08-10 18:18:01 +0200
committerSebastien Helleu <flashcode@flashtux.org>2013-08-10 18:18:01 +0200
commit784de68a5f939c519959c183415e4be9ba45952c (patch)
treee0290636620eec235566ed43942541cb2fd5754a /src
parent6714d6fc820e56ea53cd67e604a0928e7a974e84 (diff)
downloadweechat-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.c9
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;
}
}
/*