1
1

Since we changed storage to pointers in pmix_value_t, we need to allocate space for those values when unpacking

Этот коммит содержится в:
Ralph Castain 2016-08-29 20:22:24 -07:00
родитель 99b26644c1
Коммит cfa784c9a6
2 изменённых файлов: 22 добавлений и 2 удалений

Просмотреть файл

@ -631,6 +631,11 @@ pmix_status_t pmix_bfrop_unpack_status(pmix_buffer_t *buffer, void *dest,
}
break;
case PMIX_PROC:
/* this field is now a pointer, so we must allocate storage for it */
PMIX_PROC_CREATE(val->data.proc, 1);
if (NULL == val->data.proc) {
return PMIX_ERR_NOMEM;
}
if (PMIX_SUCCESS != (ret = pmix_bfrop_unpack_buffer(buffer, val->data.proc, &m, PMIX_PROC))) {
return ret;
}
@ -666,11 +671,21 @@ pmix_status_t pmix_bfrop_unpack_status(pmix_buffer_t *buffer, void *dest,
}
break;
case PMIX_PROC_INFO:
/* this is now a pointer, so allocate storage for it */
PMIX_PROC_INFO_CREATE(val->data.pinfo, 1);
if (NULL == val->data.pinfo) {
return PMIX_ERR_NOMEM;
}
if (PMIX_SUCCESS != (ret = pmix_bfrop_unpack_buffer(buffer, val->data.pinfo, &m, PMIX_PROC_INFO))) {
return ret;
}
break;
case PMIX_DATA_ARRAY:
/* this is now a pointer, so allocate storage for it */
val->data.darray = (pmix_data_array_t*)malloc(sizeof(val->data.darray));
if (NULL == val->data.darray) {
return PMIX_ERR_NOMEM;
}
if (PMIX_SUCCESS != (ret = pmix_bfrop_unpack_buffer(buffer, val->data.darray, &m, PMIX_DATA_ARRAY))) {
return ret;
}
@ -682,6 +697,11 @@ pmix_status_t pmix_bfrop_unpack_status(pmix_buffer_t *buffer, void *dest,
break;
/**** DEPRECATED ****/
case PMIX_INFO_ARRAY:
/* this field is now a pointer, so we must allocate storage for it */
val->data.array = (pmix_info_array_t*)malloc(sizeof(val->data.array));
if (NULL == val->data.array) {
return PMIX_ERR_NOMEM;
}
if (PMIX_SUCCESS != (ret = pmix_bfrop_unpack_buffer(buffer, val->data.array, &m, PMIX_INFO_ARRAY))) {
return ret;
}

Просмотреть файл

@ -27,9 +27,9 @@ static void notification_fn(int status,
{
int peer_rank;
fprintf(stderr, "orte_notify: Name %s Host: %s Pid %ld source %s\n",
fprintf(stderr, "orte_notify: Name %s Host: %s Pid %ld status %d source %s\n",
ORTE_NAME_PRINT(ORTE_PROC_MY_NAME),
hostname, (long)pid, ORTE_NAME_PRINT(source));
hostname, (long)pid, status, ORTE_NAME_PRINT(source));
/** let the notifier know we are done */
if (cbfunc) {