From 26ca15e18adecff757fd620e5837f5d8c26c083c Mon Sep 17 00:00:00 2001 From: CaCO3 Date: Sun, 22 Dec 2024 22:12:49 +0100 Subject: [PATCH] fix crash fue to empty CAM parameters in migration (#3450) Co-authored-by: CaCO3 --- code/main/main.cpp | 51 ++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 43 insertions(+), 8 deletions(-) diff --git a/code/main/main.cpp b/code/main/main.cpp index d1e14ebd..5d0ba9b6 100644 --- a/code/main/main.cpp +++ b/code/main/main.cpp @@ -600,27 +600,57 @@ void migrateConfiguration(void) { } else if ((isInString(configLines[i], "Zoom")) && (!isInString(configLines[i], "CamZoom")) && (!isInString(configLines[i], "ZoomMode")) && (!isInString(configLines[i], "ZoomOffsetX")) && (!isInString(configLines[i], "ZoomOffsetY"))) { CamZoom_lines = i; - CamZoom_value = alphanumericToBoolean(splitted[1]); + if (splitted.size() < 2) { + CamZoom_value = false; + } + else { + ESP_LOGE(TAG, "splitted[1]: %s", splitted[1].c_str()); + CamZoom_value = alphanumericToBoolean(splitted[1]); + } CamZoom_found = true; } else if ((isInString(configLines[i], "ZoomMode")) && (!isInString(configLines[i], "CamZoom"))) { CamZoomSize_lines = i; - if (isStringNumeric(splitted[1])) { - CamZoomSize_value = std::stof(splitted[1]); + if (splitted.size() < 2) { + CamZoomSize_value = 0; + } + else { + if (isStringNumeric(splitted[1])) { + CamZoomSize_value = std::stof(splitted[1]); + } + else { + CamZoomSize_value = 0; + } } CamZoom_found = true; } else if ((isInString(configLines[i], "ZoomOffsetX")) && (!isInString(configLines[i], "CamZoom")) && (!isInString(configLines[i], "ZoomOffsetY"))) { CamZoomOffsetX_lines = i; - if (isStringNumeric(splitted[1])) { - CamZoomOffsetX_value = std::stof(splitted[1]); + if (splitted.size() < 2) { + CamZoomOffsetX_value = 0; + } + else { + if (isStringNumeric(splitted[1])) { + CamZoomOffsetX_value = std::stof(splitted[1]); + } + else { + CamZoomOffsetX_value = 0; + } } CamZoom_found = true; } else if ((isInString(configLines[i], "ZoomOffsetY")) && (!isInString(configLines[i], "CamZoom")) && (!isInString(configLines[i], "ZoomOffsetX"))) { CamZoomOffsetY_lines = i; - if (isStringNumeric(splitted[1])) { - CamZoomOffsetY_value = std::stof(splitted[1]); + if (splitted.size() < 2) { + CamZoomOffsetY_value = 0; + } + else { + if (isStringNumeric(splitted[1])) { + CamZoomOffsetY_value = std::stof(splitted[1]); + } + else { + CamZoomOffsetY_value = 0; + } } CamZoom_found = true; } @@ -909,7 +939,12 @@ bool setCpuFrequency(void) { splitted = ZerlegeZeile(line); if (toUpper(splitted[0]) == "CPUFREQUENCY") { - cpuFrequency = splitted[1]; + if (splitted.size() < 2) { + cpuFrequency = 160; + } + else { + cpuFrequency = splitted[1]; + } break; } }