ソースを参照

1、修复MQTT WS接口导致的内存泄漏的缺陷

liyuezong 1 年間 前
親
コミット
cb1b453b93
共有1 個のファイルを変更した、33 個の追加 と 27 個の削除を含む
  1. 33 27
      pro/src/json_handle.c

+ 33 - 27
pro/src/json_handle.c

@@ -6048,38 +6048,44 @@ char* service_mqtt_ack_to_json(mqtt_info_t* info,int nWSType)
 
 
 #if 1
-    cJSON *tmp,*array=cJSON_CreateArray();
+    cJSON *array=cJSON_CreateArray();
     if(array) {
         
         for(int i=0; i<MQTT_SER_MAX; i++) {
-            mqtt_server_t *ser=&info->ser[i];
-            cJSON *tmp=cJSON_CreateObject();
-            if(tmp && (ser->id==i)) {
-                sprintf(buf, "%d", ser->id);
-                cJSON_AddStringToObject(tmp,"idx", buf);
-
-                sprintf(buf, "%d", ser->mode);
-                cJSON_AddStringToObject(tmp,"mode", buf);
-
-                cJSON_AddStringToObject(tmp,"serverName", ser->name);
-                cJSON_AddStringToObject(tmp,"ip", ser->server);
-                cJSON_AddStringToObject(tmp,"port", ser->port);
-                cJSON_AddStringToObject(tmp,"yhm", ser->user);
-                cJSON_AddStringToObject(tmp,"mm", ser->password);
-                cJSON_AddStringToObject(tmp,"kfdId", ser->cid);
-
-                if(strlen(ser->cert)>0) {
-                    strcpy(buf, "CERT");
-                }
-                else {
-                    strcpy(buf, "");
-                }
-                cJSON_AddStringToObject(tmp,"zs", buf);
+            mqtt_server_t *ser = &info->ser[i];
+            if (ser->id == i)
+            {
+                cJSON *tmp = cJSON_CreateObject();
+                if (tmp)
+                {
+                    sprintf(buf, "%d", ser->id);
+                    cJSON_AddStringToObject(tmp, "idx", buf);
+
+                    sprintf(buf, "%d", ser->mode);
+                    cJSON_AddStringToObject(tmp, "mode", buf);
+
+                    cJSON_AddStringToObject(tmp, "serverName", ser->name);
+                    cJSON_AddStringToObject(tmp, "ip", ser->server);
+                    cJSON_AddStringToObject(tmp, "port", ser->port);
+                    cJSON_AddStringToObject(tmp, "yhm", ser->user);
+                    cJSON_AddStringToObject(tmp, "mm", ser->password);
+                    cJSON_AddStringToObject(tmp, "kfdId", ser->cid);
 
-                sprintf(buf, "%d", ser->status?1:2);
-                cJSON_AddStringToObject(tmp,"ljzt", buf);
+                    if (strlen(ser->cert) > 0)
+                    {
+                        strcpy(buf, "CERT");
+                    }
+                    else
+                    {
+                        strcpy(buf, "");
+                    }
+                    cJSON_AddStringToObject(tmp, "zs", buf);
 
-                cJSON_AddItemToArray(array, tmp);
+                    sprintf(buf, "%d", ser->status ? 1 : 2);
+                    cJSON_AddStringToObject(tmp, "ljzt", buf);
+
+                    cJSON_AddItemToArray(array, tmp);
+                }
             }
         }