@@ -1737,16 +1737,17 @@ css_error parseSelector(css_language *c, const parserutils_vector *vector,
17371737 error = parseSimpleSelector (c , vector , ctx , & selector );
17381738 if (error != CSS_OK )
17391739 return error ;
1740- * result = selector ;
17411740
17421741 while ((token = parserutils_vector_peek (vector , * ctx )) != NULL &&
17431742 tokenIsChar (token , ',' ) == false) {
17441743 css_combinator comb = CSS_COMBINATOR_NONE ;
17451744 css_selector * other = NULL ;
17461745
17471746 error = parseCombinator (c , vector , ctx , & comb );
1748- if (error != CSS_OK )
1747+ if (error != CSS_OK ) {
1748+ css__stylesheet_selector_destroy (c -> sheet , selector );
17491749 return error ;
1750+ }
17501751
17511752 /* In the case of "html , body { ... }", the whitespace after
17521753 * "html" and "body" will be considered an ancestor combinator.
@@ -1761,21 +1762,24 @@ css_error parseSelector(css_language *c, const parserutils_vector *vector,
17611762 continue ;
17621763
17631764 error = parseSimpleSelector (c , vector , ctx , & other );
1764- if (error != CSS_OK )
1765+ if (error != CSS_OK ) {
1766+ css__stylesheet_selector_destroy (c -> sheet , selector );
17651767 return error ;
1766-
1767- * result = other ;
1768+ }
17681769
17691770 error = css__stylesheet_selector_combine (c -> sheet ,
17701771 comb , selector , other );
17711772 if (error != CSS_OK ) {
17721773 css__stylesheet_selector_destroy (c -> sheet , selector );
1774+ css__stylesheet_selector_destroy (c -> sheet , other );
17731775 return error ;
17741776 }
17751777
17761778 selector = other ;
17771779 }
17781780
1781+ * result = selector ;
1782+
17791783 return CSS_OK ;
17801784}
17811785
0 commit comments