Fix broken token extraction

Related issue:
- https://github.com/uBlockOrigin/uBlock-issues/issues/1367

Regression from:
- 6ac09a2856

Need to mind wildcards adjacent to extracted token.
This commit is contained in:
Raymond Hill 2020-11-29 07:38:15 -05:00
parent da01ea4671
commit dac8d6becb
No known key found for this signature in database
GPG Key ID: 25E1490B761470C2
1 changed files with 16 additions and 7 deletions

View File

@ -3152,14 +3152,23 @@ const FilterParser = class {
for (;;) {
const match = this.reToken.exec(pattern);
if ( match === null ) { break; }
const badness = match[0].length > 1
? this.badTokens.get(match[0]) || 0
: 1;
if ( badness < bestBadness ) {
bestMatch = match;
if ( badness === 0 ) { break; }
bestBadness = badness;
const token = match[0];
const badness = token.length > 1 ? this.badTokens.get(token) || 0 : 1;
if ( badness >= bestBadness ) { continue; }
if ( match.index > 0 ) {
const c = pattern.charCodeAt(match.index - 1);
if ( c === 0x2A /* '*' */ ) { continue; }
}
if ( token.length < this.maxTokenLen ) {
const lastIndex = this.reToken.lastIndex;
if ( lastIndex < pattern.length ) {
const c = pattern.charCodeAt(lastIndex);
if ( c === 0x2A /* '*' */ ) { continue; }
}
}
bestMatch = match;
if ( badness === 0 ) { break; }
bestBadness = badness;
}
if ( bestMatch !== null ) {
this.token = bestMatch[0];