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 Opensaf-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensaf-devel