diff options
| author | Fredrik Hellén-Halme <fredrik.hellen-halme@sonyericsson.com> | 2011-11-24 10:30:48 +0100 |
|---|---|---|
| committer | Michael Chan <mchan@android.com> | 2013-02-06 14:21:17 -0800 |
| commit | 6e5eff5f9bd9ec3e2d4508e4e62b181f171688ab (patch) | |
| tree | 8cdc4b369aae9fc19bde908bcbafd2e02b474277 | |
| parent | 0ce226da241d0089679fe37909d78bba90995810 (diff) | |
| download | android_frameworks_opt_calendar-6e5eff5f9bd9ec3e2d4508e4e62b181f171688ab.tar.gz android_frameworks_opt_calendar-6e5eff5f9bd9ec3e2d4508e4e62b181f171688ab.tar.bz2 android_frameworks_opt_calendar-6e5eff5f9bd9ec3e2d4508e4e62b181f171688ab.zip | |
Fix issue with invisible recurring appointments
Fixes that recurring appointments goes invisible
when hit by the failsafe limit.
There is still a hard limit in RecurrenceProcessor,
but at least this limit is applied on a per-event
basis, meaning that it's always possible to create
new recurring appointments without them going invisible.
Change-Id: I6c9e1e10db78e1b73ea9f2b7104621fbbd906452
| -rw-r--r-- | src/com/android/calendarcommon2/RecurrenceProcessor.java | 4 | ||||
| -rw-r--r-- | tests/src/com/android/calendarcommon2/RRuleTest.java | 14 |
2 files changed, 13 insertions, 5 deletions
diff --git a/src/com/android/calendarcommon2/RecurrenceProcessor.java b/src/com/android/calendarcommon2/RecurrenceProcessor.java index 641a161..fd225db 100644 --- a/src/com/android/calendarcommon2/RecurrenceProcessor.java +++ b/src/com/android/calendarcommon2/RecurrenceProcessor.java @@ -869,7 +869,9 @@ bysetpos: while (true) { int monthIndex = 0; if (failsafe++ > MAX_ALLOWED_ITERATIONS) { // Give up after about 1 second of processing - throw new DateException("Recurrence processing stuck: " + r.toString()); + Log.w(TAG, "Recurrence processing stuck with r=" + r + " rangeStart=" + + rangeStartDateValue + " rangeEnd=" + rangeEndDateValue); + break; } unsafeNormalize(iterator); diff --git a/tests/src/com/android/calendarcommon2/RRuleTest.java b/tests/src/com/android/calendarcommon2/RRuleTest.java index 53988e2..1d72366 100644 --- a/tests/src/com/android/calendarcommon2/RRuleTest.java +++ b/tests/src/com/android/calendarcommon2/RRuleTest.java @@ -143,11 +143,17 @@ public class RRuleTest extends TestCase { // Infinite loop, bug 1662110 @MediumTest public void testFrequencyLimits() throws Exception { - try { - runRecurrenceIteratorTest("RRULE:FREQ=SECONDLY;BYSECOND=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14," + "15,16,17,18,19,20,21,22,23,24,25,26,27,28,29," + "30,31,32,33,34,35,36,37,38,39,40,41,42,43,44," + "45,46,47,48,49,50,51,52,53,54,55,56,57,58,59", "20000101", 1, ""); + // Rather than checking that we get an exception, + // we now want to finish, but in a reasonable time + final long tenSeconds = 10000; + long start = System.currentTimeMillis(); + runRecurrenceIteratorTest( + "RRULE:FREQ=SECONDLY;BYSECOND=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14," + + "15,16,17,18,19,20,21,22,23,24,25,26,27,28,29," + + "30,31,32,33,34,35,36,37,38,39,40,41,42,43,44," + + "45,46,47,48,49,50,51,52,53,54,55,56,57,58,59", "20000101", 1, "20000101"); + if (System.currentTimeMillis() - start > tenSeconds) { fail("Don't do that"); - } catch (DateException ex) { - // pass } } |
