diff options
author | Raymond Lu <songyulu@hdfgroup.org> | 2010-09-21 16:46:38 (GMT) |
---|---|---|
committer | Raymond Lu <songyulu@hdfgroup.org> | 2010-09-21 16:46:38 (GMT) |
commit | d6c6a34a8f5876d21dee052c74426b0606b62d13 (patch) | |
tree | 67b0dddc97926eae54a6fd23a563a4e2296dabab /test/flush2.c | |
parent | ba71366f9867bd2d817abf6715a5445237023c6f (diff) | |
download | hdf5-d6c6a34a8f5876d21dee052c74426b0606b62d13.zip hdf5-d6c6a34a8f5876d21dee052c74426b0606b62d13.tar.gz hdf5-d6c6a34a8f5876d21dee052c74426b0606b62d13.tar.bz2 |
[svn-r19457] Bug fix for 1707 - H5Eset_auto causes a seg fault when an application uses -DH5_USE_16_API with the 1.8 library to compile. The cause is from the mismatch of H5Eprint1 and H5Eprint2 set
through H5Eset_auto. I changed the union in the structure H5E_auto_t. Another change is to
make H5Eget_auto fail if H5Eset_auto is called to set the printing function. I'll write a
document for it.
Tested on heiwa, jam, and amani.
The property change in configure.in, config, and Makefile.am came from the merge of the 1.8
library change.
Diffstat (limited to 'test/flush2.c')
-rw-r--r-- | test/flush2.c | 35 |
1 files changed, 28 insertions, 7 deletions
diff --git a/test/flush2.c b/test/flush2.c index 5675856..c674426 100644 --- a/test/flush2.c +++ b/test/flush2.c @@ -158,7 +158,7 @@ int main(void) { hid_t fapl; - H5E_auto2_t func; + H5E_auto_t func; char name[1024]; h5_reset(); @@ -178,8 +178,14 @@ main(void) /* Check the case where the file was not flushed. This should give an error * so we turn off the error stack temporarily */ TESTING("H5Fflush (part2 without flush)"); - H5Eget_auto2(H5E_DEFAULT,&func,NULL); - H5Eset_auto2(H5E_DEFAULT, NULL, NULL); + +#ifdef H5_USE_16_API_DEFAULT + H5Eget_auto(&func,NULL); + H5Eset_auto(NULL, NULL); +#else /* H5_USE_16_API_DEFAULT */ + H5Eget_auto(H5E_DEFAULT,&func,NULL); + H5Eset_auto(H5E_DEFAULT, NULL, NULL); +#endif /* H5_USE_16_API_DEFAULT */ h5_fixname(FILENAME[1], fapl, name, sizeof name); if(check_file(name, fapl, FALSE)) @@ -196,13 +202,23 @@ main(void) goto error; #endif } - H5Eset_auto2(H5E_DEFAULT, func, NULL); +#ifdef H5_USE_16_API_DEFAULT + H5Eset_auto(func, NULL); +#else /* H5_USE_16_API_DEFAULT */ + H5Eset_auto(H5E_DEFAULT, func, NULL); +#endif /* H5_USE_16_API_DEFAULT */ /* Check the case where the file was flushed, but more data was added afterward. This should give an error * so we turn off the error stack temporarily */ TESTING("H5Fflush (part2 with flush and later addition)"); - H5Eget_auto2(H5E_DEFAULT,&func,NULL); - H5Eset_auto2(H5E_DEFAULT, NULL, NULL); + +#ifdef H5_USE_16_API_DEFAULT + H5Eget_auto(&func,NULL); + H5Eset_auto(NULL, NULL); +#else /* H5_USE_16_API_DEFAULT */ + H5Eget_auto(H5E_DEFAULT,&func,NULL); + H5Eset_auto(H5E_DEFAULT, NULL, NULL); +#endif /* H5_USE_16_API_DEFAULT */ h5_fixname(FILENAME[2], fapl, name, sizeof name); if(check_file(name, fapl, TRUE)) @@ -220,7 +236,12 @@ main(void) #endif } - H5Eset_auto2(H5E_DEFAULT, func, NULL); +#ifdef H5_USE_16_API_DEFAULT + H5Eset_auto(func, NULL); +#else /* H5_USE_16_API_DEFAULT */ + H5Eset_auto(H5E_DEFAULT, func, NULL); +#endif /* H5_USE_16_API_DEFAULT */ + h5_cleanup(FILENAME, fapl); |