[Feature][T106BUG-559]fix memory leak of qser_data_call_init
Only Configure: No
Affected branch: master
Affected module: data
Is it affected on both ZXIC and MTK: only ZXIC
Self-test: Yes
Doc Update: No
Change-Id: Ibfbdb3e93c8d94dc73cefa622dc1c0c7b3f2db2a
diff --git a/cap/zx297520v3/src/lynq/lib/liblynq-data/lynq_data.cpp b/cap/zx297520v3/src/lynq/lib/liblynq-data/lynq_data.cpp
index e73229a..7a82c38 100755
--- a/cap/zx297520v3/src/lynq/lib/liblynq-data/lynq_data.cpp
+++ b/cap/zx297520v3/src/lynq/lib/liblynq-data/lynq_data.cpp
@@ -1442,14 +1442,17 @@
//xf.li@20230610 add for T106 data start
static int lynq_start_data_call_rc_socket_thread()
{
-// pthread_attr_t attr;
+ pthread_attr_t attr;
int ret;
pthread_mutex_init(&s_lynq_rc_vector_mutex, NULL);
module_rc_status = 1;
- ret = pthread_create(&module_rc_tid,/*&attr*/NULL,data_thread_rc_recv,NULL);
+ pthread_attr_init(&attr);
+ pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
+
+ ret = pthread_create(&module_rc_tid,&attr,data_thread_rc_recv,NULL);
if(ret <0)
{
LYERRLOG("rc pthread create error");
@@ -1457,6 +1460,7 @@
return ret;
}
+ pthread_attr_destroy(&attr);
LYINFLOG("rc start success");
return 0;
diff --git a/cap/zx297520v3/src/lynq/lib/liblynq-data/lynq_data_urc.cpp b/cap/zx297520v3/src/lynq/lib/liblynq-data/lynq_data_urc.cpp
index 5e3e2c7..8d61536 100755
--- a/cap/zx297520v3/src/lynq/lib/liblynq-data/lynq_data_urc.cpp
+++ b/cap/zx297520v3/src/lynq/lib/liblynq-data/lynq_data_urc.cpp
@@ -272,6 +272,7 @@
int lynq_init_data_urc_thread()
{
+ pthread_attr_t attr;
int ret = 0;
if(ril_init_mem()!=0)
{
@@ -313,7 +314,10 @@
}
data_urc_process_status = 1;
- ret = pthread_create(&data_urc_process_tid,NULL,thread_urc_process,NULL);
+ pthread_attr_init(&attr);
+ pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
+
+ ret = pthread_create(&data_urc_process_tid,&attr,thread_urc_process,NULL);
if (ret < 0)
{
LYERRLOG("urc recv pthread create error");
@@ -324,6 +328,7 @@
return -1;
}
+ pthread_attr_destroy(&attr);
return 0;
}
diff --git a/cap/zx297520v3/src/lynq/lib/liblynq-qser-data/lynq-qser-data.cpp b/cap/zx297520v3/src/lynq/lib/liblynq-qser-data/lynq-qser-data.cpp
index 94af56b..93494ca 100755
--- a/cap/zx297520v3/src/lynq/lib/liblynq-qser-data/lynq-qser-data.cpp
+++ b/cap/zx297520v3/src/lynq/lib/liblynq-qser-data/lynq-qser-data.cpp
@@ -632,6 +632,7 @@
if (rc == SQLITE_OK)
{
LYINFLOG("check init success!");
+ sqlite3_close_v2(apnDb_l);
return APN_DB_READED;
}
else
@@ -787,6 +788,7 @@
{
LYERRLOG("SQL error: %s\n", zErrMsg);
sqlite3_free(zErrMsg);
+ sqlite3_close(apnDb);
return -1;
}
else
@@ -1223,15 +1225,21 @@
int qser_cb_pthread_create()
{
+ pthread_attr_t attr;
int ret;
s_qser_data_cb_thread_status = 1;
- ret = pthread_create(&s_cb_tid,NULL,thread_wait_cb_status,NULL);
+
+ pthread_attr_init(&attr);
+ pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
+
+ ret = pthread_create(&s_cb_tid,&attr,thread_wait_cb_status,NULL);
if (ret < 0)
{
LYERRLOG("pthread create fail");
s_qser_data_cb_thread_status = 0;
return RESULT_ERROR;
}
+ pthread_attr_destroy(&attr);
return RESULT_OK;
}