Added reference counting to server record. At least now we don't accidentally

use a destroyed server record when some /command disconnects the server
(shouldn't happen really) or when irc_send_cmd() fails sending data to server
and disconnects the server (I don't know if this ever happens, but if it does,
it very well could have caused crashes)


git-svn-id: http://svn.irssi.org/repos/irssi/trunk@2243 dbcabf3a-b0e7-0310-adc4-f8d773084564
This commit is contained in:
Timo Sirainen 2001-12-14 01:54:12 +00:00 committed by cras
commit 6774b4b30f
7 changed files with 64 additions and 17 deletions

View file

@ -313,6 +313,7 @@ void command_runsub(const char *cmd, const char *data,
subcmd = g_strconcat("command ", newcmd, NULL);
g_strdown(subcmd);
if (server != NULL) server_ref(server);
if (!signal_emit(subcmd, 3, args, server, item)) {
defcmd = g_strdup_printf("default command %s", cmd);
if (!signal_emit(defcmd, 3, data, server, item)) {
@ -321,6 +322,7 @@ void command_runsub(const char *cmd, const char *data,
}
g_free(defcmd);
}
if (server != NULL) server_unref(server);
g_free(subcmd);
g_free(orig);