Ver código fonte

fix:sms 可能的内存泄漏

豆豆 7 meses atrás
pai
commit
4375aae0e2
1 arquivos alterados com 8 adições e 3 exclusões
  1. 8 3
      components/sms/binding/luat_lib_sms.c

+ 8 - 3
components/sms/binding/luat_lib_sms.c

@@ -307,11 +307,12 @@ void luat_sms_send_cb(int ret)
 
     // 长短信继续发送
     g_s_sms_pdu_packet.seqNum++;
-
+    // 最后一包
     if (g_s_sms_send.payload_len - (g_s_sms_pdu_packet.seqNum - 1) * LUAT_SMS_LONG_MSG_PDU_SIZE <= LUAT_SMS_LONG_MSG_PDU_SIZE) {
         memcpy(g_s_sms_pdu_packet.payload_buf, g_s_sms_send.payload + (g_s_sms_pdu_packet.seqNum - 1) * LUAT_SMS_LONG_MSG_PDU_SIZE, g_s_sms_send.payload_len - (g_s_sms_pdu_packet.seqNum - 1) * LUAT_SMS_LONG_MSG_PDU_SIZE);
         g_s_sms_pdu_packet.payload_len = g_s_sms_send.payload_len - (g_s_sms_pdu_packet.seqNum - 1) * LUAT_SMS_LONG_MSG_PDU_SIZE ;
     } else {
+        // 继续发送
         memcpy(g_s_sms_pdu_packet.payload_buf, g_s_sms_send.payload + (g_s_sms_pdu_packet.seqNum - 1) * LUAT_SMS_LONG_MSG_PDU_SIZE, LUAT_SMS_LONG_MSG_PDU_SIZE);
         g_s_sms_pdu_packet.payload_len = LUAT_SMS_LONG_MSG_PDU_SIZE;
     }
@@ -327,6 +328,10 @@ void luat_sms_send_cb(int ret)
         } else {
             g_s_sms_pdu_packet.maxNum = 0;
         }
+        if (g_s_sms_send.payload != NULL) {
+            luat_heap_free(g_s_sms_send.payload);
+            g_s_sms_send.payload = NULL;
+        }
     }
     return;
 }
@@ -366,7 +371,7 @@ static int l_sms_send(lua_State *L) {
     }
 
     if (payload_len == 0) {
-        LLOGE("sms is emtry");
+        LLOGE("sms is empty");
         return 0;
     }
     
@@ -475,7 +480,7 @@ static int l_long_sms_send(lua_State *L) {
     }
 
     if (payload_len == 0) {
-        LLOGE("sms is emtry");
+        LLOGE("sms is empty");
         goto SMS_FAIL;
     }