diff options
author | Binh-Minh Ribler <bmribler@hdfgroup.org> | 2005-07-10 11:26:56 (GMT) |
---|---|---|
committer | Binh-Minh Ribler <bmribler@hdfgroup.org> | 2005-07-10 11:26:56 (GMT) |
commit | b14a4fd95f5c71f31ec344e13a7c398015da41e6 (patch) | |
tree | d51925c61682fdf2e3e9422abb08ca753749ab9b /c++/src/H5Exception.cpp | |
parent | 6aa7ea9331f4181f29d6a19bf9d53fc330c3ff88 (diff) | |
download | hdf5-b14a4fd95f5c71f31ec344e13a7c398015da41e6.zip hdf5-b14a4fd95f5c71f31ec344e13a7c398015da41e6.tar.gz hdf5-b14a4fd95f5c71f31ec344e13a7c398015da41e6.tar.bz2 |
[svn-r11060] Purpose: Fix bug (reported by user)
Description:
The use of FileCreatPropList::DEFAULT sometimes caused failure
in the reference counting area. This occurs to all the default
property lists, which also include FileAccPropList::DEFAULT,
DSetCreatPropList::DEFAULT, and DSetMemXferPropList::DEFAULT.
H5P_DEFAULT was used to create these default prop lists and
because its value is 0, the id of these prop lists are 0, which
is rejected by the H5I functions during the reference counting.
Solution:
The main action to fix the above problem was to use
H5P_FILE_CREATE
H5P_FILE_ACCESS
H5P_DATASET_CREATE
H5P_DATASET_XFER
to define the default property lists accordingly. Yet, when this
fix was applied, some bug in reference counting was revealed.
It appeared that some ids were not incremented but were passed in
for decrementing. The following actions were then taken to fix and
improve the current use of reference counting H5I functions.
* added private func IdComponent::p_valid_id to verify that the
id is a valid id and can be passed into an H5I function
* used p_valid_id to validate an id before calling an H5I functions
in the reference-counting member functions incRefCount,
decRefCount, and getCounter
* changed to use member function incRefCount, decRefCount, and
getCounter instead of the C APIs H5Iinc_ref, H5Idec_ref, and
H5Iget_ref throughout IdComponent.
In addition, overloadings were added for incRefCount, decRefCount,
and getCounter to take an id different than the id of the current
instance; they can be convenient during debugging.
Platforms tested:
Linux 2.4 (heping)
SunOS 5.8 64-bit (sol)
AIX 5.1 (copper)
Diffstat (limited to 'c++/src/H5Exception.cpp')
-rw-r--r-- | c++/src/H5Exception.cpp | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/c++/src/H5Exception.cpp b/c++/src/H5Exception.cpp index aef0d9c..37d0da5 100644 --- a/c++/src/H5Exception.cpp +++ b/c++/src/H5Exception.cpp @@ -85,7 +85,7 @@ string Exception::getMajorString( hid_t err_major ) const // Convert the C error description and return string major_str(mesg_C); - delete mesg_C; + delete []mesg_C; return( major_str ); } @@ -121,7 +121,7 @@ string Exception::getMinorString( hid_t err_minor ) const // Convert the C error description and return string minor_str(mesg_C); - delete mesg_C; + delete []mesg_C; return( minor_str ); } |