osaf/services/saf/cpsv/cpd/cpd_db.c | 11 +++++++---- osaf/services/saf/cpsv/cpd/cpd_sbevt.c | 16 ++++++++++------ 2 files changed, 17 insertions(+), 10 deletions(-)
diff --git a/osaf/services/saf/cpsv/cpd/cpd_db.c b/osaf/services/saf/cpsv/cpd/cpd_db.c --- a/osaf/services/saf/cpsv/cpd/cpd_db.c +++ b/osaf/services/saf/cpsv/cpd/cpd_db.c @@ -439,7 +439,7 @@ uint32_t cpd_ckpt_reploc_node_delete(CPD /* goto reploc_node_add_fail; */ TRACE_4("cpd db node add failed "); } - rc = NCSCC_RC_FAILURE; + return NCSCC_RC_FAILURE; } /* Free the Client Node */ @@ -989,8 +989,10 @@ void cpd_ckpt_ref_info_add(CPD_CPND_INFO cref = node_info->ckpt_ref_list; while (cref) { - if (cref->ckpt_node->ckpt_id == cref_info->ckpt_node->ckpt_id) + if (cref->ckpt_node->ckpt_id == cref_info->ckpt_node->ckpt_id) { + m_MMGR_FREE_CPD_CKPT_REF_INFO(cref_info); return; + } cref = cref->next; } @@ -1055,9 +1057,10 @@ void cpd_node_ref_info_add(CPD_CKPT_INFO TRACE_ENTER(); nref = ckpt_node->node_list; while (nref) { - if (nref->dest == nref_info->dest) + if (nref->dest == nref_info->dest) { + m_MMGR_FREE_CPD_NODE_REF_INFO(nref_info); return; - + } nref = nref->next; } diff --git a/osaf/services/saf/cpsv/cpd/cpd_sbevt.c b/osaf/services/saf/cpsv/cpd/cpd_sbevt.c --- a/osaf/services/saf/cpsv/cpd/cpd_sbevt.c +++ b/osaf/services/saf/cpsv/cpd/cpd_sbevt.c @@ -175,8 +175,6 @@ uint32_t cpd_sb_proc_ckpt_create(CPD_CB if (!node_info) { TRACE_4("cpd standby create evt failed for mdsdest: %"PRIu64,msg->info.ckpt_create.dest_list[count].dest); proc_rc = NCSCC_RC_OUT_OF_MEM; - if (nref_info) - m_MMGR_FREE_CPD_NODE_REF_INFO(nref_info); goto cpd_cpnd_node_find_fail; } add_flag = true; @@ -240,8 +238,12 @@ uint32_t cpd_sb_proc_ckpt_create(CPD_CB /* Failed some where in the for loop or in ckpt node add */ cpd_ckpt_node_add_fail: + if (cref_info) + m_MMGR_FREE_CPD_CKPT_REF_INFO(cref_info); cluster_node_get_fail: cpd_cpnd_node_find_fail: + if (nref_info) + m_MMGR_FREE_CPD_NODE_REF_INFO(nref_info); nref_info_alloc_fail: if (ckpt_node) { @@ -498,7 +500,8 @@ uint32_t cpd_sb_proc_ckpt_dest_add(CPD_C cpd_node_ref_info_add(ckpt_node, nref_info); else { TRACE_4("cpd standby dest add evt failed for ckptid: %llx",msg->info.dest_add.ckpt_id); - return NCSCC_RC_OUT_OF_MEM; + proc_rc = NCSCC_RC_OUT_OF_MEM; + goto free_mem; } cpd_cpnd_info_node_find_add(&cb->cpnd_tree, &msg->info.dest_add.mds_dest, &node_info, &add_flag); @@ -555,15 +558,16 @@ uint32_t cpd_sb_proc_ckpt_dest_add(CPD_C cref_info->ckpt_node = ckpt_node; cpd_ckpt_ref_info_add(node_info, cref_info); - TRACE_1("cpd standby destadd evt success ckpt_id %llx mdsdest: %"PRIu64, msg->info.dest_add.ckpt_id, msg->info.dest_add.mds_dest); free_mem: if (node_info == NULL) { cpd_node_ref_info_del(ckpt_node, nref_info); - m_MMGR_FREE_CPD_NODE_REF_INFO(nref_info); - m_MMGR_FREE_CPD_CKPT_REF_INFO(cref_info); + if (nref_info) + m_MMGR_FREE_CPD_NODE_REF_INFO(nref_info); + if (cref_info) + m_MMGR_FREE_CPD_CKPT_REF_INFO(cref_info); } TRACE_LEAVE(); return proc_rc; ------------------------------------------------------------------------------ October Webinars: Code for Performance Free Intel webinars can help you accelerate application performance. Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most from the latest Intel processors and coprocessors. See abstracts and register > http://pubads.g.doubleclick.net/gampad/clk?id=60134071&iu=/4140/ostg.clktrk _______________________________________________ Opensaf-devel mailing list Opensaf-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensaf-devel