From 567d124a6ae8e20c25901740a29b45d43f5154e2 Mon Sep 17 00:00:00 2001 From: Gordon Williams Date: Thu, 7 Nov 2019 08:43:08 +0000 Subject: [PATCH] make boot menu more resilient to bad app data --- apps/bootloader.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/apps/bootloader.js b/apps/bootloader.js index a4aed10ef..28c74a10e 100644 --- a/apps/bootloader.js +++ b/apps/bootloader.js @@ -8,7 +8,10 @@ setWatch(function() { Bangle.removeAllListeners(); var s = require("Storage"); - var apps = s.list().filter(a=>a[0]=='+').map(app=>s.readJSON(app)); + apps = s.list().filter(a=>a[0]=='+').map(app=>{ + try { return s.readJSON(app); } + catch (e) { return {name:"DEAD: "+app.substr(1)} } + }); var selected = 0; var menuScroll = 0; var menuShowing = false; @@ -34,8 +37,10 @@ setWatch(function() { g.drawRect(0,y,239,y+63); } else g.clearRect(0,y,239,y+63); - if (app.icon) g.drawImage(s.read(app.icon),8,y+8); g.drawString(app.name,64,y+32); + var icon=undefined; + if (app.icon) icon = s.read(app.icon); + if (icon) try {g.drawImage(icon,8,y+8);} catch(e){} } } drawMenu(); @@ -52,6 +57,7 @@ setWatch(function() { } }, BTN3, {repeat:true}); setWatch(function() { // run + if (!apps[selected].src) return; clearWatch(); g.clear(); g.setFont("6x8",2);