diff options
author | Quincey Koziol <koziol@hdfgroup.org> | 2004-07-28 03:22:12 (GMT) |
---|---|---|
committer | Quincey Koziol <koziol@hdfgroup.org> | 2004-07-28 03:22:12 (GMT) |
commit | ae0ae159563f4d284b4062f0c838f7c91d38f338 (patch) | |
tree | 79c055e152a7dfb1452bcd51f65e0b0a96f48a4f /test/dsets.c | |
parent | 4c7a64cc7381fe1ad8620c4def738bd7691ef490 (diff) | |
download | hdf5-ae0ae159563f4d284b4062f0c838f7c91d38f338.zip hdf5-ae0ae159563f4d284b4062f0c838f7c91d38f338.tar.gz hdf5-ae0ae159563f4d284b4062f0c838f7c91d38f338.tar.bz2 |
[svn-r8962] Purpose:
Bug fix
Description:
Allow I/O on extendible chunked datasets with (currently) zero-sized
dimensions to proceed harmlessly instead of dumping core on an assertion.
Solution:
Removed assertion and added checks to avoid problem situation in H5TB_end
Platforms tested:
FreeBSD 4.10 (sleipnir) w/ & w/o parallel
Too minor to require h5committest
Diffstat (limited to 'test/dsets.c')
-rw-r--r-- | test/dsets.c | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/test/dsets.c b/test/dsets.c index d996211..cd3cbc5 100644 --- a/test/dsets.c +++ b/test/dsets.c @@ -113,6 +113,10 @@ const char *FILENAME[] = { #define NOENCODER_TEST_DATASET "noencoder_tdset.h5" #define NOENCODER_SZIP_DATASET "noencoder_szip_dset.h5" #define NOENCODER_SZIP_SHUFF_FLETCH_DATASET "noencoder_szip_shuffle_fletcher_dset.h5" + +/* Names for zero-dim test */ +#define ZERODIM_DATASET "zerodim" + /* Shared global arrays */ #define DSET_DIM1 100 #define DSET_DIM2 200 @@ -3626,6 +3630,53 @@ error: /*------------------------------------------------------------------------- + * Function: test_zero_dims + * + * Purpose: Tests read/writes to zero-sized extendible datasets + * + * Return: Success: 0 + * Failure: -1 + * + * Programmer: Quincey Koziol + * Tuesday, July 27, 2004 + * + * Modifications: + * + *------------------------------------------------------------------------- + */ +static herr_t +test_zero_dims(hid_t file) +{ + hid_t s=-1, d=-1, dcpl=-1; + hsize_t dsize=0, dmax=H5S_UNLIMITED, csize=5; + + TESTING("I/O on datasets with zero-sized dims"); + + if((s = H5Screate_simple(1, &dsize, &dmax))<0) TEST_ERROR; + if((dcpl = H5Pcreate(H5P_DATASET_CREATE))<0) TEST_ERROR; + if(H5Pset_chunk(dcpl, 1, &csize)<0) TEST_ERROR; + if((d = H5Dcreate(file, ZERODIM_DATASET, H5T_NATIVE_INT, s, dcpl))<0) TEST_ERROR; + + if(H5Dwrite(d, H5T_NATIVE_INT, s, s, H5P_DEFAULT, (void*)911)<0) TEST_ERROR; + + if(H5Pclose(dcpl)<0) TEST_ERROR; + if(H5Sclose(s)<0) TEST_ERROR; + if(H5Dclose(d)<0) TEST_ERROR; + + PASSED(); + return 0; + +error: + H5E_BEGIN_TRY { + H5Pclose(dcpl); + H5Dclose(d); + H5Sclose(s); + } H5E_END_TRY; + return -1; +} /* end test_zero_dims() */ + + +/*------------------------------------------------------------------------- * Function: main * * Purpose: Tests the dataset interface (H5D) @@ -3693,6 +3744,7 @@ main(void) nerrors += test_compare_dcpl(file)<0 ?1:0; nerrors += test_filter_delete(file)<0 ?1:0; nerrors += test_filters_endianess()<0 ?1:0; + nerrors += test_zero_dims(file)<0 ?1:0; if (H5Fclose(file)<0) goto error; if (nerrors) goto error; |