Ack Thanks, HansF On 10 January 2014 16:49, Hans Nordeback <[email protected]> wrote: > osaf/services/saf/amf/amfnd/clc.cc | 19 ++++++++----------- > 1 files changed, 8 insertions(+), 11 deletions(-) > > > diff --git a/osaf/services/saf/amf/amfnd/clc.cc > b/osaf/services/saf/amf/amfnd/clc.cc > --- a/osaf/services/saf/amf/amfnd/clc.cc > +++ b/osaf/services/saf/amf/amfnd/clc.cc > @@ -33,6 +33,7 @@ > > ****************************************************************************** > */ > > +#include <vector> > #include <string.h> > > #include <logtrace.h> > @@ -2458,7 +2459,7 @@ uint32_t avnd_comp_clc_orph_restart_hdle > * > * @return bool > */ > -static bool var_in_envset(const char *name, const NCS_OS_ENVIRON_SET_NODE > *env_set, unsigned int env_counter) > +static bool var_in_envset(const char *name, const > std::vector<NCS_OS_ENVIRON_SET_NODE>& env_set, unsigned int env_counter) > { > unsigned int i; > const char *var; > @@ -2490,7 +2491,7 @@ uint32_t avnd_comp_clc_cmd_execute(AVND_ > { > NCS_OS_PROC_EXECUTE_TIMED_INFO cmd_info; > NCS_OS_ENVIRON_ARGS arg; > - NCS_OS_ENVIRON_SET_NODE *env_set; > + std::vector<NCS_OS_ENVIRON_SET_NODE> env_set; > char env_val_nodeid[11]; > char env_val_comp_err[11]; /*we req only 10 */ > char env_var_name[] = "SA_AMF_COMPONENT_NAME"; > @@ -2548,7 +2549,7 @@ uint32_t avnd_comp_clc_cmd_execute(AVND_ > > /* Allocate environment variable set */ > env_set_nmemb = comp->numOfCompCmdEnv + 3; > - env_set = static_cast<NCS_OS_ENVIRON_SET_NODE*>(calloc(env_set_nmemb, > sizeof(NCS_OS_ENVIRON_SET_NODE))); > + env_set.resize(env_set_nmemb); > memset(&cmd_info, 0, sizeof(NCS_OS_PROC_EXECUTE_TIMED_INFO)); > memset(&arg, 0, sizeof(NCS_OS_ENVIRON_ARGS)); > > @@ -2621,12 +2622,8 @@ uint32_t avnd_comp_clc_cmd_execute(AVND_ > osafassert(csi); > > /* allocate additional env_set memory for the CSI > attributes */ > - env_set = > static_cast<NCS_OS_ENVIRON_SET_NODE*>(realloc(env_set, > sizeof(NCS_OS_ENVIRON_SET_NODE) * (env_set_nmemb + > - csi->attrs.number))); > - osafassert(env_set); > - > - /* initialize newly allocated memory */ > - memset(&env_set[env_set_nmemb], 0, > sizeof(NCS_OS_ENVIRON_SET_NODE) * csi->attrs.number); > + NCS_OS_ENVIRON_SET_NODE empty_env_set = {0}; > + env_set.resize(env_set_nmemb + csi->attrs.number, > empty_env_set); > > for (i = 0, csiattr = csi->attrs.list; i < > csi->attrs.number; i++, csiattr++) { > if (var_in_envset((char*)csiattr->name.value, > env_set, env_counter)) { > @@ -2652,7 +2649,8 @@ uint32_t avnd_comp_clc_cmd_execute(AVND_ > } /* if (comp->csi_list.n_nodes == 1) */ > } > > - arg.env_arg = env_set; > + // this construct should be safe C++ according to std (contiguos > memory) > + arg.env_arg = &env_set[0]; > > /* tokenize the cmd */ > m_AVND_COMP_CLC_STR_PARSE(clc_info->cmds[cmd_type - 1].cmd, scr, > argc, argv, tmp_argv); > @@ -2684,7 +2682,6 @@ uint32_t avnd_comp_clc_cmd_execute(AVND_ > free(env_set[i].name); > free(env_set[i].value); > } > - free(env_set); > > if (NCSCC_RC_SUCCESS != rc) { > TRACE_2("The CLC CLI command execution failed"); > > ------------------------------------------------------------------------------ > 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 > [email protected] > https://lists.sourceforge.net/lists/listinfo/opensaf-devel
------------------------------------------------------------------------------ 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 [email protected] https://lists.sourceforge.net/lists/listinfo/opensaf-devel
