From c1d466114393014d581917a4238bcd44bbffdd50 Mon Sep 17 00:00:00 2001
From: Stefan `Sec` Zehl <sec@42.org>
Date: Thu, 17 Aug 2023 22:29:42 +0200
Subject: [PATCH] py/nick: handle errors in json

---
 python_payload/apps/nick/__init__.py | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/python_payload/apps/nick/__init__.py b/python_payload/apps/nick/__init__.py
index 8aa176df22..0533e400c5 100644
--- a/python_payload/apps/nick/__init__.py
+++ b/python_payload/apps/nick/__init__.py
@@ -17,6 +17,7 @@ class Configuration:
         self.pronouns_size: int = 25
         self.color = "0x40ff22"
         self.mode = 0
+        self._write = True
 
     @classmethod
     def load(cls, path: str) -> "Configuration":
@@ -27,6 +28,9 @@ class Configuration:
             data = json.loads(jsondata)
         except OSError:
             data = {}
+        except json.decoder.JSONDecodeError:
+            data = {"name": "json error"}
+            res._write = False
         if "name" in data and type(data["name"]) == str:
             res.name = data["name"]
         if "size" in data:
@@ -132,7 +136,8 @@ class NickApp(Application):
         # ctx.fill()
 
     def on_exit(self) -> None:
-        self._config.save(self._filename)
+        if self._config._write:
+            self._config.save(self._filename)
 
     def think(self, ins: InputState, delta_ms: int) -> None:
         super().think(ins, delta_ms)
-- 
GitLab