* fix dumb error causing segfault in mpirun
This commit was SVN r3813.
Этот коммит содержится в:
родитель
19dbfd376b
Коммит
dd7c53dfa3
@ -226,24 +226,26 @@ mca_pcm_base_data_store_get_job_pids(mca_pcm_base_data_store_t *me,
|
|||||||
bool remove)
|
bool remove)
|
||||||
{
|
{
|
||||||
ompi_pointer_array_t *array;
|
ompi_pointer_array_t *array;
|
||||||
int i;
|
size_t array_len, i;
|
||||||
|
|
||||||
array = mca_pcm_base_data_store_get_job_data(me, jobid, remove);
|
array = mca_pcm_base_data_store_get_job_data(me, jobid, remove);
|
||||||
if (NULL == array) return errno;
|
if (NULL == array) return errno;
|
||||||
|
|
||||||
*len = ompi_pointer_array_get_size(array);
|
array_len = ompi_pointer_array_get_size(array);
|
||||||
if (0 == *len) {
|
if (0 == array_len) {
|
||||||
*pids = NULL;
|
*pids = NULL;
|
||||||
} else {
|
} else {
|
||||||
*pids = malloc(sizeof(pid_t) * *len);
|
*pids = malloc(sizeof(pid_t) * array_len);
|
||||||
if (NULL == *pids) return OMPI_ERR_OUT_OF_RESOURCE;
|
if (NULL == *pids) return OMPI_ERR_OUT_OF_RESOURCE;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0 ; i < (int) *len ; ++i) {
|
for (i = 0, *len = 0 ; i < array_len ; ++i) {
|
||||||
mca_pcm_base_data_store_pid_t *data =
|
mca_pcm_base_data_store_pid_t *data =
|
||||||
(mca_pcm_base_data_store_pid_t*) ompi_pointer_array_get_item(array, i);
|
(mca_pcm_base_data_store_pid_t*) ompi_pointer_array_get_item(array, i);
|
||||||
|
|
||||||
(*pids)[i] = data->pid;
|
if (NULL == data) continue;
|
||||||
|
|
||||||
|
(*pids)[(*len)++] = data->pid;
|
||||||
OBJ_RELEASE(data);
|
OBJ_RELEASE(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -262,24 +264,26 @@ mca_pcm_base_data_store_get_all_pids(mca_pcm_base_data_store_t *me,
|
|||||||
bool remove)
|
bool remove)
|
||||||
{
|
{
|
||||||
ompi_pointer_array_t *array;
|
ompi_pointer_array_t *array;
|
||||||
int i = 0;
|
size_t array_len, i;
|
||||||
|
|
||||||
array = mca_pcm_base_data_store_get_all_data(me, remove);
|
array = mca_pcm_base_data_store_get_all_data(me, remove);
|
||||||
if (NULL == array) return errno;
|
if (NULL == array) return errno;
|
||||||
|
|
||||||
*len = ompi_pointer_array_get_size(array);
|
array_len = ompi_pointer_array_get_size(array);
|
||||||
if (0 == *len) {
|
if (0 == array_len) {
|
||||||
*pids = NULL;
|
*pids = NULL;
|
||||||
} else {
|
} else {
|
||||||
*pids = malloc(sizeof(pid_t) * *len);
|
*pids = malloc(sizeof(pid_t) * array_len);
|
||||||
if (NULL == *pids) return OMPI_ERR_OUT_OF_RESOURCE;
|
if (NULL == *pids) return OMPI_ERR_OUT_OF_RESOURCE;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0 ; i < (int) *len ; ++i) {
|
for (i = 0, *len = 0 ; i < array_len ; ++i) {
|
||||||
mca_pcm_base_data_store_pid_t *data =
|
mca_pcm_base_data_store_pid_t *data =
|
||||||
(mca_pcm_base_data_store_pid_t*) ompi_pointer_array_get_item(array, i);
|
(mca_pcm_base_data_store_pid_t*) ompi_pointer_array_get_item(array, i);
|
||||||
|
|
||||||
(*pids)[i] = data->pid;
|
if (NULL == data) continue;
|
||||||
|
|
||||||
|
(*pids)[(*len)++] = data->pid;
|
||||||
OBJ_RELEASE(data);
|
OBJ_RELEASE(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -301,21 +305,22 @@ mca_pcm_base_data_store_get_procs(mca_pcm_base_data_store_t *me,
|
|||||||
bool remove)
|
bool remove)
|
||||||
{
|
{
|
||||||
ompi_pointer_array_t *array;
|
ompi_pointer_array_t *array;
|
||||||
|
size_t array_len, i;
|
||||||
ompi_process_name_t *name;
|
ompi_process_name_t *name;
|
||||||
int i = 0;
|
|
||||||
|
|
||||||
array = mca_pcm_base_data_store_search(me, mca_pcm_base_data_store_procs_search,
|
array = mca_pcm_base_data_store_search(me, mca_pcm_base_data_store_procs_search,
|
||||||
&pid, remove);
|
&pid, remove);
|
||||||
if (NULL == array) return errno;
|
if (NULL == array) return errno;
|
||||||
|
|
||||||
*procs_len = ompi_pointer_array_get_size(array);
|
array_len = ompi_pointer_array_get_size(array);
|
||||||
if (0 != *procs_len) {
|
if (0 != array_len) {
|
||||||
*procs = malloc(sizeof(ompi_process_name_t*) * *procs_len);
|
*procs = malloc(sizeof(ompi_process_name_t*) * array_len);
|
||||||
if (NULL == *procs) return OMPI_ERR_OUT_OF_RESOURCE;
|
if (NULL == *procs) return OMPI_ERR_OUT_OF_RESOURCE;
|
||||||
|
|
||||||
for (i = 0 ; i < (int) *procs_len ; ++i) {
|
for (i = 0, *procs_len = 0 ; i < array_len ; ++i) {
|
||||||
name = (ompi_process_name_t*) ompi_pointer_array_get_item(array, i);
|
name = (ompi_process_name_t*) ompi_pointer_array_get_item(array, i);
|
||||||
(*procs)[i] = name;
|
if (NULL == name) continue;
|
||||||
|
(*procs)[(*procs_len)++] = name;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
*procs = NULL;
|
*procs = NULL;
|
||||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user