diff --git a/src/dom/scanner.h b/src/dom/scanner.h index 9b247558..fe010afc 100644 --- a/src/dom/scanner.h +++ b/src/dom/scanner.h @@ -24,6 +24,9 @@ struct dom_scanner_token { struct dom_string string; }; +#define skip_dom_scanner_token_char(token) \ + do { (token)->string.string++; (token)->string.length--; } while (0) + /* The naming of these two macros is a bit odd .. we compare often with * "static" strings (I don't have a better word) so the macro name should * be short. --jonas */ diff --git a/src/dom/select.c b/src/dom/select.c index 7bb0e640..c4d7cf0c 100644 --- a/src/dom/select.c +++ b/src/dom/select.c @@ -183,7 +183,7 @@ get_scanner_token_number(struct dom_scanner_token *token) return -1; number += token->string.string[0] - '0'; - token->string.string++, token->string.length--; + skip_dom_scanner_token_char(token); } return number; @@ -414,7 +414,7 @@ parse_dom_select(struct dom_select *select, struct dom_stack *stack, case CSS_TOKEN_IDENT: sel.node.type = DOM_NODE_ELEMENT; copy_dom_string(&sel.node.string, &token->string); - if (token->string.length == 1 && token->string.string[0] == '*') + if (dom_scanner_token_contains(token, "*")) sel.match.element |= DOM_SELECT_ELEMENT_UNIVERSAL; break; @@ -424,7 +424,7 @@ parse_dom_select(struct dom_select *select, struct dom_stack *stack, sel.node.type = DOM_NODE_ATTRIBUTE; sel.match.attribute |= DOM_SELECT_ATTRIBUTE_ID; /* Skip the leading '#'. */ - token->string.string++, token->string.length--; + skip_dom_scanner_token_char(token); break; case '[':