aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--my-evolution/ChangeLog6
-rw-r--r--my-evolution/e-summary-tasks.c20
2 files changed, 21 insertions, 5 deletions
diff --git a/my-evolution/ChangeLog b/my-evolution/ChangeLog
index 64a5c04b1a..4ebee50060 100644
--- a/my-evolution/ChangeLog
+++ b/my-evolution/ChangeLog
@@ -1,3 +1,9 @@
+2002-02-14 Radek Doulik <rodo@ximian.com>
+
+ * e-summary-tasks.c (sort_uids): fix case when priority is
+ undefined and pri_a or pri_b is returned as NULL, also fixes
+ memory leak
+
2002-02-08 Damon Chaplin <damon@ximian.com>
* e-summary-calendar.c (e_cal_comp_util_compare_event_timezones):
diff --git a/my-evolution/e-summary-tasks.c b/my-evolution/e-summary-tasks.c
index 6bcc65d2b7..51ab45c051 100644
--- a/my-evolution/e-summary-tasks.c
+++ b/my-evolution/e-summary-tasks.c
@@ -136,7 +136,8 @@ sort_uids (gconstpointer a,
CalComponent *comp_a, *comp_b;
CalClient *client = user_data;
CalClientGetStatus status;
- int real_a = 0, real_b = 0;
+ /* let undefined priorities be lowest ones */
+ int lowest = 10, rv;
int *pri_a, *pri_b;
/* a after b then return > 0 */
@@ -149,13 +150,22 @@ sort_uids (gconstpointer a,
if (status != CAL_CLIENT_GET_SUCCESS)
return 1;
- pri_a = &real_a;
- pri_b = &real_b;
-
cal_component_get_priority (comp_a, &pri_a);
cal_component_get_priority (comp_b, &pri_b);
- return *pri_a - *pri_b;
+ if (pri_a == NULL)
+ pri_a = &lowest;
+ if (pri_b == NULL)
+ pri_b = &lowest;
+
+ rv = *pri_a - *pri_b;
+
+ if (pri_a != &lowest)
+ cal_component_free_priority (pri_a);
+ if (pri_b != &lowest)
+ cal_component_free_priority (pri_b);
+
+ return rv;
}
static GList *