11/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil -*- */
22/*
3- * Copyright (c) 2014-2017 Intel, Inc. All rights reserved.
3+ * Copyright (c) 2014-2018 Intel, Inc. All rights reserved.
44 * Copyright (c) 2014-2017 Research Organization for Information Science
55 * and Technology (RIST). All rights reserved.
66 * Copyright (c) 2014-2017 Mellanox Technologies, Inc.
@@ -400,7 +400,6 @@ int pmix2x_store_local(const opal_process_name_t *proc, opal_value_t *val)
400400
401401 PMIX_VALUE_CONSTRUCT (& kv );
402402 pmix2x_value_load (& kv , val );
403-
404403 /* call the library - this is a blocking call */
405404 rc = PMIx_Store_internal (& p , val -> key , & kv );
406405 PMIX_VALUE_DESTRUCT (& kv );
@@ -596,10 +595,11 @@ int pmix2x_get(const opal_process_name_t *proc, const char *key,
596595 return OPAL_ERR_NOT_INITIALIZED ;
597596 }
598597
599- if (NULL == proc ) {
598+ if (NULL == proc && NULL != key ) {
600599 /* if they are asking for our jobid, then return it */
601600 if (0 == strcmp (key , OPAL_PMIX_JOBID )) {
602601 (* val ) = OBJ_NEW (opal_value_t );
602+ (* val )-> key = strdup (key );
603603 (* val )-> type = OPAL_UINT32 ;
604604 (* val )-> data .uint32 = OPAL_PROC_MY_NAME .jobid ;
605605 OPAL_PMIX_RELEASE_THREAD (& opal_pmix_base .lock );
@@ -608,6 +608,7 @@ int pmix2x_get(const opal_process_name_t *proc, const char *key,
608608 /* if they are asking for our rank, return it */
609609 if (0 == strcmp (key , OPAL_PMIX_RANK )) {
610610 (* val ) = OBJ_NEW (opal_value_t );
611+ (* val )-> key = strdup (key );
611612 (* val )-> type = OPAL_INT ;
612613 (* val )-> data .integer = pmix2x_convert_rank (my_proc .rank );
613614 OPAL_PMIX_RELEASE_THREAD (& opal_pmix_base .lock );
@@ -642,6 +643,9 @@ int pmix2x_get(const opal_process_name_t *proc, const char *key,
642643 rc = PMIx_Get (& p , key , pinfo , sz , & pval );
643644 if (PMIX_SUCCESS == rc ) {
644645 ival = OBJ_NEW (opal_value_t );
646+ if (NULL != key ) {
647+ ival -> key = strdup (key );
648+ }
645649 if (OPAL_SUCCESS != (ret = pmix2x_value_unload (ival , pval ))) {
646650 rc = pmix2x_convert_opalrc (ret );
647651 } else {
@@ -663,6 +667,9 @@ static void val_cbfunc(pmix_status_t status,
663667
664668 OPAL_ACQUIRE_OBJECT (op );
665669 OBJ_CONSTRUCT (& val , opal_value_t );
670+ if (NULL != op -> nspace ) {
671+ val .key = strdup (op -> nspace );
672+ }
666673 rc = pmix2x_convert_opalrc (status );
667674 if (PMIX_SUCCESS == status && NULL != kv ) {
668675 rc = pmix2x_value_unload (& val , kv );
@@ -702,6 +709,7 @@ int pmix2x_getnb(const opal_process_name_t *proc, const char *key,
702709 if (0 == strcmp (key , OPAL_PMIX_JOBID )) {
703710 if (NULL != cbfunc ) {
704711 val = OBJ_NEW (opal_value_t );
712+ val -> key = strdup (key );
705713 val -> type = OPAL_UINT32 ;
706714 val -> data .uint32 = OPAL_PROC_MY_NAME .jobid ;
707715 cbfunc (OPAL_SUCCESS , val , cbdata );
@@ -713,6 +721,7 @@ int pmix2x_getnb(const opal_process_name_t *proc, const char *key,
713721 if (0 == strcmp (key , OPAL_PMIX_RANK )) {
714722 if (NULL != cbfunc ) {
715723 val = OBJ_NEW (opal_value_t );
724+ val -> key = strdup (key );
716725 val -> type = OPAL_INT ;
717726 val -> data .integer = pmix2x_convert_rank (my_proc .rank );
718727 cbfunc (OPAL_SUCCESS , val , cbdata );
@@ -726,7 +735,9 @@ int pmix2x_getnb(const opal_process_name_t *proc, const char *key,
726735 op = OBJ_NEW (pmix2x_opcaddy_t );
727736 op -> valcbfunc = cbfunc ;
728737 op -> cbdata = cbdata ;
729-
738+ if (NULL != key ) {
739+ op -> nspace = strdup (key );
740+ }
730741 if (NULL == proc ) {
731742 (void )strncpy (op -> p .nspace , my_proc .nspace , PMIX_MAX_NSLEN );
732743 op -> p .rank = pmix2x_convert_rank (PMIX_RANK_WILDCARD );
0 commit comments