1
0
evolution-data-server/bnc-448079-gw-memory-issues.patch

138 lines
5.0 KiB
Diff
Raw Normal View History

--- camel/providers/groupwise/camel-groupwise-folder.c
+++ camel/providers/groupwise/camel-groupwise-folder.c
@@ -229,8 +229,11 @@ groupwise_populate_details_from_item (CamelMimeMessage *msg, EGwItem *item)
time_t actual_time;
int offset = 0;
dtstring = e_gw_item_get_creation_date (item);
- time = e_gw_connection_get_date_from_string (dtstring);
- actual_time = camel_header_decode_date (ctime(&time), NULL);
+ if (dtstring) {
+ time = e_gw_connection_get_date_from_string (dtstring);
+ actual_time = camel_header_decode_date (ctime(&time), NULL);
+ } else
+ actual_time = (time_t) 0;
camel_mime_message_set_date (msg, actual_time, offset);
}
}
@@ -1270,7 +1273,7 @@ gw_update_cache (CamelFolder *folder, GList *list, CamelException *ex, gboolean
int folder_needs_caching;
- camel_object_get (folder, NULL, CAMEL_OFFLINE_FOLDER_ARG_SYNC_OFFLINE, &folder_needs_caching, NULL);
+ camel_object_get (folder, NULL, CAMEL_OFFLINE_FOLDER_SYNC_OFFLINE, &folder_needs_caching, NULL);
changes = camel_folder_change_info_new ();
container_id = g_strdup (camel_groupwise_store_container_id_lookup (gw_store, folder->full_name));
@@ -1449,8 +1452,12 @@ gw_update_cache (CamelFolder *folder, GList *list, CamelException *ex, gboolean
time_t time;
time_t actual_time;
temp_date = e_gw_item_get_creation_date (item);
- time = e_gw_connection_get_date_from_string (temp_date);
- actual_time = camel_header_decode_date (ctime(&time), NULL);
+ if (temp_date) {
+ /* Creation date can be returned as null for auto-generated meetings */
+ time = e_gw_connection_get_date_from_string (temp_date);
+ actual_time = camel_header_decode_date (ctime(&time), NULL);
+ } else
+ actual_time = (time_t) 0;
mi->info.date_sent = mi->info.date_received = actual_time;
}
}
@@ -1670,8 +1677,11 @@ gw_update_summary ( CamelFolder *folder, GList *list,CamelException *ex)
time_t time;
time_t actual_time;
temp_date = e_gw_item_get_creation_date (item);
- time = e_gw_connection_get_date_from_string (temp_date);
- actual_time = camel_header_decode_date (ctime(&time), NULL);
+ if (temp_date) {
+ time = e_gw_connection_get_date_from_string (temp_date);
+ actual_time = camel_header_decode_date (ctime(&time), NULL);
+ } else
+ actual_time = (time_t) 0;
mi->info.date_sent = mi->info.date_received = actual_time;
}
}
--- servers/groupwise/e-gw-item.c
+++ servers/groupwise/e-gw-item.c
@@ -307,6 +307,11 @@ e_gw_item_dispose (GObject *object)
priv->classification = NULL;
}
+ if (priv->security) {
+ g_free (priv->security);
+ priv->security = NULL;
+ }
+
if (priv->accept_level) {
g_free (priv->accept_level);
priv->accept_level = NULL;
--- servers/groupwise/e-gw-connection.c
+++ servers/groupwise/e-gw-connection.c
@@ -1813,39 +1813,41 @@ e_gw_connection_get_server_time (EGwConnection *cnc)
static time_t
timet_from_string (const char *str)
{
- struct tm date;
- int len, i;
+ struct tm date;
+ int len, i;
- g_return_val_if_fail (str != NULL, -1);
+ g_return_val_if_fail (str != NULL, -1);
- /* yyyymmdd[Thhmmss[Z]] */
- len = strlen (str);
+ /* yyyymmdd[Thhmmss[Z]] */
+ len = strlen (str);
- if (!(len == 8 || len == 15 || len == 16))
- return -1;
+ if (!(len == 8 || len == 15 || len == 16))
+ return -1;
- for (i = 0; i < len; i++)
- if (!((i != 8 && i != 15 && isdigit (str[i]))
- || (i == 8 && str[i] == 'T')
- || (i == 15 && str[i] == 'Z')))
- return -1;
+ for (i = 0; i < len; i++)
+ if (!((i != 8 && i != 15 && isdigit (str[i]))
+ || (i == 8 && str[i] == 'T')
+ || (i == 15 && str[i] == 'Z')))
+ return -1;
#define digit_at(x,y) (x[y] - '0')
- date.tm_year = digit_at (str, 0) * 1000
- + digit_at (str, 1) * 100
- + digit_at (str, 2) * 10
- + digit_at (str, 3) -1900;
- date.tm_mon = digit_at (str, 4) * 10 + digit_at (str, 5) -1;
- date.tm_mday = digit_at (str, 6) * 10 + digit_at (str, 7);
- if (len > 8) {
- date.tm_hour = digit_at (str, 9) * 10 + digit_at (str, 10);
- date.tm_min = digit_at (str, 11) * 10 + digit_at (str, 12);
- date.tm_sec = digit_at (str, 13) * 10 + digit_at (str, 14);
- } else
- date.tm_hour = date.tm_min = date.tm_sec = 0;
+ date.tm_year = digit_at (str, 0) * 1000
+ + digit_at (str, 1) * 100
+ + digit_at (str, 2) * 10
+ + digit_at (str, 3) -1900;
+ date.tm_mon = digit_at (str, 4) * 10 + digit_at (str, 5) -1;
+ date.tm_mday = digit_at (str, 6) * 10 + digit_at (str, 7);
+ if (len > 8) {
+ date.tm_hour = digit_at (str, 9) * 10 + digit_at (str, 10);
+ date.tm_min = digit_at (str, 11) * 10 + digit_at (str, 12);
+ date.tm_sec = digit_at (str, 13) * 10 + digit_at (str, 14);
+ } else
+ date.tm_hour = date.tm_min = date.tm_sec = 0;
+
+ date.tm_wday = date.tm_yday = date.tm_isdst = 0;
- return mktime (&date);
+ return mktime (&date);
}
char *