Explorar el Código

fix crash fue to empty CAM parameters in migration (#3450)

Co-authored-by: CaCO3 <caco@ruinelli.ch>
CaCO3 hace 1 año
padre
commit
26ca15e18a
Se han modificado 1 ficheros con 43 adiciones y 8 borrados
  1. 43 8
      code/main/main.cpp

+ 43 - 8
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"))) {
             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_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;
                 CamZoom_found = true;
             }
             }
             else if ((isInString(configLines[i], "ZoomMode")) && (!isInString(configLines[i], "CamZoom"))) {
             else if ((isInString(configLines[i], "ZoomMode")) && (!isInString(configLines[i], "CamZoom"))) {
                 CamZoomSize_lines = i;
                 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;
                 CamZoom_found = true;
             }
             }
             else if ((isInString(configLines[i], "ZoomOffsetX")) && (!isInString(configLines[i], "CamZoom")) && (!isInString(configLines[i], "ZoomOffsetY"))) {
             else if ((isInString(configLines[i], "ZoomOffsetX")) && (!isInString(configLines[i], "CamZoom")) && (!isInString(configLines[i], "ZoomOffsetY"))) {
                 CamZoomOffsetX_lines = i;
                 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;
                 CamZoom_found = true;
             }
             }
             else if ((isInString(configLines[i], "ZoomOffsetY")) && (!isInString(configLines[i], "CamZoom")) && (!isInString(configLines[i], "ZoomOffsetX"))) {
             else if ((isInString(configLines[i], "ZoomOffsetY")) && (!isInString(configLines[i], "CamZoom")) && (!isInString(configLines[i], "ZoomOffsetX"))) {
                 CamZoomOffsetY_lines = i;
                 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;
                 CamZoom_found = true;
             }
             }
@@ -909,7 +939,12 @@ bool setCpuFrequency(void) {
         splitted = ZerlegeZeile(line);
         splitted = ZerlegeZeile(line);
 
 
         if (toUpper(splitted[0]) == "CPUFREQUENCY") {
         if (toUpper(splitted[0]) == "CPUFREQUENCY") {
-            cpuFrequency = splitted[1];
+            if (splitted.size() < 2) {
+                cpuFrequency = 160;
+            }
+            else {
+                cpuFrequency = splitted[1];
+            }
             break;
             break;
         }
         }
     }
     }