Skip to content

Commit

Permalink
Fix syntax highlighter throwing with invalid patterns
Browse files Browse the repository at this point in the history
The syntax highlighter could throw with some invalid static
network filter patterns. This was caused by the syntax
highlighter still drilling down the pattern parts after
having told codemirror to style the whole pattern as an
error, thus causing the codemirror stream position to go
backward.
  • Loading branch information
gorhill committed Jun 28, 2023
1 parent ea6e254 commit 8b7a526
Showing 1 changed file with 11 additions and 5 deletions.
16 changes: 11 additions & 5 deletions src/js/codemirror/ubo-static-filtering.js
Expand Up @@ -59,16 +59,20 @@ CodeMirror.defineMode('ubo-static-filtering', function() {
let lastNetOptionType = 0;

const redirectTokenStyle = node => {
const rawToken = astParser.getNodeString(node);
const rawToken = astParser.getNodeString(node || currentWalkerNode);
const { token } = sfp.parseRedirectValue(rawToken);
return redirectNames.has(token) ? 'value' : 'value warning';
};

const nodeHasError = node => {
return astParser.getNodeFlags(
node || currentWalkerNode, sfp.NODE_FLAG_ERROR
) !== 0;
};

const colorFromAstNode = function() {
if ( astParser.nodeIsEmptyString(currentWalkerNode) ) { return '+'; }
if ( astParser.getNodeFlags(currentWalkerNode, sfp.NODE_FLAG_ERROR) !== 0 ) {
return 'error';
}
if ( nodeHasError() ) { return 'error'; }
const nodeType = astParser.getNodeType(currentWalkerNode);
switch ( nodeType ) {
case sfp.NODE_TYPE_WHITESPACE:
Expand Down Expand Up @@ -199,7 +203,7 @@ CodeMirror.defineMode('ubo-static-filtering', function() {
switch ( lastNetOptionType ) {
case sfp.NODE_TYPE_NET_OPTION_NAME_REDIRECT:
case sfp.NODE_TYPE_NET_OPTION_NAME_REDIRECTRULE:
return redirectTokenStyle(currentWalkerNode);
return redirectTokenStyle();
default:
break;
}
Expand Down Expand Up @@ -234,6 +238,8 @@ CodeMirror.defineMode('ubo-static-filtering', function() {
return 'comment';
}
currentWalkerNode = astWalker.reset();
} else if ( nodeHasError() ) {
currentWalkerNode = astWalker.right();
} else {
currentWalkerNode = astWalker.next();
}
Expand Down

0 comments on commit 8b7a526

Please sign in to comment.