[svn-r2131] Changed H5Screate_simple & H5Sset_extent_simple to disallow

size 0 dimensions without corresponding unlimited dimension.
This commit is contained in:
Quincey Koziol 2000-04-12 17:02:16 -05:00
parent efbeda8d65
commit e47b34e54f

View File

@ -1350,23 +1350,21 @@ 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,
"maximum dimension specified, but no current "
"dimensions specified");
}
}
for (u=0; u<rank; u++) {
if (max[u]!=H5S_UNLIMITED && max[u]<dims[u]) {
HRETURN_ERROR (H5E_ARGS, H5E_BADVALUE, FAIL,
@ -1684,12 +1682,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");
}
}
}