@@ -76,7 +76,6 @@ static bool added_transport_keys=false;
76
76
static bool added_num_procs = false;
77
77
static bool added_app_ctx = false;
78
78
static bool added_pmix_envs = false;
79
- static char * pmixenvars [4 ];
80
79
static bool progress_thread_running = false;
81
80
82
81
static int fork_hnp (void );
@@ -85,7 +84,6 @@ static int rte_init(void)
85
84
{
86
85
int rc , ret ;
87
86
char * error = NULL ;
88
- char * ev1 , * ev2 ;
89
87
opal_value_t * kv ;
90
88
char * val = NULL ;
91
89
int u32 , * u32ptr ;
@@ -237,13 +235,17 @@ static int rte_init(void)
237
235
* MPI-3 required info key
238
236
*/
239
237
if (NULL == getenv (OPAL_MCA_PREFIX "orte_ess_num_procs" )) {
240
- asprintf (& ev1 , OPAL_MCA_PREFIX "orte_ess_num_procs=%d" , orte_process_info .num_procs );
241
- putenv (ev1 );
238
+ char * num_procs ;
239
+ asprintf (& num_procs , "%d" , orte_process_info .num_procs );
240
+ opal_setenv (OPAL_MCA_PREFIX "orte_ess_num_procs" , num_procs , true, & environ );
241
+ free (num_procs );
242
242
added_num_procs = true;
243
243
}
244
244
if (NULL == getenv ("OMPI_APP_CTX_NUM_PROCS" )) {
245
- asprintf (& ev2 , "OMPI_APP_CTX_NUM_PROCS=%d" , orte_process_info .num_procs );
246
- putenv (ev2 );
245
+ char * num_procs ;
246
+ asprintf (& num_procs , "%d" , orte_process_info .num_procs );
247
+ opal_setenv ("OMPI_APP_CTX_NUM_PROCS" , num_procs , true, & environ );
248
+ free (num_procs );
247
249
added_app_ctx = true;
248
250
}
249
251
@@ -635,8 +637,10 @@ static int fork_hnp(void)
635
637
count = opal_argv_count (argv );
636
638
/* push each piece into the environment */
637
639
for (i = 0 ; i < count ; i ++ ) {
638
- pmixenvars [i ] = strdup (argv [i ]);
639
- putenv (pmixenvars [i ]);
640
+ char * c = strchr (argv [i ], '=' );
641
+ assert (NULL != c );
642
+ * c ++ = '\0' ;
643
+ opal_setenv (argv [i ], c , true, & environ );
640
644
}
641
645
opal_argv_free (argv );
642
646
added_pmix_envs = true;
0 commit comments