From 7547be91e5d7545dae1db0ee78e4f20661e4bddb Mon Sep 17 00:00:00 2001 From: James Laird Date: Tue, 20 Jul 2004 11:28:56 -0500 Subject: [svn-r8900] Purpose: Bug Fix Description: H5Sset_extent_simple causes errors if used to reduce a space's maxdims to zero. Solution: H5Sset_extent_simple now cleans up the pointer. Added a regression test. Platforms tested: sleipnir (very minor change) --- src/H5S.c | 3 +++ test/th5s.c | 12 ++++++++++++ 2 files changed, 15 insertions(+) diff --git a/src/H5S.c b/src/H5S.c index 64d508d..4c5227c 100644 --- a/src/H5S.c +++ b/src/H5S.c @@ -1351,6 +1351,9 @@ H5S_set_extent_simple (H5S_t *space, unsigned rank, const hsize_t *dims, space->extent.max = H5FL_ARR_MALLOC(hsize_t,rank); HDmemcpy(space->extent.max, max, sizeof(hsize_t) * rank); } /* end if */ + else { + space->extent.max = NULL; + } } /* Selection related cleanup */ diff --git a/test/th5s.c b/test/th5s.c index a6b6fb4..f283b81 100644 --- a/test/th5s.c +++ b/test/th5s.c @@ -139,6 +139,18 @@ test_h5s_basic(void) VERIFY(HDmemcmp(tmax, max2, SPACE2_RANK * sizeof(hsize_t)), 0, "H5Sget_simple_extent_dims"); + /* Change max dims from zero to non-zero and back again */ + ret = H5Sset_extent_simple(sid1, SPACE1_RANK, dims1, max2); + CHECK(ret, FAIL, "H5Sset_extent_simple"); + ret = H5Sset_extent_simple(sid1, SPACE1_RANK, dims1, NULL); + CHECK(ret, FAIL, "H5Sset_extent_simple"); + rank = H5Sget_simple_extent_dims(sid1, tdims, tmax); + CHECK(rank, FAIL, "H5Sget_simple_extent_dims"); + VERIFY(HDmemcmp(tdims, dims1, SPACE1_RANK * sizeof(hsize_t)), 0, + "H5Sget_simple_extent_dims"); + VERIFY(HDmemcmp(tmax, dims1, SPACE1_RANK * sizeof(hsize_t)), 0, + "H5Sget_simple_extent_dims"); + ret = H5Sclose(sid1); CHECK(ret, FAIL, "H5Sclose"); -- cgit v0.12