diff options
Diffstat (limited to 'c++/src')
-rw-r--r-- | c++/src/H5Location.cpp | 19 | ||||
-rw-r--r-- | c++/src/H5Location.h | 6 |
2 files changed, 16 insertions, 9 deletions
diff --git a/c++/src/H5Location.cpp b/c++/src/H5Location.cpp index ead5822..80e1462 100644 --- a/c++/src/H5Location.cpp +++ b/c++/src/H5Location.cpp @@ -488,7 +488,7 @@ void H5Location::removeComment(const H5std_string& name) const /// will be truncated to accommodate the null terminator. // Programmer Binh-Minh Ribler - Mar 2014 //-------------------------------------------------------------------------- -ssize_t H5Location::getComment(const char* name, const size_t buf_size, char* comment) const +ssize_t H5Location::getComment(const char* name, size_t buf_size, char* comment) const { // H5Oget_comment_by_name will get buf_size chars of the comment including // the null terminator @@ -502,7 +502,7 @@ ssize_t H5Location::getComment(const char* name, const size_t buf_size, char* co } // If the comment is longer than the provided buffer size, the C library // will not null terminate it - if (comment_len >= buf_size) + if ((size_t)comment_len >= buf_size) comment[buf_size-1] = '\0'; // Return the actual comment length, which might be different from buf_size @@ -519,7 +519,7 @@ ssize_t H5Location::getComment(const char* name, const size_t buf_size, char* co ///\exception H5::LocationException // Programmer Binh-Minh Ribler - 2000 (moved from CommonFG, Sep 2013) //-------------------------------------------------------------------------- -H5std_string H5Location::getComment(const char* name, const size_t buf_size) const +H5std_string H5Location::getComment(const char* name, size_t buf_size) const { // Initialize string to "", so that if there is no comment, the returned // string will be empty @@ -549,6 +549,10 @@ H5std_string H5Location::getComment(const char* name, const size_t buf_size) con // Used overloaded function ssize_t comment_len = getComment(name, tmp_len+1, comment_C); + if (comment_len < 0) + { + throw LocationException("H5Location::getComment", "H5Oget_comment_by_name failed"); + } // Convert the C comment to return comment = comment_C; @@ -568,7 +572,7 @@ H5std_string H5Location::getComment(const char* name, const size_t buf_size) con /// \c H5std_string for \a name. // Programmer Binh-Minh Ribler - 2000 (moved from CommonFG, Sep 2013) //-------------------------------------------------------------------------- -H5std_string H5Location::getComment(const H5std_string& name, const size_t buf_size) const +H5std_string H5Location::getComment(const H5std_string& name, size_t buf_size) const { return(getComment(name.c_str(), buf_size)); } @@ -854,11 +858,14 @@ H5O_type_t H5Location::p_get_ref_obj_type(void *ref, H5R_type_t ref_type) const { H5O_type_t obj_type = H5O_TYPE_UNKNOWN; herr_t ret_value = H5Rget_obj_type2(getId(), ref_type, ref, &obj_type); - - if (obj_type == H5O_TYPE_UNKNOWN || obj_type >= H5O_TYPE_NTYPES) + if (ret_value < 0) { throw ReferenceException(inMemFunc("getRefObjType"), "H5Rget_obj_type2 failed"); } + if (obj_type == H5O_TYPE_UNKNOWN || obj_type >= H5O_TYPE_NTYPES) + { + throw ReferenceException(inMemFunc("getRefObjType"), "H5Rget_obj_type2 returned invalid type"); + } return(obj_type); } diff --git a/c++/src/H5Location.h b/c++/src/H5Location.h index c13c1c5..592f68d 100644 --- a/c++/src/H5Location.h +++ b/c++/src/H5Location.h @@ -103,9 +103,9 @@ class H5_DLLCPP H5Location : public IdComponent { void setComment(const H5std_string& comment) const; // Retrieves comment for the HDF5 object specified by its name. - ssize_t getComment(const char* name, const size_t buf_size, char* comment) const; - H5std_string getComment(const char* name, const size_t buf_size=0) const; - H5std_string getComment(const H5std_string& name, const size_t buf_size=0) const; + ssize_t getComment(const char* name, size_t buf_size, char* comment) const; + H5std_string getComment(const char* name, size_t buf_size=0) const; + H5std_string getComment(const H5std_string& name, size_t buf_size=0) const; // Removes the comment for the HDF5 object specified by its name. void removeComment(const char* name) const; |