hwloc: bitmap: fix a corner case in hwloc_bitmap_isincluded() with infinite sets
If super_set contains more allocated ulongs than sub_set, we did not check the last ulongs. We would return true instead of false when sub_set is infinite while the last ulongs in super_set are not full. This fixes tests/hwloc_bitmap_compare_inclusion on some platforms. (cherry picked from commit open-mpi/hwloc@299e6e846f) Signed-off-by: Jeff Squyres <jsquyres@cisco.com>
Этот коммит содержится в:
родитель
5c9157c547
Коммит
1905f35a1e
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright © 2009 CNRS
|
* Copyright © 2009 CNRS
|
||||||
* Copyright © 2009-2011 inria. All rights reserved.
|
* Copyright © 2009-2015 Inria. All rights reserved.
|
||||||
* Copyright © 2009-2011 Université Bordeaux 1
|
* Copyright © 2009-2011 Université Bordeaux 1
|
||||||
* Copyright © 2009-2011 Cisco Systems, Inc. All rights reserved.
|
* Copyright © 2009-2011 Cisco Systems, Inc. All rights reserved.
|
||||||
* See COPYING in top-level directory.
|
* See COPYING in top-level directory.
|
||||||
@ -903,7 +903,7 @@ int hwloc_bitmap_isincluded (const struct hwloc_bitmap_s *sub_set, const struct
|
|||||||
HWLOC__BITMAP_CHECK(sub_set);
|
HWLOC__BITMAP_CHECK(sub_set);
|
||||||
HWLOC__BITMAP_CHECK(super_set);
|
HWLOC__BITMAP_CHECK(super_set);
|
||||||
|
|
||||||
for(i=0; i<sub_set->ulongs_count; i++)
|
for(i=0; i<sub_set->ulongs_count || i<super_set->ulongs_count; i++)
|
||||||
if (HWLOC_SUBBITMAP_READULONG(super_set, i) != (HWLOC_SUBBITMAP_READULONG(super_set, i) | HWLOC_SUBBITMAP_READULONG(sub_set, i)))
|
if (HWLOC_SUBBITMAP_READULONG(super_set, i) != (HWLOC_SUBBITMAP_READULONG(super_set, i) | HWLOC_SUBBITMAP_READULONG(sub_set, i)))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
Загрузка…
Ссылка в новой задаче
Block a user