CCExtractor / CCExtractor/ultimate_alarm_clock

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

Offen
#878 1 Kommentar 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
Vorherrschende Sprache
Dart
Sterne
112
Forks
227
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

## 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;
`

Beitragsleitfaden

Beitragsleitfaden öffnen

Bewertung

Dieses Issue wurde noch nicht bewertet.

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.