summaryrefslogtreecommitdiff
path: root/src/parse/css21.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/parse/css21.c')
-rw-r--r--src/parse/css21.c62
1 files changed, 24 insertions, 38 deletions
diff --git a/src/parse/css21.c b/src/parse/css21.c
index fa98897..7aa63bd 100644
--- a/src/parse/css21.c
+++ b/src/parse/css21.c
@@ -506,9 +506,9 @@ css_error handleStartRuleset(css_css21 *c, const parserutils_vector *vector)
assert(c != NULL);
- rule = css_stylesheet_rule_create(c->sheet, CSS_RULE_SELECTOR);
- if (rule == NULL)
- return CSS_NOMEM;
+ error = css_stylesheet_rule_create(c->sheet, CSS_RULE_SELECTOR, &rule);
+ if (error != CSS_OK)
+ return error;
error = parseSelectorList(c, vector, rule);
if (error != CSS_OK) {
@@ -761,12 +761,8 @@ css_error parseClass(css_css21 *c, const parserutils_vector *vector, int *ctx,
if (token == NULL || token->type != CSS_TOKEN_IDENT)
return CSS_INVALID;
- *specific = css_stylesheet_selector_create(c->sheet,
- CSS_SELECTOR_CLASS, &token->data, NULL);
- if (*specific == NULL)
- return CSS_NOMEM;
-
- return CSS_OK;
+ return css_stylesheet_selector_create(c->sheet,
+ CSS_SELECTOR_CLASS, &token->data, NULL, specific);
}
css_error parseAttrib(css_css21 *c, const parserutils_vector *vector, int *ctx,
@@ -823,12 +819,9 @@ css_error parseAttrib(css_css21 *c, const parserutils_vector *vector, int *ctx,
return CSS_INVALID;
}
- *specific = css_stylesheet_selector_create(c->sheet, type,
- &name->data, value != NULL ? &value->data : NULL);
- if (*specific == NULL)
- return CSS_NOMEM;
-
- return CSS_OK;
+ return css_stylesheet_selector_create(c->sheet, type,
+ &name->data, value != NULL ? &value->data : NULL,
+ specific);
}
css_error parsePseudo(css_css21 *c, const parserutils_vector *vector, int *ctx,
@@ -866,13 +859,9 @@ css_error parsePseudo(css_css21 *c, const parserutils_vector *vector, int *ctx,
return CSS_INVALID;
}
- *specific = css_stylesheet_selector_create(c->sheet,
+ return css_stylesheet_selector_create(c->sheet,
CSS_SELECTOR_PSEUDO, &name->data,
- value != NULL ? &value->data : NULL);
- if (*specific == NULL)
- return CSS_NOMEM;
-
- return CSS_OK;
+ value != NULL ? &value->data : NULL, specific);
}
css_error parseSpecific(css_css21 *c,
@@ -890,10 +879,10 @@ css_error parseSpecific(css_css21 *c,
return CSS_INVALID;
if (token->type == CSS_TOKEN_HASH) {
- specific = css_stylesheet_selector_create(c->sheet,
- CSS_SELECTOR_ID, &token->data, NULL);
- if (specific == NULL)
- return CSS_NOMEM;
+ error = css_stylesheet_selector_create(c->sheet,
+ CSS_SELECTOR_ID, &token->data, NULL, &specific);
+ if (error != CSS_OK)
+ return error;
parserutils_vector_iterate(vector, ctx);
} else if (tokenIsChar(token, '.')) {
@@ -962,20 +951,21 @@ css_error parseSimpleSelector(css_css21 *c,
if (token->type == CSS_TOKEN_IDENT || tokenIsChar(token, '*')) {
/* Have element name */
- selector = css_stylesheet_selector_create(c->sheet,
- CSS_SELECTOR_ELEMENT, &token->data, NULL);
- if (selector == NULL)
- return CSS_NOMEM;
+ error = css_stylesheet_selector_create(c->sheet,
+ CSS_SELECTOR_ELEMENT, &token->data, NULL,
+ &selector);
+ if (error != CSS_OK)
+ return error;
parserutils_vector_iterate(vector, ctx);
} else {
/* Universal selector */
css_string name = { (uint8_t *) "*", 1 };
- selector = css_stylesheet_selector_create(c->sheet,
- CSS_SELECTOR_ELEMENT, &name, NULL);
- if (selector == NULL)
- return CSS_NOMEM;
+ error = css_stylesheet_selector_create(c->sheet,
+ CSS_SELECTOR_ELEMENT, &name, NULL, &selector);
+ if (error != CSS_OK)
+ return error;
/* Ensure we have at least one specific selector */
error = parseSpecific(c, vector, ctx, selector);
@@ -987,11 +977,7 @@ css_error parseSimpleSelector(css_css21 *c,
*result = selector;
- error = parseSelectorSpecifics(c, vector, ctx, selector);
- if (error != CSS_OK)
- return error;
-
- return CSS_OK;
+ return parseSelectorSpecifics(c, vector, ctx, selector);
}
css_error parseCombinator(css_css21 *c, const parserutils_vector *vector,