CCExtractor / CCExtractor/ultimate_alarm_clock
Bug: RangeError crash in doesAlarmExist when alarm ID doesn't exist in DB
- 主要言語
- Dart
- スター
- 112
- フォーク
- 227
- PR マージ指標
- 30日以内にマージされた PR はありません
説明
## 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;
`
コントリビューションガイド
評価
この issue はまだ評価されていません。