From 05ebdfa5625d3de5788f1999dbde991a1ba61d05 Mon Sep 17 00:00:00 2001 From: Mentalflow <312902918@qq.com> Date: Thu, 1 Feb 2024 20:53:00 +0800 Subject: [PATCH] Enhance performance and fix bug of the access array out of range. --- app_source/dlln3x/zigbeeframe.h | 2 + app_source/qml/components/DeviceList.qml | 52 ++++++------------------ app_source/qml/components/KeysList.qml | 9 +--- 3 files changed, 16 insertions(+), 47 deletions(-) diff --git a/app_source/dlln3x/zigbeeframe.h b/app_source/dlln3x/zigbeeframe.h index 95a2dcd..d528044 100644 --- a/app_source/dlln3x/zigbeeframe.h +++ b/app_source/dlln3x/zigbeeframe.h @@ -163,6 +163,8 @@ public: void load_package(QList& buf) { load_package(buf.constData(), buf.size()); }; void load_package(const uint8_t* buf, uint8_t length) { + if (length < 7) // len < 7 means pkg is corrupted + return; _packed_data.clear(); for (uint8_t i = 0; i < length; i++) { _package.append(buf[i]); diff --git a/app_source/qml/components/DeviceList.qml b/app_source/qml/components/DeviceList.qml index d6b3dd5..e3ce5be 100644 --- a/app_source/qml/components/DeviceList.qml +++ b/app_source/qml/components/DeviceList.qml @@ -143,12 +143,8 @@ Item{ { deny.push(ZigBeeParser.wait_queue[list.current_index]) ZigBeeParser.deny_list = deny - for (var i = 0; i < ZigBeeParser.wait_queue.length; i++) - { - if (i === list.current_index) - continue - data.push(ZigBeeParser.wait_queue[i]) - } + data = ZigBeeParser.wait_queue + data.splice(list.current_index,1) ZigBeeParser.wait_queue = data break } @@ -156,12 +152,8 @@ Item{ { deny.push(ZigBeeParser.allow_list[list.current_index]) ZigBeeParser.deny_list = deny - for (let i = 0; i < ZigBeeParser.allow_list.length; i++) - { - if (i === list.current_index) - continue - data.push(ZigBeeParser.allow_list[i]) - } + data = ZigBeeParser.allow_list + data.splice(list.current_index,1) ZigBeeParser.allow_list = data break } @@ -170,13 +162,8 @@ Item{ let allow = ZigBeeParser.allow_list allow.push(ZigBeeParser.deny_list[list.current_index]) ZigBeeParser.allow_list = allow - let data = [] - for (let i = 0; i < ZigBeeParser.deny_list.length; i++) - { - if (i === list.current_index) - continue - data.push(ZigBeeParser.deny_list[i]) - } + data = ZigBeeParser.deny_list + data.splice(list.current_index,1) ZigBeeParser.deny_list = data break } @@ -196,37 +183,22 @@ Item{ let allow = ZigBeeParser.allow_list allow.push(ZigBeeParser.wait_queue[list.current_index]) ZigBeeParser.allow_list = allow - var data = [] - for (var i = 0; i < ZigBeeParser.wait_queue.length; i++) - { - if (i === list.current_index) - continue - data.push(ZigBeeParser.wait_queue[i]) - } + var data = ZigBeeParser.wait_queue + data.splice(list.current_index,1) ZigBeeParser.wait_queue = data break } case 1: { - let data = [] - for (let i = 0; i < ZigBeeParser.allow_list.length; i++) - { - if (i === list.current_index) - continue - data.push(ZigBeeParser.allow_list[i]) - } + let data = ZigBeeParser.allow_list + data.splice(list.current_index,1) ZigBeeParser.allow_list = data break } case 2: { - let data = [] - for (let i = 0; i < ZigBeeParser.deny_list.length; i++) - { - if (i === list.current_index) - continue - data.push(ZigBeeParser.deny_list[i]) - } + let data = ZigBeeParser.deny_list + data.splice(list.current_index,1) ZigBeeParser.deny_list = data break } diff --git a/app_source/qml/components/KeysList.qml b/app_source/qml/components/KeysList.qml index 4361315..87ce4aa 100644 --- a/app_source/qml/components/KeysList.qml +++ b/app_source/qml/components/KeysList.qml @@ -111,13 +111,8 @@ Item { text: qsTr("删除") enabled: list.has_selected onClicked: { - let data = [] - for (let i = 0; i < ZigBeeParser.pre_hmac_verify_key.length; i++) - { - if (i === list.current_index) - continue - data.push(ZigBeeParser.pre_hmac_verify_key[i]) - } + let data = ZigBeeParser.pre_hmac_verify_key + data.splice(list.current_index,1) ZigBeeParser.pre_hmac_verify_key = data } }