Hmm, something went wrong when the email was done. The commit message should read:
* remove saAmfStgValidSuTypes from 'struct avd_amf_sg_type_tag' as it appears to be a typo of saAmfSGtValidSuTypes * ensure saAmfCSIDependencies is deleted in csi.cc * ensure saAmfSIActiveWeight, saAmfSIStandbyWeight, saAmfSvcDefActiveWeight and saAmfSvcDefStandbyWeight are deleted in si.cc * fix a few typos where delete is called when delete [] is requiredOn 13/01/14 21:53, Gary Lee wrote: > osaf/services/saf/amf/amfd/csi.cc | 25 ++++++++++++++++++++----- > osaf/services/saf/amf/amfd/include/sg.h | 1 - > osaf/services/saf/amf/amfd/sgtype.cc | 3 ++- > osaf/services/saf/amf/amfd/si.cc | 27 +++++++++++++++++++++++++-- > osaf/services/saf/amf/amfd/svctype.cc | 20 ++++++++++++++++++++ > osaf/services/saf/amf/amfd/util.cc | 4 ++-- > 6 files changed, 69 insertions(+), 11 deletions(-) > > > be a typo of saAmfSGtValidSuTypes > * ensure saAmfCSIDependencies is deleted in csi.cc > * ensure saAmfSIActiveWeight, saAmfSIStandbyWeight, saAmfSvcDefActiveWeight > and > saAmfSvcDefStandbyWeight are deleted in si.cc > * fix a few typos where delete is called when delete [] is required > > diff --git a/osaf/services/saf/amf/amfd/csi.cc > b/osaf/services/saf/amf/amfd/csi.cc > --- a/osaf/services/saf/amf/amfd/csi.cc > +++ b/osaf/services/saf/amf/amfd/csi.cc > @@ -44,6 +44,19 @@ > > rc = ncs_patricia_tree_del(&csi_db, &csi->tree_node); > osafassert(rc == NCSCC_RC_SUCCESS); > + > + if (csi->saAmfCSIDependencies) { > + AVD_CSI_DEPS *csi_dep; > + AVD_CSI_DEPS *next_csi_dep; > + > + csi_dep = csi->saAmfCSIDependencies; > + while (csi_dep != NULL) { > + next_csi_dep = csi_dep->csi_dep_next; > + delete csi_dep; > + csi_dep = next_csi_dep; > + } > + } > + > delete csi; > TRACE_LEAVE2(); > } > @@ -295,21 +308,23 @@ > } else { > /* Dependency Configured. Decide rank when adding it in > si list.*/ > unsigned int i; > - bool found = false; > + bool found; > AVD_CSI_DEPS *new_csi_dep = NULL; > > for (i = 0; i < values_number; i++) { > - if (!found) > - new_csi_dep = new AVD_CSI_DEPS(); > + new_csi_dep = new AVD_CSI_DEPS(); > if > (immutil_getAttr(const_cast<SaImmAttrNameT>("saAmfCSIDependencies"), > attributes, i, > &new_csi_dep->csi_dep_name_value) != > SA_AIS_OK) { > LOG_ER("Get saAmfCSIDependencies FAILED > for '%s'", csi->name.value); > + // make sure we don't leak any memory if > + // saAmfCSIDependencies can't be read > + delete new_csi_dep; > goto done; > } > found = csi_add_csidep(csi,new_csi_dep); > + if (found == true) > + delete new_csi_dep; > } > - if (found == true) > - free (new_csi_dep); > } > } else { > csi->rank = 1; > diff --git a/osaf/services/saf/amf/amfd/include/sg.h > b/osaf/services/saf/amf/amfd/include/sg.h > --- a/osaf/services/saf/amf/amfd/include/sg.h > +++ b/osaf/services/saf/amf/amfd/include/sg.h > @@ -247,7 +247,6 @@ > /******************** B.04 model > *************************************************/ > SaNameT *saAmfSGtValidSuTypes; /* array of DNs, size in number_su_type > */ > SaAmfRedundancyModelT saAmfSgtRedundancyModel; > - SaNameT *saAmfStgValidSuTypes; > SaBoolT saAmfSgtDefAutoRepair; > SaBoolT saAmfSgtDefAutoAdjust; > SaTimeT saAmfSgtDefAutoAdjustProb; > diff --git a/osaf/services/saf/amf/amfd/sgtype.cc > b/osaf/services/saf/amf/amfd/sgtype.cc > --- a/osaf/services/saf/amf/amfd/sgtype.cc > +++ b/osaf/services/saf/amf/amfd/sgtype.cc > @@ -77,7 +77,7 @@ > static void sgtype_delete(AVD_AMF_SG_TYPE *sg_type) > { > (void)ncs_patricia_tree_del(&sgtype_db, &sg_type->tree_node); > - delete sg_type->saAmfStgValidSuTypes; > + delete [] sg_type->saAmfSGtValidSuTypes; > delete sg_type; > } > > @@ -257,6 +257,7 @@ > > done: > if (rc != 0) { > + delete [] sgt->saAmfSGtValidSuTypes; > delete sgt; > sgt = NULL; > } > diff --git a/osaf/services/saf/amf/amfd/si.cc > b/osaf/services/saf/amf/amfd/si.cc > --- a/osaf/services/saf/amf/amfd/si.cc > +++ b/osaf/services/saf/amf/amfd/si.cc > @@ -338,6 +338,8 @@ > si->alarm_sent = false; > si->num_dependents = 0; > si->tol_timer_count = 0; > + si->saAmfSIActiveWeight = NULL; > + si->saAmfSIStandbyWeight = NULL; > > return si; > } > @@ -377,6 +379,25 @@ > avd_sg_remove_si(si->sg_of_si, si); > rc = ncs_patricia_tree_del(&si_db, &si->tree_node); > osafassert(rc == NCSCC_RC_SUCCESS); > + > + if (si->saAmfSIActiveWeight) { > + unsigned int i = 0; > + while (si->saAmfSIActiveWeight[i] != NULL) { > + delete [] si->saAmfSIActiveWeight[i]; > + ++i; > + } > + delete [] si->saAmfSIActiveWeight; > + } > + > + if (si->saAmfSIStandbyWeight) { > + unsigned int i = 0; > + while (si->saAmfSIStandbyWeight[i] != NULL) { > + delete [] si->saAmfSIStandbyWeight[i]; > + ++i; > + } > + delete [] si->saAmfSIStandbyWeight; > + } > + > delete si; > } > /** > @@ -595,22 +616,24 @@ > > /* Optional, [0..*] */ > if > (immutil_getAttrValuesNumber(const_cast<SaImmAttrNameT>("saAmfSIActiveWeight"), > attributes, &attrValuesNumber) == SA_AIS_OK) { > - si->saAmfSIActiveWeight = new char*[attrValuesNumber]; > + si->saAmfSIActiveWeight = new char*[attrValuesNumber + 1]; > for (i = 0; i < attrValuesNumber; i++) { > si->saAmfSIActiveWeight[i] = > StrDup(immutil_getStringAttr(attributes, > "saAmfSIActiveWeight", i)); > } > + si->saAmfSIActiveWeight[i] = NULL; > } else { > /* TODO */ > } > > /* Optional, [0..*] */ > if > (immutil_getAttrValuesNumber(const_cast<SaImmAttrNameT>("saAmfSIStandbyWeight"), > attributes, &attrValuesNumber) == SA_AIS_OK) { > - si->saAmfSIStandbyWeight = new char*[attrValuesNumber]; > + si->saAmfSIStandbyWeight = new char*[attrValuesNumber + 1]; > for (i = 0; i < attrValuesNumber; i++) { > si->saAmfSIStandbyWeight[i] = > StrDup(immutil_getStringAttr(attributes, > "saAmfSIStandbyWeight", i)); > } > + si->saAmfSIStandbyWeight[i] = NULL; > } else { > /* TODO */ > } > diff --git a/osaf/services/saf/amf/amfd/svctype.cc > b/osaf/services/saf/amf/amfd/svctype.cc > --- a/osaf/services/saf/amf/amfd/svctype.cc > +++ b/osaf/services/saf/amf/amfd/svctype.cc > @@ -61,6 +61,24 @@ > { > unsigned int rc = ncs_patricia_tree_del(&svctype_db, > &svc_type->tree_node); > osafassert(rc == NCSCC_RC_SUCCESS); > + > + if (svc_type->saAmfSvcDefActiveWeight != NULL) { > + unsigned int i = 0; > + while (svc_type->saAmfSvcDefActiveWeight[i] != NULL) { > + delete [] svc_type->saAmfSvcDefActiveWeight[i]; > + ++i; > + } > + delete [] svc_type->saAmfSvcDefActiveWeight; > + } > + > + if (svc_type->saAmfSvcDefStandbyWeight != NULL) { > + unsigned int i = 0; > + while (svc_type->saAmfSvcDefStandbyWeight[i] != NULL) { > + delete [] svc_type->saAmfSvcDefStandbyWeight[i]; > + ++i; > + } > + delete [] svc_type->saAmfSvcDefStandbyWeight; > + } > delete svc_type; > } > > @@ -77,6 +95,8 @@ > memcpy(svct->name.value, dn->value, dn->length); > svct->name.length = dn->length; > svct->tree_node.key_info = (uint8_t *)&svct->name; > + svct->saAmfSvcDefActiveWeight = NULL; > + svct->saAmfSvcDefStandbyWeight = NULL; > > /* Optional, [0..*] */ > if > (immutil_getAttrValuesNumber(const_cast<SaImmAttrNameT>("saAmfSvcDefActiveWeight"), > attributes, &attrValuesNumber) == SA_AIS_OK) { > diff --git a/osaf/services/saf/amf/amfd/util.cc > b/osaf/services/saf/amf/amfd/util.cc > --- a/osaf/services/saf/amf/amfd/util.cc > +++ b/osaf/services/saf/amf/amfd/util.cc > @@ -1655,7 +1655,7 @@ > compcsi_info = susi_msg->msg_info.d2n_su_si_assign.list; > susi_msg->msg_info.d2n_su_si_assign.list = compcsi_info->next; > if (compcsi_info->attrs.list != NULL) { > - delete(compcsi_info->attrs.list); > + delete [] (compcsi_info->attrs.list); > compcsi_info->attrs.list = NULL; > } > delete compcsi_info; > @@ -1681,7 +1681,7 @@ > AVSV_D2N_PG_TRACK_ACT_RSP_MSG_INFO *info = > &pg_msg->msg_info.d2n_pg_track_act_rsp; > > if (info->mem_list.numberOfItems) > - delete info->mem_list.notification; > + delete [] info->mem_list.notification; > > info->mem_list.notification = 0; > info->mem_list.numberOfItems = 0; ------------------------------------------------------------------------------ CenturyLink Cloud: The Leader in Enterprise Cloud Services. Learn Why More Businesses Are Choosing CenturyLink Cloud For Critical Workloads, Development Environments & Everything In Between. Get a Quote or Start a Free Trial Today. http://pubads.g.doubleclick.net/gampad/clk?id=119420431&iu=/4140/ostg.clktrk _______________________________________________ Opensaf-devel mailing list Opensaf-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensaf-devel