summaryrefslogtreecommitdiffstats
path: root/src/H5Dio.c
diff options
context:
space:
mode:
authorJames Laird <jlaird@hdfgroup.org>2004-07-27 16:56:19 (GMT)
committerJames Laird <jlaird@hdfgroup.org>2004-07-27 16:56:19 (GMT)
commit52563e6fa8c56bc68051c50e9e847293da30a008 (patch)
treed6c2acb4013c54be48da0449c5ae3695cf6e421c /src/H5Dio.c
parent6dae05b645086f67a45d4a3d3ab91f303a3362c0 (diff)
downloadhdf5-52563e6fa8c56bc68051c50e9e847293da30a008.zip
hdf5-52563e6fa8c56bc68051c50e9e847293da30a008.tar.gz
hdf5-52563e6fa8c56bc68051c50e9e847293da30a008.tar.bz2
[svn-r8954]
Purpose: Bug fix Description: When a simple dataspace is created, its extent should be set before using it, or it will silently function as a NULL dataspace. Solution: Added checks on user-supplied dataspaces. Now dataspaces without extents set will throw errors; users must explicitly set a dataspace to be NULL. Platforms tested: sleipnir, windows
Diffstat (limited to 'src/H5Dio.c')
-rw-r--r--src/H5Dio.c18
1 files changed, 17 insertions, 1 deletions
diff --git a/src/H5Dio.c b/src/H5Dio.c
index f9572b3..32e6a28 100644
--- a/src/H5Dio.c
+++ b/src/H5Dio.c
@@ -229,6 +229,10 @@ H5D_fill(const void *fill, const H5T_t *fill_type, void *buf, const H5T_t *buf_t
assert(buf_type);
assert(space);
+ /* Make sure the dataspace has an extent set */
+ if( !(H5S_has_extent(space)) )
+ HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "dataspace extent has not been set")
+
/* Get the memory and file datatype sizes */
src_type_size = H5T_get_size(fill_type);
dst_type_size = H5T_get_size(buf_type);
@@ -682,6 +686,12 @@ H5D_read(H5D_t *dataset, hid_t mem_type_id, const H5S_t *mem_space,
if (nelmts!=(hsize_t)H5S_GET_SELECT_NPOINTS(file_space))
HGOTO_ERROR (H5E_ARGS, H5E_BADVALUE, FAIL, "src and dest data spaces have different sizes")
+ /* Make sure that both selections have their extents set */
+ if( !(H5S_has_extent(file_space)) )
+ HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "file dataspace does not have extent set")
+ if( !(H5S_has_extent(mem_space)) )
+ HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "memory dataspace does not have extent set")
+
/* Retrieve dataset properties */
/* <none needed in the general case> */
@@ -907,6 +917,12 @@ H5D_write(H5D_t *dataset, hid_t mem_type_id, const H5S_t *mem_space,
if (nelmts!=(hsize_t)H5S_GET_SELECT_NPOINTS(file_space))
HGOTO_ERROR (H5E_ARGS, H5E_BADVALUE, FAIL, "src and dest data spaces have different sizes")
+ /* Make sure that both selections have their extents set */
+ if( !(H5S_has_extent(file_space)) )
+ HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "file dataspace does not have extent set")
+ if( !(H5S_has_extent(mem_space)) )
+ HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "memory dataspace does not have extent set")
+
/* Retrieve dataset properties */
/* <none needed currently> */
@@ -2478,7 +2494,7 @@ H5D_create_chunk_map(H5D_t *dataset, const H5T_t *mem_type, const H5S_t *file_sp
} /* end if */
} /* end else */
-#ifdef QAK
+#ifdef QAK
{
int mpi_rank;
double time;