@@ -742,12 +742,14 @@ lxb_css_selectors_state_compound_handler(lxb_css_parser_t *parser,
742
742
goto unexpected ;
743
743
}
744
744
745
+ if (status == LXB_STATUS_OK ) {
746
+ return true;
747
+ }
748
+
745
749
if (status == LXB_STATUS_ERROR_MEMORY_ALLOCATION ) {
746
750
return lxb_css_parser_memory_fail (parser );
747
751
}
748
752
749
- return true;
750
-
751
753
unexpected :
752
754
753
755
(void ) lxb_css_parser_states_to_root (parser );
@@ -827,11 +829,15 @@ lxb_css_selectors_state_compound_sub(lxb_css_parser_t *parser,
827
829
return lxb_css_parser_states_set_back (parser );
828
830
}
829
831
832
+ if (status == LXB_STATUS_OK ) {
833
+ return true;
834
+ }
835
+
830
836
if (status == LXB_STATUS_ERROR_MEMORY_ALLOCATION ) {
831
837
return lxb_css_parser_memory_fail (parser );
832
838
}
833
839
834
- return true ;
840
+ return lxb_css_parser_unexpected ( parser ) ;
835
841
}
836
842
837
843
static bool
@@ -874,11 +880,15 @@ lxb_css_selectors_state_compound_pseudo(lxb_css_parser_t *parser,
874
880
lxb_css_selectors_state_compound_pseudo );
875
881
}
876
882
883
+ if (status == LXB_STATUS_OK ) {
884
+ return true;
885
+ }
886
+
877
887
if (status == LXB_STATUS_ERROR_MEMORY_ALLOCATION ) {
878
888
return lxb_css_parser_memory_fail (parser );
879
889
}
880
890
881
- return true ;
891
+ return lxb_css_parser_unexpected ( parser ) ;
882
892
}
883
893
884
894
/*
@@ -1015,12 +1025,14 @@ lxb_css_selectors_state_simple_handler(lxb_css_parser_t *parser,
1015
1025
goto unexpected ;
1016
1026
}
1017
1027
1028
+ if (status == LXB_STATUS_OK ) {
1029
+ return true;
1030
+ }
1031
+
1018
1032
if (status == LXB_STATUS_ERROR_MEMORY_ALLOCATION ) {
1019
1033
return lxb_css_parser_memory_fail (parser );
1020
1034
}
1021
1035
1022
- return true;
1023
-
1024
1036
unexpected :
1025
1037
1026
1038
(void ) lxb_css_parser_states_set_back (parser );
@@ -1224,7 +1236,10 @@ lxb_css_selectors_state_attribute(lxb_css_parser_t *parser)
1224
1236
lxb_css_parser_token_status_m (parser , token );
1225
1237
1226
1238
if (token -> type != LXB_CSS_SYNTAX_TOKEN_IDENT ) {
1227
- goto failed ;
1239
+ attribute = & selector -> u .attribute ;
1240
+ attribute -> match = LXB_CSS_SELECTOR_MATCH_DASH ;
1241
+
1242
+ goto assignment ;
1228
1243
}
1229
1244
1230
1245
selector -> ns = selector -> name ;
@@ -1282,20 +1297,23 @@ lxb_css_selectors_state_attribute(lxb_css_parser_t *parser)
1282
1297
lxb_css_syntax_parser_consume (parser );
1283
1298
lxb_css_parser_token_status_m (parser , token );
1284
1299
1285
- if (token -> type != LXB_CSS_SYNTAX_TOKEN_DELIM
1286
- || lxb_css_syntax_token_delim_char (token ) != '=' )
1287
- {
1288
- goto failed ;
1289
- }
1290
-
1291
- lxb_css_syntax_parser_consume (parser );
1292
- lxb_css_parser_token_status_wo_ws_m (parser , token );
1293
1300
break ;
1294
1301
1295
1302
default :
1296
1303
goto failed ;
1297
1304
}
1298
1305
1306
+ assignment :
1307
+
1308
+ if (token -> type != LXB_CSS_SYNTAX_TOKEN_DELIM
1309
+ || lxb_css_syntax_token_delim_char (token ) != '=' )
1310
+ {
1311
+ goto failed ;
1312
+ }
1313
+
1314
+ lxb_css_syntax_parser_consume (parser );
1315
+ lxb_css_parser_token_status_wo_ws_m (parser , token );
1316
+
1299
1317
string_or_ident :
1300
1318
1301
1319
if (token -> type != LXB_CSS_SYNTAX_TOKEN_STRING
@@ -1861,18 +1879,17 @@ lxb_css_selectors_state_list_end(lxb_css_parser_t *parser,
1861
1879
lxb_css_parser_state_t * states ;
1862
1880
lxb_css_selectors_t * selectors = parser -> selectors ;
1863
1881
1864
- if (token -> type == LXB_CSS_SYNTAX_TOKEN_WHITESPACE ) {
1865
- lxb_css_syntax_parser_consume (parser );
1866
- lxb_css_parser_token_status_m (parser , token );
1867
- }
1868
-
1869
1882
if (lxb_css_parser_is_failed (parser )) {
1870
1883
token = lxb_css_selectors_state_function_error (parser , token );
1871
1884
if (token == NULL ) {
1872
1885
return lxb_css_parser_fail (parser ,
1873
1886
LXB_STATUS_ERROR_MEMORY_ALLOCATION );
1874
1887
}
1875
1888
}
1889
+ else if (token -> type == LXB_CSS_SYNTAX_TOKEN_WHITESPACE ) {
1890
+ lxb_css_syntax_parser_consume (parser );
1891
+ lxb_css_parser_token_status_m (parser , token );
1892
+ }
1876
1893
1877
1894
if (selectors -> parent != NULL && selectors -> list_last &&
1878
1895
selectors -> list_last -> prev != NULL )
0 commit comments