From b0891fef50623304d73b1a44ad3381e02c95d2b4 Mon Sep 17 00:00:00 2001 From: Filip Leonarski Date: Fri, 12 Dec 2025 17:50:21 +0100 Subject: [PATCH] jfjoch_viewer: Trace more potential memory issues --- reader/JFJochHttpReader.cpp | 4 ++++ viewer/JFJochImageReadingWorker.cpp | 11 +++++++++++ viewer/JFJochViewerDatasetInfo.cpp | 3 +++ 3 files changed, 18 insertions(+) diff --git a/reader/JFJochHttpReader.cpp b/reader/JFJochHttpReader.cpp index f4cc9cd3..d421b225 100644 --- a/reader/JFJochHttpReader.cpp +++ b/reader/JFJochHttpReader.cpp @@ -196,6 +196,10 @@ bool JFJochHttpReader::LoadImage_i(std::shared_ptr &dataset if (!res || res->status != httplib::StatusCode::OK_200) return false; + if (res->body.empty()) { + return false; + } + try { buffer.resize(res->body.size()); memcpy(buffer.data(), res->body.data(), res->body.size()); diff --git a/viewer/JFJochImageReadingWorker.cpp b/viewer/JFJochImageReadingWorker.cpp index a1da29bd..d62b5a2d 100644 --- a/viewer/JFJochImageReadingWorker.cpp +++ b/viewer/JFJochImageReadingWorker.cpp @@ -209,6 +209,11 @@ void JFJochImageReadingWorker::UpdateDataset_i(const std::optionalexperiment; curr_experiment.ImportIndexingSettings(indexing_settings); curr_experiment.ImportAzimuthalIntegrationSettings(azint_settings); @@ -341,6 +346,12 @@ void JFJochImageReadingWorker::UpdateUserMask_i(const std::vector &mas file_reader.UpdateUserMask(mask); dataset = file_reader.GetDataset(); } + + if (!dataset) { + logger.Error("UpdateUserMask_i: dataset is null (http_mode={}) - skipping update to avoid crash", http_mode); + return; + } + UpdateAzint_i(dataset.get()); emit datasetLoaded(dataset); diff --git a/viewer/JFJochViewerDatasetInfo.cpp b/viewer/JFJochViewerDatasetInfo.cpp index 37657f13..5cb4a0e0 100644 --- a/viewer/JFJochViewerDatasetInfo.cpp +++ b/viewer/JFJochViewerDatasetInfo.cpp @@ -133,6 +133,9 @@ void JFJochViewerDatasetInfo::imageSelectedInChart(int64_t number) { void JFJochViewerDatasetInfo::UpdatePlot() { int index = combo_box->currentIndex(); + if (combo_box->count() == 0 || index < 0) + return; + int val = combo_box->itemData(index).toInt(); if (dataset) {