CCExtractor / CCExtractor/ultimate_alarm_clock

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

オープン
#878 コメント 1 件 リアクション 0 件 担当者 0 名 GitHub で見る
主要言語
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 はまだ評価されていません。

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。