Fixed crashes with DCC chat remove/purge on DCC view (bug #16775)
This commit is contained in:
parent
59795445c5
commit
cb329a3f33
@ -1,9 +1,10 @@
|
||||
WeeChat - Wee Enhanced Environment for Chat
|
||||
===========================================
|
||||
|
||||
ChangeLog - 2006-06-07
|
||||
ChangeLog - 2006-06-10
|
||||
|
||||
Version 0.2.0 (under dev!):
|
||||
* fixed crashes with DCC chat remove/purge on DCC view (bug #16775)
|
||||
* fixed bug with connection to bnc (bug #16760)
|
||||
* command /save now writes plugins options (~/.weechat/plugins.rc)
|
||||
* fixed crash with "register" function in plugin scripts (bug #16701)
|
||||
|
@ -1449,9 +1449,10 @@ weechat_cmd_buffer (t_irc_server *server, t_irc_channel *channel,
|
||||
if (CHANNEL(buffer)
|
||||
&& (CHANNEL(buffer)->type == CHANNEL_TYPE_DCC_CHAT))
|
||||
{
|
||||
ptr_server = SERVER(buffer);
|
||||
ptr_channel = CHANNEL(buffer);
|
||||
gui_buffer_free (ptr_channel->buffer, 1);
|
||||
channel_free (SERVER(buffer), ptr_channel);
|
||||
channel_free (ptr_server, ptr_channel);
|
||||
gui_status_draw (gui_current_window->buffer, 1);
|
||||
gui_input_draw (gui_current_window->buffer, 1);
|
||||
}
|
||||
|
@ -443,8 +443,8 @@ gui_buffer_free (t_gui_buffer *buffer, int switch_to_another)
|
||||
gui_buffer_raw_data = NULL;
|
||||
|
||||
/* purge DCC chat using this buffer */
|
||||
if (CHANNEL(buffer))
|
||||
dcc_chat_remove_channel (CHANNEL(buffer));
|
||||
//if (CHANNEL(buffer))
|
||||
// dcc_chat_remove_channel (CHANNEL(buffer));
|
||||
|
||||
for (ptr_server = irc_servers; ptr_server;
|
||||
ptr_server = ptr_server->next_server)
|
||||
|
@ -95,6 +95,9 @@ channel_free (t_irc_server *server, t_irc_channel *channel)
|
||||
{
|
||||
t_irc_channel *new_channels;
|
||||
|
||||
if (!server || !channel)
|
||||
return;
|
||||
|
||||
/* close DCC CHAT */
|
||||
if ((t_irc_dcc *)(channel->dcc_chat) &&
|
||||
(!DCC_ENDED(((t_irc_dcc *)(channel->dcc_chat))->status)))
|
||||
|
@ -345,6 +345,9 @@ dcc_free (t_irc_dcc *ptr_dcc)
|
||||
{
|
||||
t_irc_dcc *new_dcc_list;
|
||||
|
||||
if (!ptr_dcc)
|
||||
return;
|
||||
|
||||
/* DCC CHAT with channel => remove channel
|
||||
(to prevent channel from becoming standard pv) */
|
||||
if (ptr_dcc->channel)
|
||||
@ -354,7 +357,8 @@ dcc_free (t_irc_dcc *ptr_dcc)
|
||||
|| (DCC_ENDED(((t_irc_dcc *)(ptr_dcc->channel->dcc_chat))->status)))
|
||||
{
|
||||
gui_buffer_free (ptr_dcc->channel->buffer, 1);
|
||||
channel_free (ptr_dcc->server, ptr_dcc->channel);
|
||||
if (ptr_dcc->channel)
|
||||
channel_free (ptr_dcc->server, ptr_dcc->channel);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -267,7 +267,10 @@ void
|
||||
nick_free (t_irc_channel *channel, t_irc_nick *nick)
|
||||
{
|
||||
t_irc_nick *new_nicks;
|
||||
|
||||
|
||||
if (!channel || !nick)
|
||||
return;
|
||||
|
||||
/* remove nick from queue */
|
||||
if (channel->last_nick == nick)
|
||||
channel->last_nick = nick->prev_nick;
|
||||
@ -300,6 +303,9 @@ nick_free (t_irc_channel *channel, t_irc_nick *nick)
|
||||
void
|
||||
nick_free_all (t_irc_channel *channel)
|
||||
{
|
||||
if (!channel)
|
||||
return;
|
||||
|
||||
/* remove all nicks for the channel */
|
||||
while (channel->nicks)
|
||||
nick_free (channel, channel->nicks);
|
||||
|
@ -283,6 +283,9 @@ server_alloc ()
|
||||
void
|
||||
server_destroy (t_irc_server *server)
|
||||
{
|
||||
if (!server)
|
||||
return;
|
||||
|
||||
/* free data */
|
||||
if (server->name)
|
||||
free (server->name);
|
||||
@ -333,6 +336,9 @@ server_free (t_irc_server *server)
|
||||
{
|
||||
t_irc_server *new_irc_servers;
|
||||
|
||||
if (!server)
|
||||
return;
|
||||
|
||||
/* close any opened channel/private */
|
||||
while (server->channels)
|
||||
channel_free (server, server->channels);
|
||||
|
@ -1,9 +1,10 @@
|
||||
WeeChat - Wee Enhanced Environment for Chat
|
||||
===========================================
|
||||
|
||||
ChangeLog - 2006-06-07
|
||||
ChangeLog - 2006-06-10
|
||||
|
||||
Version 0.2.0 (under dev!):
|
||||
* fixed crashes with DCC chat remove/purge on DCC view (bug #16775)
|
||||
* fixed bug with connection to bnc (bug #16760)
|
||||
* command /save now writes plugins options (~/.weechat/plugins.rc)
|
||||
* fixed crash with "register" function in plugin scripts (bug #16701)
|
||||
|
@ -1449,9 +1449,10 @@ weechat_cmd_buffer (t_irc_server *server, t_irc_channel *channel,
|
||||
if (CHANNEL(buffer)
|
||||
&& (CHANNEL(buffer)->type == CHANNEL_TYPE_DCC_CHAT))
|
||||
{
|
||||
ptr_server = SERVER(buffer);
|
||||
ptr_channel = CHANNEL(buffer);
|
||||
gui_buffer_free (ptr_channel->buffer, 1);
|
||||
channel_free (SERVER(buffer), ptr_channel);
|
||||
channel_free (ptr_server, ptr_channel);
|
||||
gui_status_draw (gui_current_window->buffer, 1);
|
||||
gui_input_draw (gui_current_window->buffer, 1);
|
||||
}
|
||||
|
@ -443,8 +443,8 @@ gui_buffer_free (t_gui_buffer *buffer, int switch_to_another)
|
||||
gui_buffer_raw_data = NULL;
|
||||
|
||||
/* purge DCC chat using this buffer */
|
||||
if (CHANNEL(buffer))
|
||||
dcc_chat_remove_channel (CHANNEL(buffer));
|
||||
//if (CHANNEL(buffer))
|
||||
// dcc_chat_remove_channel (CHANNEL(buffer));
|
||||
|
||||
for (ptr_server = irc_servers; ptr_server;
|
||||
ptr_server = ptr_server->next_server)
|
||||
|
@ -95,6 +95,9 @@ channel_free (t_irc_server *server, t_irc_channel *channel)
|
||||
{
|
||||
t_irc_channel *new_channels;
|
||||
|
||||
if (!server || !channel)
|
||||
return;
|
||||
|
||||
/* close DCC CHAT */
|
||||
if ((t_irc_dcc *)(channel->dcc_chat) &&
|
||||
(!DCC_ENDED(((t_irc_dcc *)(channel->dcc_chat))->status)))
|
||||
|
@ -345,6 +345,9 @@ dcc_free (t_irc_dcc *ptr_dcc)
|
||||
{
|
||||
t_irc_dcc *new_dcc_list;
|
||||
|
||||
if (!ptr_dcc)
|
||||
return;
|
||||
|
||||
/* DCC CHAT with channel => remove channel
|
||||
(to prevent channel from becoming standard pv) */
|
||||
if (ptr_dcc->channel)
|
||||
@ -354,7 +357,8 @@ dcc_free (t_irc_dcc *ptr_dcc)
|
||||
|| (DCC_ENDED(((t_irc_dcc *)(ptr_dcc->channel->dcc_chat))->status)))
|
||||
{
|
||||
gui_buffer_free (ptr_dcc->channel->buffer, 1);
|
||||
channel_free (ptr_dcc->server, ptr_dcc->channel);
|
||||
if (ptr_dcc->channel)
|
||||
channel_free (ptr_dcc->server, ptr_dcc->channel);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -267,7 +267,10 @@ void
|
||||
nick_free (t_irc_channel *channel, t_irc_nick *nick)
|
||||
{
|
||||
t_irc_nick *new_nicks;
|
||||
|
||||
|
||||
if (!channel || !nick)
|
||||
return;
|
||||
|
||||
/* remove nick from queue */
|
||||
if (channel->last_nick == nick)
|
||||
channel->last_nick = nick->prev_nick;
|
||||
@ -300,6 +303,9 @@ nick_free (t_irc_channel *channel, t_irc_nick *nick)
|
||||
void
|
||||
nick_free_all (t_irc_channel *channel)
|
||||
{
|
||||
if (!channel)
|
||||
return;
|
||||
|
||||
/* remove all nicks for the channel */
|
||||
while (channel->nicks)
|
||||
nick_free (channel, channel->nicks);
|
||||
|
@ -283,6 +283,9 @@ server_alloc ()
|
||||
void
|
||||
server_destroy (t_irc_server *server)
|
||||
{
|
||||
if (!server)
|
||||
return;
|
||||
|
||||
/* free data */
|
||||
if (server->name)
|
||||
free (server->name);
|
||||
@ -333,6 +336,9 @@ server_free (t_irc_server *server)
|
||||
{
|
||||
t_irc_server *new_irc_servers;
|
||||
|
||||
if (!server)
|
||||
return;
|
||||
|
||||
/* close any opened channel/private */
|
||||
while (server->channels)
|
||||
channel_free (server, server->channels);
|
||||
|
Loading…
x
Reference in New Issue
Block a user