1
1

* 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.
Этот коммит содержится в:
Jeff Squyres 2009-03-30 20:24:31 +00:00
родитель 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;
} }
} }