1
1

Merge pull request #2029 from rhc54/topic/notify

Since we changed storage to pointers in pmix_value_t, we need to allocate space for those values when unpacking
Этот коммит содержится в:
rhc54 2016-08-29 23:11:23 -05:00 коммит произвёл GitHub
родитель 99b26644c1 cfa784c9a6
Коммит bfe0327f7b
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) {