summaryrefslogtreecommitdiffstats
path: root/c++
diff options
context:
space:
mode:
Diffstat (limited to 'c++')
-rw-r--r--c++/src/H5DxferProp.cpp2
-rw-r--r--c++/src/H5PropList.cpp26
2 files changed, 24 insertions, 4 deletions
diff --git a/c++/src/H5DxferProp.cpp b/c++/src/H5DxferProp.cpp
index a3247d0..389db89 100644
--- a/c++/src/H5DxferProp.cpp
+++ b/c++/src/H5DxferProp.cpp
@@ -14,7 +14,7 @@ namespace H5 {
const DSetMemXferPropList DSetMemXferPropList::DEFAULT( H5P_DEFAULT );
// Creates a dataset memory and transfer property list
-DSetMemXferPropList::DSetMemXferPropList() : PropList( H5P_DATASET_XFER ) {}
+DSetMemXferPropList::DSetMemXferPropList() : PropList( H5P_DATASET_XFER_NEW ) {}
// Copy constructor: makes a copy of the original DSetMemXferPropList object;
DSetMemXferPropList::DSetMemXferPropList( const DSetMemXferPropList& orig ) : PropList( orig ) {}
diff --git a/c++/src/H5PropList.cpp b/c++/src/H5PropList.cpp
index 2da84e9..985d895 100644
--- a/c++/src/H5PropList.cpp
+++ b/c++/src/H5PropList.cpp
@@ -39,7 +39,20 @@ Description:
the identifier still has reference counter; the p_close function
will take care of not to call H5Pclose on the default id.
*/
-PropList::PropList( const hid_t plist_id ) : IdComponent( plist_id ) { }
+PropList::PropList( const hid_t plist_id ) : IdComponent()
+{
+ if (H5I_GENPROP_CLS == H5Iget_type(plist_id)) {
+ // call C routine to create the new property
+ id = H5Pcreate_list(plist_id);
+ if( id <= 0 )
+ {
+ throw PropListIException("PropList constructor", "H5Pcreate_list failed");
+ }
+ }
+ else {
+ id=plist_id;
+ }
+}
// Makes a copy of an existing property list
void PropList::copy( const PropList& like_plist )
@@ -77,10 +90,17 @@ void PropList::p_close() const
{
if( id != H5P_DEFAULT ) // not a constant, should call H5Pclose
{
- herr_t ret_value = H5Pclose( id );
+ herr_t ret_value;
+
+ if (H5I_GENPROP_LST == H5Iget_type(id)) {
+ ret_value = H5Pclose_list( id );
+ } else {
+ ret_value = H5Pclose( id );
+ }
+
if( ret_value < 0 )
{
- throw PropListIException(NULL, "H5Pclose failed" );
+ throw PropListIException(NULL, "property list close failed" );
}
}
}