mirror of
https://github.com/slsdetectorgroup/aare.git
synced 2026-02-19 15:48:43 +01:00
view is only allowed on l-value frame (#220)
Vadym accidentally called view() directly on an R-value frame, which leads to a dangling view pointer. Adjusted code such that compiler throws an error if called on an R-value frame. Co-authored-by: Erik Fröjdh <erik.frojdh@psi.ch>
This commit is contained in:
@@ -105,7 +105,7 @@ class Frame {
|
|||||||
* @tparam T type of the pixels
|
* @tparam T type of the pixels
|
||||||
* @return NDView<T, 2>
|
* @return NDView<T, 2>
|
||||||
*/
|
*/
|
||||||
template <typename T> NDView<T, 2> view() {
|
template <typename T> NDView<T, 2> view() & {
|
||||||
std::array<ssize_t, 2> shape = {static_cast<ssize_t>(m_rows),
|
std::array<ssize_t, 2> shape = {static_cast<ssize_t>(m_rows),
|
||||||
static_cast<ssize_t>(m_cols)};
|
static_cast<ssize_t>(m_cols)};
|
||||||
T *data = reinterpret_cast<T *>(m_data);
|
T *data = reinterpret_cast<T *>(m_data);
|
||||||
|
|||||||
@@ -57,6 +57,7 @@ class ClusterFinderMTWrapper
|
|||||||
size_t m_sink_size() const { return this->m_sink.sizeGuess(); }
|
size_t m_sink_size() const { return this->m_sink.sizeGuess(); }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
TEST_CASE("multithreaded cluster finder", "[.with-data]") {
|
TEST_CASE("multithreaded cluster finder", "[.with-data]") {
|
||||||
auto fpath =
|
auto fpath =
|
||||||
test_data_path() / "raw/moench03/cu_half_speed_master_4.json";
|
test_data_path() / "raw/moench03/cu_half_speed_master_4.json";
|
||||||
@@ -81,7 +82,8 @@ TEST_CASE("multithreaded cluster finder", "[.with-data]") {
|
|||||||
CHECK(cf.m_input_queues_are_empty() == true);
|
CHECK(cf.m_input_queues_are_empty() == true);
|
||||||
|
|
||||||
for (size_t i = 0; i < n_frames_pd; ++i) {
|
for (size_t i = 0; i < n_frames_pd; ++i) {
|
||||||
cf.find_clusters(file.read_frame().view<uint16_t>());
|
auto frame = file.read_frame();
|
||||||
|
cf.find_clusters(frame.view<uint16_t>());
|
||||||
}
|
}
|
||||||
|
|
||||||
cf.stop();
|
cf.stop();
|
||||||
|
|||||||
Reference in New Issue
Block a user