summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorQuincey Koziol <koziol@hdfgroup.org>2000-04-12 22:07:58 (GMT)
committerQuincey Koziol <koziol@hdfgroup.org>2000-04-12 22:07:58 (GMT)
commit6039064e30fb6a7b96eafcb063505a42097cf333 (patch)
tree41c4b1d5532dbfe4ea962fad00de3fe4b343d13b /src
parente713b35a053a4f946c8f529e82765d2d159a1753 (diff)
downloadhdf5-6039064e30fb6a7b96eafcb063505a42097cf333.zip
hdf5-6039064e30fb6a7b96eafcb063505a42097cf333.tar.gz
hdf5-6039064e30fb6a7b96eafcb063505a42097cf333.tar.bz2
[svn-r2134] Changed H5Screate_simple & H5Sset_extent_simple to disallow
size 0 dimensions without corresponding unlimited dimension.
Diffstat (limited to 'src')
-rw-r--r--src/H5S.c21
1 files changed, 15 insertions, 6 deletions
diff --git a/src/H5S.c b/src/H5S.c
index 0c30c5b..ff8b345 100644
--- a/src/H5S.c
+++ b/src/H5S.c
@@ -1351,17 +1351,15 @@ H5Sset_extent_simple(hid_t space_id, int rank, const hsize_t dims[/*rank*/],
if (rank<0 || rank>H5S_MAX_RANK) {
HRETURN_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "invalid rank");
}
-#ifdef OLD_WAY
if (dims) {
for (u=0; u<rank; u++) {
- if (((max!=NULL && max[u]!=H5S_UNLIMITED) || max==NULL) &&
- dims[u]==0) {
+ if (((max!=NULL && max[u]!=H5S_UNLIMITED) || max==NULL)
+ && dims[u]==0) {
HRETURN_ERROR (H5E_ARGS, H5E_BADVALUE, FAIL,
"invalid dimension size");
}
}
}
-#endif /* OLD_WAY */
if (max!=NULL) {
if(dims==NULL) {
HRETURN_ERROR (H5E_ARGS, H5E_BADVALUE, FAIL,
@@ -1685,12 +1683,23 @@ H5Screate_simple(int rank, const hsize_t dims[/*rank*/],
HRETURN_ERROR (H5E_ARGS, H5E_BADVALUE, FAIL,
"no dimensions specified");
}
- if (maxdims) {
- for (i=0; i<rank; i++) {
+ /* Check whether the current dimensions are valid */
+ for (i=0; i<rank; i++) {
+ if (maxdims) {
if (H5S_UNLIMITED!=maxdims[i] && maxdims[i]<dims[i]) {
HRETURN_ERROR (H5E_ARGS, H5E_BADVALUE, FAIL,
"maxdims is smaller than dims");
}
+ if (H5S_UNLIMITED!=maxdims[i] && dims[i]==0) {
+ HRETURN_ERROR (H5E_ARGS, H5E_BADVALUE, FAIL,
+ "zero sized dimension for non-unlimited dimension");
+ }
+ }
+ else {
+ if (dims[i]==0) {
+ HRETURN_ERROR (H5E_ARGS, H5E_BADVALUE, FAIL,
+ "zero sized dimension for non-unlimited dimension");
+ }
}
}