From 144db406ca26ce522daad7864f25b40c8da05b46 Mon Sep 17 00:00:00 2001 From: MM20 <15646950+MM2-0@users.noreply.github.com> Date: Tue, 12 Jul 2022 14:58:19 +0200 Subject: [PATCH] Fix potential NPE Fix #115 --- .../mm20/launcher2/calendar/CalendarRepository.kt | 15 +++++++++------ .../launcher2/calendar/CalendarSerialization.kt | 11 +++++++---- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/calendar/src/main/java/de/mm20/launcher2/calendar/CalendarRepository.kt b/calendar/src/main/java/de/mm20/launcher2/calendar/CalendarRepository.kt index c4fe168c..f158e4ee 100644 --- a/calendar/src/main/java/de/mm20/launcher2/calendar/CalendarRepository.kt +++ b/calendar/src/main/java/de/mm20/launcher2/calendar/CalendarRepository.kt @@ -110,8 +110,11 @@ internal class CalendarRepositoryImpl( ) ?: return@withContext mutableListOf() val attendees = mutableListOf() while (cur.moveToNext()) { - attendees.add(cur.getString(1).takeUnless { it.isNullOrBlank() } - ?: cur.getString(2)) + attendees.add( + cur.getStringOrNull(1).takeUnless { it.isNullOrBlank() } + ?: cur.getStringOrNull(2) + ?: continue + ) } cur.close() val allday = cursor.getInt(4) > 0 @@ -123,13 +126,13 @@ internal class CalendarRepositoryImpl( 0 } val event = CalendarEvent( - label = cursor.getString(1) ?: "", + label = cursor.getStringOrNull(1) ?: "", id = cursor.getLong(0), color = cursor.getInt(5), startTime = begin - tzOffset, endTime = cursor.getLong(3) - tzOffset - if (allday) 1 else 0, allDay = allday, - location = cursor.getString(6) ?: "", + location = cursor.getStringOrNull(6) ?: "", attendees = attendees, description = cursor.getStringOrNull(8) ?: "", @@ -189,8 +192,8 @@ internal class CalendarRepositoryImpl( calendars.add( UserCalendar( id = cursor.getLong(0), - name = cursor.getString(5) ?: cursor.getString(1) ?: "", - owner = cursor.getString(2), + name = cursor.getStringOrNull(5) ?: cursor.getStringOrNull(1) ?: "", + owner = cursor.getStringOrNull(2) ?: "", color = cursor.getInt(3) ) ) diff --git a/calendar/src/main/java/de/mm20/launcher2/calendar/CalendarSerialization.kt b/calendar/src/main/java/de/mm20/launcher2/calendar/CalendarSerialization.kt index 08a33db8..2c3132a3 100644 --- a/calendar/src/main/java/de/mm20/launcher2/calendar/CalendarSerialization.kt +++ b/calendar/src/main/java/de/mm20/launcher2/calendar/CalendarSerialization.kt @@ -51,12 +51,12 @@ class CalendarEventDeserializer(val context: Context): SearchableDeserializer { val cursor = context.contentResolver.query(uri, projection, selection, selArgs, null) ?: return null if (cursor.moveToNext()) { - val title = cursor.getString(1) + val title = cursor.getStringOrNull(1) ?: "" val begin = cursor.getLong(2) val end = cursor.getLong(3) val allday = cursor.getInt(4) != 0 val color = cursor.getInt(5) - val location = cursor.getString(6) + val location = cursor.getStringOrNull(6) val calendar = cursor.getLong(7) val description = cursor.getStringOrNull(8) ?: "" @@ -74,8 +74,11 @@ class CalendarEventDeserializer(val context: Context): SearchableDeserializer { ) ?: return null val attendees = mutableListOf() while (cur.moveToNext()) { - attendees.add(cur.getString(1).takeUnless { it.isNullOrBlank() } - ?: cur.getString(2)) + attendees.add( + cur.getStringOrNull(1).takeUnless { it.isNullOrBlank() } + ?: cur.getStringOrNull(2) + ?: continue + ) } cur.close() val tzOffset = if (allday) {