CCExtractor / CCExtractor/ultimate_alarm_clock

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

未关闭
#878 1 条评论 0 个 reaction 已指派 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 摘要。