diff options
author | Binh-Minh Ribler <bmribler@hdfgroup.org> | 2006-05-23 17:59:40 (GMT) |
---|---|---|
committer | Binh-Minh Ribler <bmribler@hdfgroup.org> | 2006-05-23 17:59:40 (GMT) |
commit | deec486732b7c8646cc0a2614a62b85fff336fe0 (patch) | |
tree | e2c2b4e6a939ed9aabb75b684dfdd89b9f84e148 /c++/src/H5Group.cpp | |
parent | d0f565c5c0370424ac78a127f31a60396d280b95 (diff) | |
download | hdf5-deec486732b7c8646cc0a2614a62b85fff336fe0.zip hdf5-deec486732b7c8646cc0a2614a62b85fff336fe0.tar.gz hdf5-deec486732b7c8646cc0a2614a62b85fff336fe0.tar.bz2 |
[svn-r12368] Purpose: Fixed bug
Description:
Shanti compiler destroy unnamed objects later than others, which caused
some reference counting test fail. Revised the test so that destructors
are called at the same time, regardless the differences of compiler
implementation.
Revised some constructors, close, operator=, and destructors to make
sure that all the object ids are handled properly.
Platforms tested:
Linux 2.4 (heping)
SunOS 5.9 (shanti)
HPUX 11.00 (kelgia)
AIX 5.1 (copper)
Diffstat (limited to 'c++/src/H5Group.cpp')
-rw-r--r-- | c++/src/H5Group.cpp | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/c++/src/H5Group.cpp b/c++/src/H5Group.cpp index 6c0239f..8725b54 100644 --- a/c++/src/H5Group.cpp +++ b/c++/src/H5Group.cpp @@ -187,13 +187,16 @@ DataSpace Group::getRegion(void *ref, H5R_type_t ref_type) const //-------------------------------------------------------------------------- void Group::close() { - herr_t ret_value = H5Gclose( id ); - if( ret_value < 0 ) - { - throw GroupIException("Group::close", "H5Gclose failed"); - } - // reset the id because the group that it represents is now closed - id = 0; + if (p_valid_id(id)) + { + herr_t ret_value = H5Gclose( id ); + if( ret_value < 0 ) + { + throw GroupIException("Group::close", "H5Gclose failed"); + } + // reset the id because the group that it represents is now closed + id = 0; + } } //-------------------------------------------------------------------------- @@ -227,14 +230,12 @@ void Group::throwException(const H5std_string func_name, const H5std_string msg) //-------------------------------------------------------------------------- Group::~Group() { - // The group id will be closed properly try { - decRefCount(); + close(); } catch (Exception close_error) { - cerr << "Group::~Group - " << close_error.getDetailMsg() << endl; + cerr << "Group::~Group - " << close_error.getDetailMsg() << endl; } - } #ifndef H5_NO_NAMESPACE |