summaryrefslogtreecommitdiff
path: root/css
diff options
context:
space:
mode:
Diffstat (limited to 'css')
-rw-r--r--css/css.c4
-rw-r--r--css/css.h1
-rw-r--r--css/parser.y6
3 files changed, 7 insertions, 4 deletions
diff --git a/css/css.c b/css/css.c
index b6d872e09..0fea19c92 100644
--- a/css/css.c
+++ b/css/css.c
@@ -388,7 +388,7 @@ bool css_convert(struct content *c, int width, int height)
unsigned int i;
int token;
void *parser;
- struct css_parser_params param = {false, c, 0, false, false};
+ struct css_parser_params param = {false, c, 0, false, false, false};
struct css_parser_token token_data;
union content_msg_data msg_data;
@@ -1478,7 +1478,7 @@ void css_parse_property_list(struct content *c, struct css_style * style,
unsigned int i;
int token;
void *parser;
- struct css_parser_params param = {true, c, 0, false, false};
+ struct css_parser_params param = {true, c, 0, false, false, false};
struct css_parser_token token_data;
const struct css_parser_token token_start = { "{", 1 };
const struct css_parser_token token_end = { "}", 1 };
diff --git a/css/css.h b/css/css.h
index adddbf987..b420c11f6 100644
--- a/css/css.h
+++ b/css/css.h
@@ -588,6 +588,7 @@ struct css_parser_params {
struct css_node *declaration;
bool syntax_error;
bool memory_error;
+ bool had_ruleset;
};
/** Token type for the CSS parser. */
diff --git a/css/parser.y b/css/parser.y
index 34aefabf1..2ede0ec25 100644
--- a/css/parser.y
+++ b/css/parser.y
@@ -47,7 +47,7 @@ statement ::= at_rule.
at_rule ::= ATKEYWORD ws any_list block.
at_rule ::= ATKEYWORD(A) ws any_list(B) SEMI ws.
{ if ((A.length == 7) && (strncasecmp(A.text, "@import", 7) == 0)
- && B)
+ && B && !param->had_ruleset)
css_atimport(param->stylesheet, B);
css_free_node(B); }
@@ -59,8 +59,10 @@ block_body ::= block_body ATKEYWORD ws.
block_body ::= block_body SEMI ws.
ruleset ::= selector_list(A) LBRACE ws declaration_list(B) RBRACE ws.
- { if (A && B)
+ { if (A && B) {
+ param->had_ruleset = true;
css_add_ruleset(param->stylesheet, A, B);
+ }
else
css_free_selector(A);
css_free_node(B); }