From 595fd538b4d3aedd55fa37c78fd017ddcee0fc46 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Deuc=D0=B5?= <shurd@sasktel.net>
Date: Mon, 5 Apr 2021 04:33:40 -0400
Subject: [PATCH] Guard against Seen being undefined when saving config.

---
 exec/imapservice.js | 30 ++++++++++++++++--------------
 1 file changed, 16 insertions(+), 14 deletions(-)

diff --git a/exec/imapservice.js b/exec/imapservice.js
index 2aa3ec7cdd..ecc384a786 100644
--- a/exec/imapservice.js
+++ b/exec/imapservice.js
@@ -1441,21 +1441,23 @@ function save_cfg(lck)
 			lock_cfg();
 		cfgfile.rewind();
 		for(sub in saved_config) {
-			scpy = JSON.parse(JSON.stringify(saved_config[sub].Seen));
-			s=saved_config[sub].Seen;
-			delete saved_config[sub].Seen;
-			cfgfile.iniSetObject(sub,saved_config[sub]);
-			if(s != undefined) {
-				// First, try any "binary" Seen compression
-				b = binify(s);
-				cfgfile.iniRemoveSection(sub+'.bseen');
-				if (b != undefined)
-					cfgfile.iniSetObject(sub+'.bseen',b);
-				cfgfile.iniRemoveSection(sub+'.seen');
-				if (Object.keys(s).length > 0)
-					cfgfile.iniSetObject(sub+'.seen',s);
+			if (saved_config[sub].Seen !== undefined) {
+				scpy = JSON.parse(JSON.stringify(saved_config[sub].Seen));
+				s=saved_config[sub].Seen;
+				delete saved_config[sub].Seen;
+				cfgfile.iniSetObject(sub,saved_config[sub]);
+				if(s != undefined) {
+					// First, try any "binary" Seen compression
+					b = binify(s);
+					cfgfile.iniRemoveSection(sub+'.bseen');
+					if (b != undefined)
+						cfgfile.iniSetObject(sub+'.bseen',b);
+					cfgfile.iniRemoveSection(sub+'.seen');
+					if (Object.keys(s).length > 0)
+						cfgfile.iniSetObject(sub+'.seen',s);
+				}
+				saved_config[sub].Seen=scpy;
 			}
-			saved_config[sub].Seen=scpy;
 		}
 		cfgfile.flush();
 		if (lck)
-- 
GitLab