CCExtractor / CCExtractor/ultimate_alarm_clock

Bug: RangeError crash in doesAlarmExist when alarm ID doesn't exist in DB

Abierto
#878 1 comentario 0 reacciones 0 asignados Ver en GitHub
Lenguaje dominante
Dart
Estrellas
112
Forks
227
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

## Description

I was going through [isar_provider.dart](cci:7://file:///Users/rajesh/Desktop/ultimate-alarm-clock/ultimate_alarm_clock/lib/app/data/providers/isar_provider.dart:0:0-0:0) and noticed thatt [doesAlarmExist](cci:1://file:///Users/rajesh/Desktop/ultimate-alarm-clock/ultimate_alarm_clock/lib/app/data/providers/isar_provider.dart:336:2-344:3) prints `alarms[0].alarmID` even before checking if the list is actually non-empty.
So if the alarm doesnot exist in Isar , [alarms](cci:1://file:///Users/rajesh/Desktop/ultimate-alarm-clock/ultimate_alarm_clock/lib/app/data/providers/firestore_provider.dart:98:2-108:3) comes back empty and that line crashes and gives a `RangeError`.

## Affected Code

[lib/app/data/providers/isar_provider.dart](cci:7://file:///Users/rajesh/Desktop/ultimate-alarm-clock/ultimate_alarm_clock/lib/app/data/providers/isar_provider.dart:0:0-0:0) ~line 342

```dart
final alarms = await db.alarmModels.where().filter().alarmIDEqualTo(alarmID).findAll();
print('checkEmpty ${alarms[0].alarmID} ${alarms.isNotEmpty}'); // crashes if alarms is empty
return alarms.isNotEmpty;
```

## Why it matters
This method is called in
`add_or_update_alarm_controller.dart`
at lines 652 and 663, during both alarm creation and update. So on a fresh install when an alarm doesn't exist yet, trying to create an alarm could hit this crash path.

## Fix

Just move the print inside an isNotEmpty check:

`if (alarms.isNotEmpty) {
print('checkEmpty ${alarms[0].alarmID} ${alarms.isNotEmpty}');
}
return alarms.isNotEmpty;
`

Guía de contribución

Abrir la guía de contribución

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.