summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBinh-Minh Ribler <bmribler@hdfgroup.org>2007-07-08 20:28:59 (GMT)
committerBinh-Minh Ribler <bmribler@hdfgroup.org>2007-07-08 20:28:59 (GMT)
commitf6ebd743d80ed41edd55065ed6aba6ae8d349ed7 (patch)
tree55eea469d3684e19ade507670bc32a9805c2afd8
parent9db2bf983544a9b3113cae4caf2b0459fa1cddde (diff)
downloadhdf5-f6ebd743d80ed41edd55065ed6aba6ae8d349ed7.zip
hdf5-f6ebd743d80ed41edd55065ed6aba6ae8d349ed7.tar.gz
hdf5-f6ebd743d80ed41edd55065ed6aba6ae8d349ed7.tar.bz2
[svn-r13954] Purpose: Fix test
Description: Compilers don't destroy temporary objects at the same time, some do immediately after use, some delay until the end of the scope. The delay makes it difficult to test the reference count functionality. Solution: Enclosed the operations on objects and check reference count after getting out of the enclosed block. This only works for the test! I'm assuming that checking reference count is just for the library to test that functionality; the user will not need to do that. :-/ Platforms tested: SunOS 5.10 (linew) Linux 2.6 (kagiso)
-rw-r--r--c++/test/tattr.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/c++/test/tattr.cpp b/c++/test/tattr.cpp
index c6225229..ca0516a 100644
--- a/c++/test/tattr.cpp
+++ b/c++/test/tattr.cpp
@@ -1061,6 +1061,12 @@ static void test_attr_dtype_shared()
// Create dataspace for dataset
DataSpace dspace;
+ // Enclose the following so that all temporary objects can be
+ // destroyed before testing reference count - this is to overcome
+ // the different time when the temporary objects are to be destroyed
+ // by different compilers.
+ {
+
// Create dataset
DataSet dset = fid1.createDataSet(DSET1_NAME, dtype, dspace);
@@ -1126,6 +1132,8 @@ static void test_attr_dtype_shared()
// Unlink the dataset
fid1.unlink(DSET1_NAME);
+ } // end of enclosing to test reference counts
+
// Check reference count on named datatype
fid1.getObjinfo(TYPE1_NAME, statbuf);
verify_val((int)statbuf.nlink, 1, "H5File::unlink", __LINE__, __FILE__);