|
8 | 8 | * Copyright (c) 2016 Cisco Systems, Inc. All rights reserved.
|
9 | 9 | * Copyright (c) 2017 Los Alamos National Security, LLC. All rights
|
10 | 10 | * reserved.
|
| 11 | + * Copyright (c) 2021 Nanook Consulting. All rights reserved. |
11 | 12 | * $COPYRIGHT$
|
12 | 13 | *
|
13 | 14 | * Additional copyrights may follow
|
@@ -966,6 +967,7 @@ int pmix3x_value_unload(opal_value_t *kv,
|
966 | 967 | opal_list_t *lt;
|
967 | 968 | opal_value_t *ival;
|
968 | 969 | size_t n;
|
| 970 | + pmix_info_t *iptr; |
969 | 971 |
|
970 | 972 | switch(v->type) {
|
971 | 973 | case PMIX_UNDEF:
|
@@ -1178,27 +1180,30 @@ int pmix3x_value_unload(opal_value_t *kv,
|
1178 | 1180 | kv->data.pinfo.state = pmix3x_convert_state(v->data.pinfo->state);
|
1179 | 1181 | break;
|
1180 | 1182 | case PMIX_DATA_ARRAY:
|
1181 |
| - if (NULL == v->data.darray || NULL == v->data.darray->array) { |
| 1183 | + if (NULL == v->data.darray || NULL == v->data.darray->array || |
| 1184 | + PMIX_INFO != v->data.darray->type) { |
1182 | 1185 | kv->data.ptr = NULL;
|
1183 | 1186 | break;
|
1184 | 1187 | }
|
1185 | 1188 | lt = OBJ_NEW(opal_list_t);
|
1186 | 1189 | kv->type = OPAL_PTR;
|
1187 | 1190 | kv->data.ptr = (void*)lt;
|
| 1191 | + iptr = (pmix_info_t*)v->data.darray->array; |
1188 | 1192 | for (n=0; n < v->data.darray->size; n++) {
|
| 1193 | + if (0 == strcmp("pmix.topo2", iptr[n].key)) { |
| 1194 | + /* we do not know (yet) how to convert the pmix.topo2 key from PMIx 4.0.0 |
| 1195 | + * but since we are not going to use it, simply ignore it and move on */ |
| 1196 | + continue; |
| 1197 | + } |
1189 | 1198 | ival = OBJ_NEW(opal_value_t);
|
1190 | 1199 | opal_list_append(lt, &ival->super);
|
1191 |
| - /* handle the various types */ |
1192 |
| - if (PMIX_INFO == v->data.darray->type) { |
1193 |
| - pmix_info_t *iptr = (pmix_info_t*)v->data.darray->array; |
1194 |
| - ival->key = strdup(iptr[n].key); |
1195 |
| - rc = pmix3x_value_unload(ival, &iptr[n].value); |
1196 |
| - if (OPAL_SUCCESS != rc) { |
1197 |
| - OPAL_LIST_RELEASE(lt); |
1198 |
| - kv->type = OPAL_UNDEF; |
1199 |
| - kv->data.ptr = NULL; |
1200 |
| - break; |
1201 |
| - } |
| 1200 | + ival->key = strdup(iptr[n].key); |
| 1201 | + rc = pmix3x_value_unload(ival, &iptr[n].value); |
| 1202 | + if (OPAL_SUCCESS != rc) { |
| 1203 | + OPAL_LIST_RELEASE(lt); |
| 1204 | + kv->type = OPAL_UNDEF; |
| 1205 | + kv->data.ptr = NULL; |
| 1206 | + break; |
1202 | 1207 | }
|
1203 | 1208 | }
|
1204 | 1209 | break;
|
|
0 commit comments