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

Reply via email to