From cae8577c855b6c93f182db90d4db4da5b753c4eb Mon Sep 17 00:00:00 2001 From: leonarski_f Date: Tue, 5 May 2026 16:04:35 +0200 Subject: [PATCH] HDF5: Use strong file close FAPL --- writer/HDF5Objects.cpp | 6 ++++++ writer/HDF5Objects.h | 1 + 2 files changed, 7 insertions(+) diff --git a/writer/HDF5Objects.cpp b/writer/HDF5Objects.cpp index 616a5d6d..e5314c40 100644 --- a/writer/HDF5Objects.cpp +++ b/writer/HDF5Objects.cpp @@ -348,6 +348,10 @@ void HDF5Fapl::SetVersionTo1p10orNewer() { H5Pset_libver_bounds(id, H5F_LIBVER_V110, H5F_LIBVER_LATEST); } +void HDF5Fapl::SetCloseStrong() { + H5Pset_fclose_degree(id, H5F_CLOSE_STRONG); +} + template static HDF5Object& WriteOrCreateScalarAttr(HDF5Object& object, const std::string& name, const T& val) { HDF5DataSpace dataspace(HDF5DataSpace::Scalar); @@ -731,6 +735,8 @@ HDF5File::HDF5File(const std::string& filename, bool v1_10) : HDF5Object() { if (v1_10) fapl.SetVersionTo1p10orNewer(); + fapl.SetCloseStrong(); + id = H5Fcreate(filename.c_str(), H5F_ACC_TRUNC, H5P_DEFAULT, fapl.GetID()); if (id < 0) throw JFJochException(JFJochExceptionCategory::HDF5, "Cannot open/create data HDF5 file " + filename); diff --git a/writer/HDF5Objects.h b/writer/HDF5Objects.h index 0408fbe5..eea8ded9 100644 --- a/writer/HDF5Objects.h +++ b/writer/HDF5Objects.h @@ -123,6 +123,7 @@ public: HDF5Fapl(); ~HDF5Fapl(); void SetVersionTo1p10orNewer(); + void SetCloseStrong(); }; class HDF5Object : public HDF5Id {