[evolution-mapi] Fix for RRULE bin parsing for recurrences with modifications
- From: Milan Crha <mcrha src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution-mapi] Fix for RRULE bin parsing for recurrences with modifications
- Date: Thu, 10 Feb 2011 10:08:59 +0000 (UTC)
commit f36cca5d32ce87a53684d950d53da75e266553ff
Author: Sean Finney <seanius seanius net>
Date: Thu Feb 10 11:08:10 2011 +0100
Fix for RRULE bin parsing for recurrences with modifications
This is an additional fix for Bug #604029
This patch fixes some incorrect parsing that would cause
exchange_mapi_cal_util_bin_to_rrule() to incorrectly discard RRULE
information when processing a recurrence containing modified
instances.
Note that this does *not* include a fix to actually parse the modified
instances, which after some analysis will be fairly complicated to do and
thus saved for a later point in time.
The resulting behavior from this patch is that the recurrence will show
in the calendar, with exception dates for the modified instances, but no
corresponding events (i.e. the modified instances will be missing).
.../exchange-mapi-cal-recur-utils.c | 19 +++++--------------
1 files changed, 5 insertions(+), 14 deletions(-)
---
diff --git a/src/libexchangemapi/exchange-mapi-cal-recur-utils.c b/src/libexchangemapi/exchange-mapi-cal-recur-utils.c
index c607b78..452a235 100644
--- a/src/libexchangemapi/exchange-mapi-cal-recur-utils.c
+++ b/src/libexchangemapi/exchange-mapi-cal-recur-utils.c
@@ -672,20 +672,11 @@ exchange_mapi_cal_util_bin_to_rrule (GByteArray *ba, ECalComponent *comp)
/* modified exceptions */
flag16 = *((guint16 *)ptr);
ptr += sizeof (guint16);
- if (flag16 != 0x0)
- return FALSE;
-
- /* reserved block1 size - has to be 0 */
- flag32 = *((guint32 *)ptr);
- ptr += sizeof (guint32);
- if (flag32 != 0x0)
- return FALSE;
-
- /* reserved block2 size - has to be 0 */
- flag32 = *((guint32 *)ptr);
- ptr += sizeof (guint32);
- if (flag32 != 0x0)
- return FALSE;
+ /* FIXME: there are flag16 count modified exceptions here, which
+ are variable in size, followed by a ReservedBlock1{Size,}
+ and ReservedBlock2{Size,}. However, since we have nothing
+ else to do until we are able to parse these modified
+ instances, we just stop now. */
/* Set the recurrence */
{
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]