From bd44d973cdde8f2d0d7f4a402e6e2d535e44fc82 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20H=C3=A4ggmark?= Date: Mon, 15 Jun 2020 11:49:38 +0200 Subject: [PATCH] Variables: Fixes maximum call stack bug for empty value (#25503) --- public/app/core/services/bridge_srv.test.ts | 28 +++++++++++++++++++++ public/app/core/services/bridge_srv.ts | 2 +- 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/public/app/core/services/bridge_srv.test.ts b/public/app/core/services/bridge_srv.test.ts index 00767d2cdb0..f668e0f988e 100644 --- a/public/app/core/services/bridge_srv.test.ts +++ b/public/app/core/services/bridge_srv.test.ts @@ -12,4 +12,32 @@ describe('when checking template variables', () => { expect(findTemplateVarChanges(b, a)).toEqual({ 'var-xyz': 'hello' }); expect(findTemplateVarChanges(a, b)).toEqual({ 'var-xyz': '' }); }); + + it('then should ignore equal values', () => { + const a: UrlQueryMap = { + 'var-xyz': 'hello', + bbb: 'ignore me', + }; + const b: UrlQueryMap = { + 'var-xyz': 'hello', + aaa: 'ignore me', + }; + + expect(findTemplateVarChanges(b, a)).toBeUndefined(); + expect(findTemplateVarChanges(a, b)).toBeUndefined(); + }); + + it('then should ignore equal values with empty values', () => { + const a: UrlQueryMap = { + 'var-xyz': '', + bbb: 'ignore me', + }; + const b: UrlQueryMap = { + 'var-xyz': '', + aaa: 'ignore me', + }; + + expect(findTemplateVarChanges(b, a)).toBeUndefined(); + expect(findTemplateVarChanges(a, b)).toBeUndefined(); + }); }); diff --git a/public/app/core/services/bridge_srv.ts b/public/app/core/services/bridge_srv.ts index ca7a3442aab..440385d887d 100644 --- a/public/app/core/services/bridge_srv.ts +++ b/public/app/core/services/bridge_srv.ts @@ -124,7 +124,7 @@ export function findTemplateVarChanges(query: UrlQueryMap, old: UrlQueryMap): Ur if (!key.startsWith('var-')) { continue; } - if (!query[key]) { + if (!query.hasOwnProperty(key)) { changes[key] = ''; // removed count++; }