From 4169e03b124c92fdc72941ec85d07b960594a8d2 Mon Sep 17 00:00:00 2001 From: Lionel Mamane Date: Fri, 6 Oct 2023 15:52:09 +0200 Subject: [PATCH] protect against convertAlldayUtcToLocal trashing its recycle argument when it looks like the caller does not expect it --- .../java/com/android/calendar/AllInOneActivity.java | 11 +++++++---- .../android/calendar/agenda/AgendaByDayAdapter.java | 5 +++-- .../com/android/calendar/alerts/AlarmScheduler.java | 2 +- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/com/android/calendar/AllInOneActivity.java b/app/src/main/java/com/android/calendar/AllInOneActivity.java index b113befea..f432c0ff6 100644 --- a/app/src/main/java/com/android/calendar/AllInOneActivity.java +++ b/app/src/main/java/com/android/calendar/AllInOneActivity.java @@ -1365,10 +1365,13 @@ public void handleEvent(EventInfo event) { if (event.startTime != null && event.endTime != null) { // Event is all day , adjust the goto time to local time if (event.isAllDay()) { - Utils.convertAlldayUtcToLocal( - event.startTime, event.startTime.toMillis(), mTimeZone); - Utils.convertAlldayUtcToLocal( - event.endTime, event.endTime.toMillis(), mTimeZone); + final Time t = new Time(); + event.startTime.set( + Utils.convertAlldayUtcToLocal( + t, event.startTime.toMillis(), mTimeZone)); + event.endTime.set( + Utils.convertAlldayUtcToLocal( + t, event.endTime.toMillis(), mTimeZone)); } mController.sendEvent(this, EventType.GO_TO, event.startTime, event.endTime, event.selectedTime, event.id, ViewType.AGENDA, diff --git a/app/src/main/java/com/android/calendar/agenda/AgendaByDayAdapter.java b/app/src/main/java/com/android/calendar/agenda/AgendaByDayAdapter.java index ef339bb36..ef0478670 100644 --- a/app/src/main/java/com/android/calendar/agenda/AgendaByDayAdapter.java +++ b/app/src/main/java/com/android/calendar/agenda/AgendaByDayAdapter.java @@ -306,8 +306,9 @@ public void calculateDays(DayAdapterInfo dayAdapterInfo) { long instanceId = cursor.getLong(AgendaWindowAdapter.INDEX_INSTANCE_ID); boolean allDay = cursor.getInt(AgendaWindowAdapter.INDEX_ALL_DAY) != 0; if (allDay) { - startTime = Utils.convertAlldayUtcToLocal(tempTime, startTime, mTimeZone); - endTime = Utils.convertAlldayUtcToLocal(tempTime, endTime, mTimeZone); + final Time recycle = new Time(); + startTime = Utils.convertAlldayUtcToLocal(recycle, startTime, mTimeZone); + endTime = Utils.convertAlldayUtcToLocal(recycle, endTime, mTimeZone); } // Skip over the days outside of the adapter's range startDay = Math.max(startDay, dayAdapterInfo.start); diff --git a/app/src/main/java/com/android/calendar/alerts/AlarmScheduler.java b/app/src/main/java/com/android/calendar/alerts/AlarmScheduler.java index 45a25f2b5..30d3f2b68 100644 --- a/app/src/main/java/com/android/calendar/alerts/AlarmScheduler.java +++ b/app/src/main/java/com/android/calendar/alerts/AlarmScheduler.java @@ -206,7 +206,7 @@ private static void queryNextReminderAndSchedule(Cursor instancesCursor, Context long localStartTime; if (allday) { // Adjust allday to local time. - localStartTime = Utils.convertAlldayUtcToLocal(timeObj, begin, + localStartTime = Utils.convertAlldayUtcToLocal(null, begin, Utils.getCurrentTimezone()); } else { localStartTime = begin;