解决,#1269点击已过时间但未关闭的闹钟,手表卡死过一会死机,出现二次bug 1632/3
authorluozheng <1732036298@qq.com>
Thu, 16 Jan 2025 03:25:01 +0000 (11:25 +0800)
committerluozheng <1732036298@qq.com>
Thu, 16 Jan 2025 03:25:01 +0000 (11:25 +0800)
code/sdk/application/wearable/fd230app/nativeui/alarm/src/AlarmConfigView.cpp

index 33cd189..67b372d 100644 (file)
@@ -344,6 +344,16 @@ namespace OHOS
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmConfigView::RefreshStep hour > 24 error!");\r
             return;\r
         }\r
+        // 检查分钟是否在有效范围\r
+        if (min > 59) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmConfigView::RefreshStep min > 59 error!");\r
+            return;\r
+        }\r
+        // 检查 week 是否在有效范围\r
+        if (week > 127) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmConfigView::RefreshStep week out of range!");\r
+            return;\r
+        }\r
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmConfigView::week = %u!", week);\r
         if ((week & 0x7f) == 0x7f)\r
         { // 判断0~6位是否都为1,如若都为1,则一周7天闹钟都响应\r
@@ -398,9 +408,8 @@ namespace OHOS
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmConfigView::RefreshStep labelTime or labelDay error!");\r
             return;\r
         }\r
-        showtime[12] = {0};\r
-        sprintf(showtime, "%02d:%02d", hour, min);\r
-        // labelTime->SetTime24Hour(hour, min, 0);\r
+        memset(showtime, 0, sizeof(showtime));\r
+        snprintf(showtime, sizeof(showtime), "%02d:%02d", hour, min);// 使用更安全的 snprintf 函数\r
         labelTime->SetText(showtime);\r
         if (ConfigModel::GetInstance()->GetLanguage() == ZH_CN)\r
             labelDay->SetText(weekStr.c_str());\r