From 1b3c2557b88dc31bf3494f5509f158c64a6b8b6c Mon Sep 17 00:00:00 2001 From: Cameron Fischer Date: Mon, 7 Feb 2022 11:39:29 -0500 Subject: [PATCH] Fixed issue: deprecated regexp could cause crash (#6438) * Fixed issue: deprecated regexp could cause crash * Different fix which will bother plugins less --- core/modules/filters.js | 6 ++++-- editions/test/tiddlers/tests/test-filters.js | 10 ++++++++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/core/modules/filters.js b/core/modules/filters.js index 06fa603b5..e0a2779e3 100644 --- a/core/modules/filters.js +++ b/core/modules/filters.js @@ -95,10 +95,12 @@ function parseFilterOperation(operators,filterString,p) { if(nextBracketPos === -1) { throw "Missing closing bracket in filter expression"; } - if(!operator.regexp) { + if(operator.regexp) { + operand.text = ""; + } else { operand.text = filterString.substring(p,nextBracketPos); - operator.operands.push(operand); } + operator.operands.push(operand); p = nextBracketPos + 1; } diff --git a/editions/test/tiddlers/tests/test-filters.js b/editions/test/tiddlers/tests/test-filters.js index 05c5e3c83..12e24bcc5 100644 --- a/editions/test/tiddlers/tests/test-filters.js +++ b/editions/test/tiddlers/tests/test-filters.js @@ -256,6 +256,16 @@ Tests the filtering mechanism. expect(wiki.filterTiddlers("[modifier/Jo/]").join(",")).toBe("TiddlerOne,$:/TiddlerTwo,Tiddler Three,a fourth tiddler,one"); expect(console.log).toHaveBeenCalledWith("WARNING: Filter", "modifier", "has a deprecated regexp operand", /Jo/); }); + + it("should handle regular expression operands without crashing", function() { + spyOn(console, 'log'); + // We don't really care about the results. Just don't get RSoD. + expect(() => wiki.filterTiddlers("[all/current/]")).not.toThrow(); + expect(() => wiki.filterTiddlers("[prefix/anything/]")).not.toThrow(); + expect(() => wiki.filterTiddlers("[title/anything/]")).not.toThrow(); + expect(() => wiki.filterTiddlers("[/anything/]")).not.toThrow(); + expect(() => wiki.filterTiddlers("[//]")).not.toThrow(); + }); it("should handle the prefix operator", function() { expect(wiki.filterTiddlers("[prefix[Tiddler]]").join(",")).toBe("TiddlerOne,Tiddler Three");