Fix #16762 where transient startup statuses could be deleted on exit

Tue, 29 Dec 2015 18:49:11 -0600

author
Jakub Adam <jakub.adam@ktknet.cz>
date
Tue, 29 Dec 2015 18:49:11 -0600
changeset 37484
78d036e70f8e
parent 37482
922720634101
child 37485
778662f494ee
child 37492
5a740d40503d
child 37495
f28a27411235

Fix #16762 where transient startup statuses could be deleted on exit

ChangeLog file | annotate | diff | comparison | revisions
libpurple/savedstatuses.c file | annotate | diff | comparison | revisions
--- a/ChangeLog	Tue Dec 29 11:56:00 2015 -0600
+++ b/ChangeLog	Tue Dec 29 18:49:11 2015 -0600
@@ -12,6 +12,8 @@
 	  non-native plugin support.
 	* Removed flags for manually configuring GnuTLS and NSS. They are now only
 	  recognized through pkg-config. (Michael McConville)
+	* Fixed an issue where transient startup statuses could be deleted
+	  (Jakub Adam) (#16762)
 
 	libpurple:
 	* Specify a different set of encryption ciphers for TLS connections when
--- a/libpurple/savedstatuses.c	Tue Dec 29 11:56:00 2015 -0600
+++ b/libpurple/savedstatuses.c	Tue Dec 29 18:49:11 2015 -0600
@@ -188,16 +188,18 @@
 remove_old_transient_statuses(void)
 {
 	GList *l, *next;
-	PurpleSavedStatus *saved_status, *current_status;
+	PurpleSavedStatus *saved_status, *startup_status, *current_status;
 	int count;
 	time_t creation_time;
 
+	startup_status = purple_savedstatus_get_startup();
 	current_status = purple_savedstatus_get_current();
 
 	/*
 	 * Iterate through the list of saved statuses.  Delete all
 	 * transient statuses except for the first MAX_TRANSIENTS
 	 * (remember, the saved statuses are already sorted by popularity).
+	 * We should also keep the startup status, if any is set.
 	 */
 	count = 0;
 	for (l = saved_statuses; l != NULL; l = next)
@@ -208,7 +210,7 @@
 		{
 			if (count == MAX_TRANSIENTS)
 			{
-				if (saved_status != current_status)
+				if (saved_status != current_status && saved_status != startup_status)
 				{
 					saved_statuses = g_list_remove(saved_statuses, saved_status);
 					creation_time = purple_savedstatus_get_creation_time(saved_status);

mercurial