diff --git a/calendar/base/src/calIcsParser.js b/calendar/base/src/calIcsParser.js index 49ac24a89f14..4fe55d63ec71 100644 --- a/calendar/base/src/calIcsParser.js +++ b/calendar/base/src/calIcsParser.js @@ -130,7 +130,6 @@ function ip_parseString(aICSString) { uid2parent[item.id] = item; } } else { - item.calendar = this; // force no recurrence info: item.recurrenceInfo = null; excItems.push(item); diff --git a/calendar/providers/memory/calMemoryCalendar.js b/calendar/providers/memory/calMemoryCalendar.js index f0309c0389ac..a2074b8c21ae 100644 --- a/calendar/providers/memory/calMemoryCalendar.js +++ b/calendar/providers/memory/calMemoryCalendar.js @@ -194,6 +194,21 @@ calMemoryCalendar.prototype = { } aItem.calendar = this.calendarToReturn; + var rec = aItem.recurrenceInfo; + if (rec) { + var exceptions = rec.getExceptionIds({}); + for each (var exid in exceptions) { + var exception = rec.getExceptionFor(exid, false); + if (exception) { + if (!exception.isMutable) { + exception = exception.clone(); + } + exception.calendar = this.calendarToReturn; + rec.modifyException(exception); + } + } + } + aItem.generation = 1; aItem.makeImmutable(); this.mItems[aItem.id] = aItem;