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 /src/H5Edeprec.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 'src/H5Edeprec.c')
-rw-r--r-- | src/H5Edeprec.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/H5Edeprec.c b/src/H5Edeprec.c index 30f3ae9..9f6d869 100644 --- a/src/H5Edeprec.c +++ b/src/H5Edeprec.c @@ -389,8 +389,12 @@ H5Eget_auto1(H5E_auto1_t *func, void **client_data) /* Get the automatic error reporting information */ if(H5E_get_auto(estack, &auto_op, client_data) < 0) HGOTO_ERROR(H5E_ERROR, H5E_CANTGET, FAIL, "can't get automatic error info") + + if(auto_op.user_set && auto_op.vers == 2) + HGOTO_ERROR(H5E_ERROR, H5E_CANTGET, FAIL, "wrong API function, H5Eset_auto2 has been called") + if(func) - *func = auto_op.u.func1; + *func = auto_op.func1; done: FUNC_LEAVE_API(ret_value) @@ -436,7 +440,8 @@ H5Eset_auto1(H5E_auto1_t func, void *client_data) /* Set the automatic error reporting information */ auto_op.vers = 1; - auto_op.u.func1 = func; + auto_op.user_set = TRUE; + auto_op.func1 = func; if(H5E_set_auto(estack, &auto_op, client_data) < 0) HGOTO_ERROR(H5E_ERROR, H5E_CANTSET, FAIL, "can't set automatic error info") |