diff src/away.c @ 1254:9da444224f0e

[gaim-migrate @ 1264] bmiller's away-on-signon patch. does --away=mesg use "mesg" or the away message titled "mesg"? i didn't look hehe. but if it uses "mesg" instead of the away message titled "mesg" then i'm not sure it works.... i figured someone would report a bug if it didn't work committer: Tailor Script <tailor@pidgin.im>
author Eric Warmenhoven <eric@warmenhoven.org>
date Thu, 14 Dec 2000 00:11:59 +0000
parents b5783215b245
children 07f0bb41bbe1
line wrap: on
line diff
--- a/src/away.c	Wed Dec 13 23:59:46 2000 +0000
+++ b/src/away.c	Thu Dec 14 00:11:59 2000 +0000
@@ -40,7 +40,7 @@
 
 GtkWidget *awaymenu = NULL;
 struct away_message *awaymessage = NULL;
-int default_away;
+struct away_message *default_away;
 int auto_away;
 
 static void destroy_im_away()
@@ -103,6 +103,9 @@
 	if (!blist)
 		return;
 
+	if (!a)
+		return;
+
 #ifdef USE_APPLET
 	remove_applet_away();
 	applet_widget_register_callback(APPLET_WIDGET(applet),
@@ -181,7 +184,7 @@
 
 void rem_away_mess(GtkWidget *w, struct away_message *a)
 {
-	struct away_message *default_msg;
+	int default_index;
 #ifdef USE_APPLET
 	char *awayname;
 	awayname = g_malloc(sizeof(*awayname) * (6 + strlen(a->name)));
@@ -191,11 +194,13 @@
 	applet_widget_unregister_callback(APPLET_WIDGET(applet), awayname);
 	g_free(awayname);
 #endif
-	default_msg = g_slist_nth_data(away_messages, default_away);
-	away_messages = g_slist_remove(away_messages, a);
-	default_away = g_slist_index(away_messages, default_msg);
-	if (default_away == -1)
-		default_away = 0;
+	default_index = g_slist_index(away_messages, default_away);
+	if (default_index == -1) {
+		if (away_messages != NULL)
+			default_away = away_messages->data;
+		else
+			default_away = NULL;
+	}
 	g_free(a);
 	do_away_menu();
 	save_prefs();