Detect when there's the same-shaped selection of a single block of elements on

both selections, but with different selection types (i.e. one selection defined
as an 'all' type and the other as a hyperslab or point type), without falling
into the generic selection iteration case.
This commit is contained in:
Quincey Koziol 2020-06-05 12:36:20 -05:00
parent 8a2c6d868b
commit de54cff50c
2 changed files with 16 additions and 7 deletions

View File

@ -1885,6 +1885,15 @@ H5S_select_shape_same(const H5S_t *space1, const H5S_t *space2)
space_a_dim--;
} /* end while */
/* Check for a single block in each selection */
if(H5S_SELECT_IS_SINGLE(space_a) && H5S_SELECT_IS_SINGLE(space_b)) {
/* If both selections are a single block and their bounds are
* the same, then the selections are the same, even if the
* selection types are different.
*/
HGOTO_DONE(TRUE)
} /* end if */
} /* end if */
/* If the dataspaces have the same selection type, use the selection's

View File

@ -9388,15 +9388,15 @@ test_shape_same_dr__smoke_check_1(void)
** a "checker board" hyperslab as follows:
**
** * * - - * * - - * *
** * * - - * * - - * *
** - - * * - - * * - -
** - - * * - - * * - -
** * * - - * * - - * *
** * * - - * * - - * *
** - - * * - - * * - -
** - - * * - - * * - -
** - - * * - - * * - -
** - - * * - - * * - -
** * * - - * * - - * *
** * * - - * * - - * *
** - - * * - - * * - -
** - - * * - - * * - -
** * * - - * * - - * *
** * * - - * * - - * *
** * * - - * * - - * *
**
** where asterisks indicate selected elements, and dashes
** indicate unselected elements.