From 6b32701b6611d3d5c5a4f6001d9265115648bf16 Mon Sep 17 00:00:00 2001 From: Tag Date: Mon, 24 Oct 2022 10:28:02 -0700 Subject: [PATCH] Data validation avoids crash on CR startup --- package.nw/lib/roster.js | 60 +++++++++++++++++++++------------------- package.nw/package.json | 4 +-- 2 files changed, 34 insertions(+), 30 deletions(-) diff --git a/package.nw/lib/roster.js b/package.nw/lib/roster.js index efeeaf9..30745fa 100644 --- a/package.nw/lib/roster.js +++ b/package.nw/lib/roster.js @@ -1571,6 +1571,8 @@ function resize() function init() { + window.opener.g_rosterInitialized = true; + g_callsignDatabaseDXCC = window.opener.g_callsignDatabaseDXCC; g_callsignDatabaseUS = window.opener.g_callsignDatabaseUS; g_callsignDatabaseUSplus = window.opener.g_callsignDatabaseUSplus; @@ -2101,8 +2103,7 @@ function init() maxFreqView.innerHTML = maxFreq.value = g_rosterSettings.maxFreq; maxLoTW.value = g_rosterSettings.maxLoTW; - maxLoTWView.innerHTML = - maxLoTW.value < 27 ? Number(maxLoTW.value).toYM() : ""; + maxLoTWView.innerHTML = maxLoTW.value < 27 ? Number(maxLoTW.value).toYM() : ""; cqOnly.checked = g_rosterSettings.cqOnly; noMyDxcc.checked = g_rosterSettings.noMyDxcc; @@ -2134,8 +2135,6 @@ function init() g_timerInterval = nodeTimers.setInterval(realtimeRoster, 1000); updateInstances(); - - window.opener.g_rosterInitialized = true; } function handleContextMenu(ev) @@ -3180,44 +3179,49 @@ function testAcqz(award, obj, baseHash) function scoreAnumsfx(award, obj) { - let test = g_awards[award.sponsor].awards[award.name]; - let px = obj.px.substr(0, obj.px.length - 1); - let suf = obj.DEcall.replace(px, ""); - suf = suf.substr(0, test.rule.numsfx[0][0].length); - for (const i in test.rule.numsfx) + if (obj.px) { - for (const s in test.rule.numsfx[i]) + let test = g_awards[award.sponsor].awards[award.name]; + let px = obj.px.substr(0, obj.px.length - 1); + let suf = obj.DEcall.replace(px, ""); + suf = suf.substr(0, test.rule.numsfx[0][0].length); + for (const i in test.rule.numsfx) { - if (suf.indexOf(test.rule.numsfx[i][s]) == 0) + for (const s in test.rule.numsfx[i]) { - if (!(i in award.stat)) award.stat[i] = newAwardCountObject(); - return workAwardObject( - award.stat[i], - obj.band, - obj.mode, - obj.digital, - obj.phone - ); + if (suf.indexOf(test.rule.numsfx[i][s]) == 0) + { + if (!(i in award.stat)) award.stat[i] = newAwardCountObject(); + return workAwardObject( + award.stat[i], + obj.band, + obj.mode, + obj.digital, + obj.phone + ); + } } } } - return false; } function testAnumsfx(award, obj) { - let test = g_awards[award.sponsor].awards[award.name]; - let px = obj.px.substr(0, obj.px.length - 1); - let suf = obj.DEcall.replace(px, ""); - suf = suf.substr(0, test.rule.numsfx[0][0].length); - for (const i in test.rule.numsfx) + if (obj.px) { - for (const s in test.rule.numsfx[i]) + let test = g_awards[award.sponsor].awards[award.name]; + let px = obj.px.substr(0, obj.px.length - 1); + let suf = obj.DEcall.replace(px, ""); + suf = suf.substr(0, test.rule.numsfx[0][0].length); + for (const i in test.rule.numsfx) { - if (suf.indexOf(test.rule.numsfx[i][s]) == 0) + for (const s in test.rule.numsfx[i]) { - return false; + if (suf.indexOf(test.rule.numsfx[i][s]) == 0) + { + return false; + } } } } diff --git a/package.nw/package.json b/package.nw/package.json index c87f43d..b4ec58e 100644 --- a/package.nw/package.json +++ b/package.nw/package.json @@ -1,8 +1,8 @@ { "name": "GridTracker", "product_string_do_not_use": "gridtracker", - "version": "1.22.1016", - "betaVersion": "Harvest", + "version": "1.22.1024", + "betaVersion": "Ernte", "description": "GridTracker, an amateur radio companion", "author": "GridTracker.org", "license": "BSD-3-Clause",