1
0
mirror of https://github.com/weechat/weechat.git synced 2026-06-27 21:36:37 +02:00

Fixed possible crash with "/server del" and "/buffer close" commands

This commit is contained in:
Sebastien Helleu
2005-01-19 06:21:27 +00:00
parent 1ee8e1edb2
commit 26af7b49fd
4 changed files with 52 additions and 4 deletions
+25 -1
View File
@@ -886,7 +886,12 @@ weechat_cmd_buffer (int argc, char **argv)
ptr_server->buffer = NULL;
}
else
irc_cmd_send_part (SERVER(gui_current_window->buffer), NULL);
{
if (SERVER(gui_current_window->buffer))
irc_cmd_send_part (SERVER(gui_current_window->buffer), NULL);
else
gui_buffer_free (gui_current_window->buffer, 1);
}
}
else if (strcasecmp (argv[0], "notify") == 0)
{
@@ -1337,6 +1342,7 @@ weechat_cmd_server (int argc, char **argv)
{
int i;
t_irc_server server, *ptr_server, *server_found, *new_server;
t_gui_buffer *ptr_buffer;
if ((argc == 0) || (argc == 1))
{
@@ -1408,6 +1414,24 @@ weechat_cmd_server (int argc, char **argv)
WEECHAT_ERROR, argv[1], "server del");
return -1;
}
if (server_found->is_connected)
{
irc_display_prefix (NULL, PREFIX_ERROR);
gui_printf (NULL,
_("%s you can not delete server \"%s\" because you are connected to. "
"Try /disconnect %s before.\n"),
WEECHAT_ERROR, argv[1], argv[1]);
return -1;
}
for (ptr_buffer = gui_buffers; ptr_buffer; ptr_buffer = ptr_buffer->next_buffer)
{
if (SERVER(ptr_buffer) == server_found)
{
ptr_buffer->server = NULL;
ptr_buffer->channel = NULL;
}
}
irc_display_prefix (NULL, PREFIX_INFO);
gui_printf_color (NULL, COLOR_WIN_CHAT, _("Server"));
+1 -1
View File
@@ -60,7 +60,7 @@ void
server_init (t_irc_server *server)
{
server->name = NULL;
server->autoconnect = 1;
server->autoconnect = 0;
server->autoreconnect = 1;
server->autoreconnect_delay = 30;
server->command_line = 0;
+25 -1
View File
@@ -886,7 +886,12 @@ weechat_cmd_buffer (int argc, char **argv)
ptr_server->buffer = NULL;
}
else
irc_cmd_send_part (SERVER(gui_current_window->buffer), NULL);
{
if (SERVER(gui_current_window->buffer))
irc_cmd_send_part (SERVER(gui_current_window->buffer), NULL);
else
gui_buffer_free (gui_current_window->buffer, 1);
}
}
else if (strcasecmp (argv[0], "notify") == 0)
{
@@ -1337,6 +1342,7 @@ weechat_cmd_server (int argc, char **argv)
{
int i;
t_irc_server server, *ptr_server, *server_found, *new_server;
t_gui_buffer *ptr_buffer;
if ((argc == 0) || (argc == 1))
{
@@ -1408,6 +1414,24 @@ weechat_cmd_server (int argc, char **argv)
WEECHAT_ERROR, argv[1], "server del");
return -1;
}
if (server_found->is_connected)
{
irc_display_prefix (NULL, PREFIX_ERROR);
gui_printf (NULL,
_("%s you can not delete server \"%s\" because you are connected to. "
"Try /disconnect %s before.\n"),
WEECHAT_ERROR, argv[1], argv[1]);
return -1;
}
for (ptr_buffer = gui_buffers; ptr_buffer; ptr_buffer = ptr_buffer->next_buffer)
{
if (SERVER(ptr_buffer) == server_found)
{
ptr_buffer->server = NULL;
ptr_buffer->channel = NULL;
}
}
irc_display_prefix (NULL, PREFIX_INFO);
gui_printf_color (NULL, COLOR_WIN_CHAT, _("Server"));
+1 -1
View File
@@ -60,7 +60,7 @@ void
server_init (t_irc_server *server)
{
server->name = NULL;
server->autoconnect = 1;
server->autoconnect = 0;
server->autoreconnect = 1;
server->autoreconnect_delay = 30;
server->command_line = 0;