* Remove an extraneous OBJ_CONSTRUCT
* Ensure we don't try to do opal_list_get_next() on an item we just deleted * set myaddrs = NULL when we're done with it, just for good measure Once this is ported to OMPI v1.3 branch, it fixes https://bugs.openfabrics.org/show_bug.cgi?id=1579. This commit was SVN r20896.
Этот коммит содержится в:
родитель
cba3708893
Коммит
b95a3d0eb9
@ -303,8 +303,6 @@ int mca_btl_openib_build_rdma_addr_list(void)
|
|||||||
return OMPI_ERROR;
|
return OMPI_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
OBJ_CONSTRUCT(myaddrs, opal_list_t);
|
|
||||||
|
|
||||||
for (i = opal_ifbegin(); i >= 0; i = opal_ifnext(i)) {
|
for (i = opal_ifbegin(); i >= 0; i = opal_ifnext(i)) {
|
||||||
struct sockaddr ipaddr;
|
struct sockaddr ipaddr;
|
||||||
uint32_t netmask;
|
uint32_t netmask;
|
||||||
@ -324,17 +322,19 @@ int mca_btl_openib_build_rdma_addr_list(void)
|
|||||||
|
|
||||||
void mca_btl_openib_free_rdma_addr_list(void)
|
void mca_btl_openib_free_rdma_addr_list(void)
|
||||||
{
|
{
|
||||||
opal_list_item_t *item;
|
opal_list_item_t *item, *next;
|
||||||
|
|
||||||
if (NULL != myaddrs && 0 != opal_list_get_size(myaddrs)) {
|
if (NULL != myaddrs && 0 != opal_list_get_size(myaddrs)) {
|
||||||
for (item = opal_list_get_first(myaddrs);
|
for (item = opal_list_get_first(myaddrs);
|
||||||
item != opal_list_get_end(myaddrs);
|
item != opal_list_get_end(myaddrs);
|
||||||
item = opal_list_get_next(item)) {
|
item = next) {
|
||||||
struct rdma_addr_list *addr = (struct rdma_addr_list *)item;
|
struct rdma_addr_list *addr = (struct rdma_addr_list *)item;
|
||||||
|
next = opal_list_get_next(item);
|
||||||
opal_list_remove_item(myaddrs, item);
|
opal_list_remove_item(myaddrs, item);
|
||||||
OBJ_RELEASE(addr);
|
OBJ_RELEASE(addr);
|
||||||
}
|
}
|
||||||
OBJ_RELEASE(myaddrs);
|
OBJ_RELEASE(myaddrs);
|
||||||
|
myaddrs = NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user