Mercurial > pidgin
changeset 1021:90e8714bf95b
[gaim-migrate @ 1031]
Fixed a few little memory leaks.
committer: Tailor Script <tailor@pidgin.im>
author | Rob Flynn <gaim@robflynn.com> |
---|---|
date | Tue, 24 Oct 2000 01:10:30 +0000 |
parents | e1e36f95af9a |
children | d5c022006a60 |
files | plugins/irc.c |
diffstat | 1 files changed, 22 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/plugins/irc.c Mon Oct 23 21:01:25 2000 +0000 +++ b/plugins/irc.c Tue Oct 24 01:10:30 2000 +0000 @@ -47,7 +47,7 @@ #include "pixmaps/ok.xpm" /* FIXME: We shouldn't have hard coded servers and ports :-) */ -#define IRC_SERVER "irc.undernet.org" +#define IRC_SERVER "irc.mozilla.org" #define IRC_PORT 6667 #define IRC_BUF_LEN 4096 @@ -192,7 +192,7 @@ void irc_chat_send( struct gaim_connection *gc, int id, char *message) { struct irc_data *idata = (struct irc_data *)gc->proto_data; - struct irc_channel *channel = g_new0(struct irc_channel, 1); + struct irc_channel *channel = NULL; gchar *buf = (gchar *)g_malloc(IRC_BUF_LEN + 1); /* First lets get our current channel */ @@ -201,6 +201,7 @@ if (!channel) { /* If for some reason we've lost our channel, let's bolt */ + g_free(buf); return; } @@ -365,6 +366,9 @@ add_chat_buddy(convo, buf2[i]); } } + + /* And free our pointers */ + g_strfreev (buf2); return; @@ -432,7 +436,7 @@ gchar u_channel[128]; gchar u_nick[128]; - struct irc_channel *channel = g_new0(struct irc_channel, 1); + struct irc_channel *channel; int id; int j; GList *test = NULL; @@ -472,7 +476,6 @@ serv_got_chat_left(gc, channel->id); idata->channels = g_list_remove(idata->channels, channel); - g_free(channel); } else { struct conversation *convo = NULL; @@ -614,12 +617,26 @@ void irc_close(struct gaim_connection *gc) { struct irc_data *idata = (struct irc_data *)gc->proto_data; + GList *chats = idata->channels; + struct irc_channel *cc; + gchar *buf = (gchar *)g_malloc(IRC_BUF_LEN); - g_snprintf(buf, IRC_BUF_LEN, "QUIT :GAIM [www.marko.net/gaim]\n"); + g_snprintf(buf, IRC_BUF_LEN, "QUIT :Download GAIM [www.marko.net/gaim]\n"); write(idata->fd, buf, strlen(buf)); g_free(buf); + + while (chats) { + cc = (struct irc_channel *)chats->data; + g_free(cc->name); + chats = g_list_remove(chats, cc); + g_free(cc); + } + + if (gc->inpa) + gdk_input_remove(gc->inpa); + close(idata->fd); g_free(gc->proto_data); }