From f4d934d341056142da1212c845eeeb170fd452c2 Mon Sep 17 00:00:00 2001 From: Agando Date: Tue, 26 May 2026 06:00:26 +0200 Subject: auto: 2026-05-26_06:00 changes --- modules/core/virtual-fs.js | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) (limited to 'modules/core/virtual-fs.js') diff --git a/modules/core/virtual-fs.js b/modules/core/virtual-fs.js index a505699..68d02bf 100644 --- a/modules/core/virtual-fs.js +++ b/modules/core/virtual-fs.js @@ -8,6 +8,12 @@ class VirtualFileSystem { try { const saved = localStorage.getItem('webx11_filesystem'); if (saved) { + // Safety: refuse to load if data is excessively large (>512KB raw) + if (saved.length > 524288) { + console.warn('FS data too large (' + (saved.length/1024).toFixed(0) + 'KB), skipping load'); + localStorage.removeItem('webx11_filesystem'); + return; + } const data = JSON.parse(saved); this.root = data.root || this.root; this.currentPath = data.currentPath || []; @@ -15,11 +21,16 @@ class VirtualFileSystem { } catch (e) { console.error('FS load error:', e); } } saveToStorage() { - try { - localStorage.setItem('webx11_filesystem', JSON.stringify({ - root: this.root, currentPath: this.currentPath - })); - } catch (e) { console.error('FS save error:', e); } + if (this._storageSavePending) return; + this._storageSavePending = true; + setTimeout(() => { + this._storageSavePending = false; + try { + localStorage.setItem('webx11_filesystem', JSON.stringify({ + root: this.root, currentPath: this.currentPath + })); + } catch (e) { console.error('FS save error:', e); } + }, 2000); } getCurrentDir() { let dir = this.root; -- cgit v1.2.3