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");