From 856b5e8aab4768583da353a87f0ac59232c0e03c Mon Sep 17 00:00:00 2001 From: "Z.H. Li" Date: Mon, 19 Aug 2024 18:58:31 +0800 Subject: [PATCH] bug fixes related to file saving (#931) * fix the file path resetting issue of GUI in the case where different modules have different fpath setting. * fix stack-buffer-overflow issue when using HDF5 HDF5DataFile::parameterDataTypes have 64bit type (i.e. STD_U64LE), the size of fill_value should be at least 8 bytes. * change the type of fill_value to uint64_t --- slsDetectorGui/src/qTabMeasurement.cpp | 4 ++-- slsReceiverSoftware/src/HDF5DataFile.cpp | 2 +- slsReceiverSoftware/src/MasterFileUtility.cpp | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/slsDetectorGui/src/qTabMeasurement.cpp b/slsDetectorGui/src/qTabMeasurement.cpp index dc97903bb..3e126762b 100644 --- a/slsDetectorGui/src/qTabMeasurement.cpp +++ b/slsDetectorGui/src/qTabMeasurement.cpp @@ -839,8 +839,8 @@ void qTabMeasurement::UpdateProgress() { int qTabMeasurement::VerifyOutputDirectoryError() { try { auto retval = det->getFilePath(); - for (auto &it : retval) { - det->setFilePath(it); + for (size_t i = 0; i < retval.size(); i++) { + det->setFilePath(retval[i], {i}); } return slsDetectorDefs::OK; } diff --git a/slsReceiverSoftware/src/HDF5DataFile.cpp b/slsReceiverSoftware/src/HDF5DataFile.cpp index 9e4d48e9e..2b267f474 100644 --- a/slsReceiverSoftware/src/HDF5DataFile.cpp +++ b/slsReceiverSoftware/src/HDF5DataFile.cpp @@ -186,7 +186,7 @@ void HDF5DataFile::CreateFile() { // property list H5::DSetCreatPropList plist; H5::DSetCreatPropList plistPara; - int fill_value = -1; + uint64_t fill_value = -1; plist.setFillValue(dataType, &fill_value); // plistPara.setFillValue(dataType, &fill_value); plist.setChunk(DATA_RANK, dimsChunk); diff --git a/slsReceiverSoftware/src/MasterFileUtility.cpp b/slsReceiverSoftware/src/MasterFileUtility.cpp index 10d50fb9c..793dc777e 100644 --- a/slsReceiverSoftware/src/MasterFileUtility.cpp +++ b/slsReceiverSoftware/src/MasterFileUtility.cpp @@ -215,7 +215,7 @@ std::string CreateVirtualHDF5File( // property list H5::DSetCreatPropList plist; - int fill_value = -1; + uint64_t fill_value = -1; plist.setFillValue(dataType, &fill_value); std::vector plistPara(paraSize); // ignoring last fill (string)