Tue, 29 Dec 2015 18:49:11 -0600
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);