summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Adam <jakub.adam@ktknet.cz>2015-12-29 18:41:57 -0600
committerJakub Adam <jakub.adam@ktknet.cz>2015-12-29 18:41:57 -0600
commite0d0f00da7b04377e3117d3bdfdfc3307f699869 (patch)
tree52076ae97074f0a6670470a025a74248b35980b7
parent9bfa678ee8b34333775e1a17b6d16188a42f8645 (diff)
downloadpidgin-e0d0f00da7b04377e3117d3bdfdfc3307f699869.tar.gz
Fix #16762 where transient startup statuses could be deleted on exit
-rw-r--r--ChangeLog2
-rw-r--r--libpurple/savedstatuses.c6
2 files changed, 6 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index b9c430b5ae..a434f57842 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -3,6 +3,8 @@ Pidgin and Finch: The Pimpin' Penguin IM Clients That're Good for the Soul
version 2.10.12 (MM/DD/YY):
General:
* purple-url-handler now works with Python 3.x (Daniƫl van Eeden)
+ * Fixed an issue where transient startup statuses could be deleted
+ (Jakub Adam) (#16762)
Pidgin:
* The shout smile now matches the default theme (Steve Vaught)
diff --git a/libpurple/savedstatuses.c b/libpurple/savedstatuses.c
index 70f4190b2a..bcf4b1d492 100644
--- a/libpurple/savedstatuses.c
+++ b/libpurple/savedstatuses.c
@@ -193,16 +193,18 @@ static void
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)
@@ -213,7 +215,7 @@ remove_old_transient_statuses(void)
{
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);