Fix memleak in API test.
---
src/ckpt/apitest/test_cpa.c | 3 +++
src/ckpt/apitest/test_cpa_util.c | 17 ++++++++++++++---
src/ckpt/apitest/test_cpsv_conf.h | 3 ++-
3 files changed, 19 insertions(+), 4 deletions(-)
diff --git a/src/ckpt/apitest/test_cpa.c b/src/ckpt/apitest/test_cpa.c
index 6c37e91d5..50969ff5b 100644
--- a/src/ckpt/apitest/test_cpa.c
+++ b/src/ckpt/apitest/test_cpa.c
@@ -364,6 +364,7 @@ void fill_testcase_data()
*(ckpt_name + length) = '.';
saAisNameLend(ckpt_name,
&tcd.all_replicas_ckpt_with_valid_extended_name_length);
+ free(ckpt_name);
ckpt_name = malloc(INVALID_EXTENDED_NAME_LENGTH);
memset(ckpt_name, 0, INVALID_EXTENDED_NAME_LENGTH);
@@ -374,6 +375,7 @@ void fill_testcase_data()
*(ckpt_name + length) = '.';
saAisNameLend(ckpt_name,
&tcd.all_replicas_ckpt_with_invalid_extended_name_length);
+ free(ckpt_name);
/* Variables for sec create */
tcd.sec_id1 = (SaUint8T *)"11";
@@ -1046,6 +1048,7 @@ final3:
final2:
test_cpsv_cleanup(CPSV_CLEAN_INIT_SUCCESS_T);
final1:
+ cpsv_deletethread();
printResult(result);
test_validate(result, TEST_PASS);
}
diff --git a/src/ckpt/apitest/test_cpa_util.c b/src/ckpt/apitest/test_cpa_util.c
index 474e76f0d..34d8bf987 100644
--- a/src/ckpt/apitest/test_cpa_util.c
+++ b/src/ckpt/apitest/test_cpa_util.c
@@ -24,6 +24,7 @@ extern const char *saf_error_string[];
int gl_try_again_cnt;
int gl_tmout_cnt;
int gl_sync_pointnum;
+NCSCONTEXT gl_task_hdl;
int tmoutFlag;
int cpsv_test_result(SaAisErrorT rc, SaAisErrorT exp_out, char *test_case,
@@ -653,21 +654,26 @@ void selection_thread_blocking(NCSCONTEXT arg)
m_TEST_CPSV_PRINTF("\n Thread selected \n");
}
+void cpsv_deletethread()
+{
+ m_NCS_TASK_RELEASE(gl_task_hdl);
+}
+
void cpsv_createthread(SaCkptHandleT *cl_hdl)
{
SaAisErrorT rc;
- NCSCONTEXT thread_handle;
rc = m_NCS_TASK_CREATE((NCS_OS_CB)selection_thread_blocking,
(NCSCONTEXT)cl_hdl, "cpsv_block_test", 0,
- SCHED_OTHER, 8000, &thread_handle);
+ SCHED_OTHER, 8000, &gl_task_hdl);
if (rc != NCSCC_RC_SUCCESS) {
m_TEST_CPSV_PRINTF(" Failed to create thread\n");
return;
}
- rc = m_NCS_TASK_START(thread_handle);
+ rc = m_NCS_TASK_START(gl_task_hdl);
if (rc != NCSCC_RC_SUCCESS) {
+ m_NCS_TASK_RELEASE(gl_task_hdl);
m_TEST_CPSV_PRINTF(" Failed to start thread\n");
return;
}
@@ -3007,6 +3013,11 @@ static void ntfCallback(SaNtfSubscriptionIdT
subscriptionId,
break;
}
} while (false);
+
+ if (notification->notificationType == SA_NTF_TYPE_STATE_CHANGE)
+ saNtfNotificationFree(
+ notification->notification.stateChangeNotification
+ .notificationHandle);
}
int test_ckptNtfStateChange(int i, CONFIG_FLAG cfg_flg)
diff --git a/src/ckpt/apitest/test_cpsv_conf.h
b/src/ckpt/apitest/test_cpsv_conf.h
index d33be6779..986794f4c 100644
--- a/src/ckpt/apitest/test_cpsv_conf.h
+++ b/src/ckpt/apitest/test_cpsv_conf.h
@@ -154,7 +154,7 @@ struct cpsv_testcase_data {
int ntfTest;
};
-struct cpsv_testcase_data tcd;
+extern struct cpsv_testcase_data tcd;
extern int test_ckptInitialize(int i, CONFIG_FLAG cfg_flg);
extern int test_ckptSelectionObject(int i, CONFIG_FLAG cfg_flg);
@@ -206,6 +206,7 @@ extern int test_red_ckptIterationNext(int i, CONFIG_FLAG
cfg_flg);
extern int test_red_ckptIterationFin(int i, CONFIG_FLAG cfg_flg);
extern void selection_thread_blocking(NCSCONTEXT arg);
extern void cpsv_createthread(SaCkptHandleT *cl_hdl);
+extern void cpsv_deletethread();
extern void printHead(char *str);
extern void cpsv_clean_clbk_params();
--
2.25.1
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel