diff options
author | Raymond Lu <songyulu@hdfgroup.org> | 2009-03-24 21:32:50 (GMT) |
---|---|---|
committer | Raymond Lu <songyulu@hdfgroup.org> | 2009-03-24 21:32:50 (GMT) |
commit | 30ccff2212467bfb342b566752c41de94cd4bf85 (patch) | |
tree | e7acb5d993fe3b3bf9f2943615b7bcafd7cc4edf /test | |
parent | 9c9e2c6d7daae12fe44ffb1e66f2caaea65bc619 (diff) | |
download | hdf5-30ccff2212467bfb342b566752c41de94cd4bf85.zip hdf5-30ccff2212467bfb342b566752c41de94cd4bf85.tar.gz hdf5-30ccff2212467bfb342b566752c41de94cd4bf85.tar.bz2 |
[svn-r16608] Bug fix (#1161): When a family file created with v1.6 library is opened and closed with
v1.8 library, v1.8 library writes the driver info block in the superblock. But v1.6
doesn't write it. This caused the data after the superblock to be overwritten. The
solution is to use a flag to indicate when the original file doesn't have the driver
info, v1.8 library doesn't write it either.
Tested on jam. I have some trouble to access smirom and linew using h5committest.
Diffstat (limited to 'test')
-rw-r--r-- | test/family_v16_00000.h5 | bin | 5120 -> 5120 bytes | |||
-rw-r--r-- | test/mount.c | 1 | ||||
-rw-r--r-- | test/vfd.c | 25 |
3 files changed, 25 insertions, 1 deletions
diff --git a/test/family_v16_00000.h5 b/test/family_v16_00000.h5 Binary files differindex 5b69c93..bf1a711 100644 --- a/test/family_v16_00000.h5 +++ b/test/family_v16_00000.h5 diff --git a/test/mount.c b/test/mount.c index 14ab346..f358634 100644 --- a/test/mount.c +++ b/test/mount.c @@ -502,6 +502,7 @@ test_assoc(hid_t fapl) * of file2. */ if(H5Oget_info_by_name(file1, "/mnt1", &oi2, H5P_DEFAULT) < 0) FAIL_STACK_ERROR + if(oi1.fileno != oi2.fileno || H5F_addr_ne(oi1.addr, oi2.addr)) { H5_FAILED(); puts(" Association failed."); @@ -802,6 +802,8 @@ static herr_t test_family_compat(void) { hid_t file = (-1), fapl; + hid_t dset; + char dname[]="dataset"; char filename[1024]; char pathname[1024]; char *srcdir = getenv("srcdir"); /*where the src code is located*/ @@ -824,7 +826,28 @@ test_family_compat(void) } HDstrcat(pathname, filename); - if((file = H5Fopen(pathname, H5F_ACC_RDONLY, fapl)) < 0) + /* Make sure we can open the file. Use the read and write mode to flush the + * superblock. */ + if((file = H5Fopen(pathname, H5F_ACC_RDWR, fapl)) < 0) + TEST_ERROR; + + if((dset = H5Dopen(file, dname, H5P_DEFAULT)) < 0) + TEST_ERROR; + + if(H5Dclose(dset) < 0) + TEST_ERROR; + + if(H5Fclose(file) < 0) + TEST_ERROR; + + /* Open the file again to make sure it isn't corrupted. */ + if((file = H5Fopen(pathname, H5F_ACC_RDWR, fapl)) < 0) + TEST_ERROR; + + if((dset = H5Dopen(file, dname, H5P_DEFAULT)) < 0) + TEST_ERROR; + + if(H5Dclose(dset) < 0) TEST_ERROR; if(H5Fclose(file) < 0) |