Skip to content

Commit

Permalink
Free return of H5Tget_member_name
Browse files Browse the repository at this point in the history
  • Loading branch information
alkino committed Jul 11, 2023
1 parent 59e6f41 commit 622b7d3
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 2 deletions.
5 changes: 3 additions & 2 deletions include/highfive/H5DataType.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -239,11 +239,12 @@ class CompoundType: public DataType {
size_t n_members = static_cast<size_t>(result);
members.reserve(n_members);
for (unsigned i = 0; i < n_members; i++) {
const char* name = H5Tget_member_name(_hid, i);
char* name = H5Tget_member_name(_hid, i);
size_t offset = H5Tget_member_offset(_hid, i);
hid_t member_hid = H5Tget_member_type(_hid, i);
DataType member_type{member_hid};
members.emplace_back(name, member_type, offset);
members.emplace_back(std::string(name), member_type, offset);
H5free_memory(name);
}
}

Expand Down
4 changes: 4 additions & 0 deletions tests/unit/tests_high_five_base.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2643,6 +2643,10 @@ TEST_CASE("HighFiveCompounds") {

CompoundType t2_from_hid(t2);
CHECK(t2 == t2_from_hid);

// Back from a DataType
CHECK_NOTHROW(CompoundType(DataType(t1_from_hid)));
CHECK_THROWS(CompoundType(AtomicType<uint32_t>{}));
}

struct GrandChild {
Expand Down

0 comments on commit 622b7d3

Please sign in to comment.