summaryrefslogtreecommitdiff
path: root/src/parse/language.c
diff options
context:
space:
mode:
authorJohn Mark Bell <jmb@netsurf-browser.org>2008-12-01 15:24:24 +0000
committerJohn Mark Bell <jmb@netsurf-browser.org>2008-12-01 15:24:24 +0000
commita7229c649b98f1c5f5ea97c486b03dcc814c16ea (patch)
treeeea4daca20a26875a8ae784b3e95387383469b55 /src/parse/language.c
parent7d11de5da22b343716734be3be1810cb3163a696 (diff)
downloadlibcss-a7229c649b98f1c5f5ea97c486b03dcc814c16ea.tar.gz
libcss-a7229c649b98f1c5f5ea97c486b03dcc814c16ea.tar.bz2
Given that we're going to be copying selector details, anyway, it seems pointless to create objects on the heap which can equally well be on the stack, given the shortness of their lifetime.
svn path=/trunk/libcss/; revision=5863
Diffstat (limited to 'src/parse/language.c')
-rw-r--r--src/parse/language.c32
1 files changed, 13 insertions, 19 deletions
diff --git a/src/parse/language.c b/src/parse/language.c
index 2bc5919..78b2045 100644
--- a/src/parse/language.c
+++ b/src/parse/language.c
@@ -74,13 +74,13 @@ static inline css_error handleDeclaration(css_language *c,
/* Selector list parsing */
static inline css_error parseClass(css_language *c,
const parserutils_vector *vector, int *ctx,
- css_selector_detail **specific);
+ css_selector_detail *specific);
static inline css_error parseAttrib(css_language *c,
const parserutils_vector *vector, int *ctx,
- css_selector_detail **specific);
+ css_selector_detail *specific);
static inline css_error parsePseudo(css_language *c,
const parserutils_vector *vector, int *ctx,
- css_selector_detail **specific);
+ css_selector_detail *specific);
static inline css_error parseSpecific(css_language *c,
const parserutils_vector *vector, int *ctx,
css_selector **parent);
@@ -528,7 +528,7 @@ css_error handleDeclaration(css_language *c, const parserutils_vector *vector)
******************************************************************************/
css_error parseClass(css_language *c, const parserutils_vector *vector,
- int *ctx, css_selector_detail **specific)
+ int *ctx, css_selector_detail *specific)
{
const css_token *token;
@@ -541,12 +541,12 @@ css_error parseClass(css_language *c, const parserutils_vector *vector,
if (token == NULL || token->type != CSS_TOKEN_IDENT)
return CSS_INVALID;
- return css_stylesheet_selector_detail_create(c->sheet,
+ return css_stylesheet_selector_detail_init(c->sheet,
CSS_SELECTOR_CLASS, token->idata, NULL, specific);
}
css_error parseAttrib(css_language *c, const parserutils_vector *vector,
- int *ctx, css_selector_detail **specific)
+ int *ctx, css_selector_detail *specific)
{
const css_token *token, *name, *value = NULL;
css_selector_type type = CSS_SELECTOR_ATTRIBUTE;
@@ -599,13 +599,13 @@ css_error parseAttrib(css_language *c, const parserutils_vector *vector,
return CSS_INVALID;
}
- return css_stylesheet_selector_detail_create(c->sheet, type,
+ return css_stylesheet_selector_detail_init(c->sheet, type,
name->idata, value != NULL ? value->idata : NULL,
specific);
}
css_error parsePseudo(css_language *c, const parserutils_vector *vector,
- int *ctx, css_selector_detail **specific)
+ int *ctx, css_selector_detail *specific)
{
const css_token *token, *name, *value = NULL;
@@ -639,7 +639,7 @@ css_error parsePseudo(css_language *c, const parserutils_vector *vector,
return CSS_INVALID;
}
- return css_stylesheet_selector_detail_create(c->sheet,
+ return css_stylesheet_selector_detail_init(c->sheet,
CSS_SELECTOR_PSEUDO, name->idata,
value != NULL ? value->idata : NULL, specific);
}
@@ -650,7 +650,7 @@ css_error parseSpecific(css_language *c,
{
css_error error;
const css_token *token;
- css_selector_detail *specific = NULL;
+ css_selector_detail specific;
/* specific -> [ HASH | class | attrib | pseudo ] */
@@ -659,7 +659,7 @@ css_error parseSpecific(css_language *c,
return CSS_INVALID;
if (token->type == CSS_TOKEN_HASH) {
- error = css_stylesheet_selector_detail_create(c->sheet,
+ error = css_stylesheet_selector_detail_init(c->sheet,
CSS_SELECTOR_ID, token->idata, NULL, &specific);
if (error != CSS_OK)
return error;
@@ -681,14 +681,8 @@ css_error parseSpecific(css_language *c,
return CSS_INVALID;
}
- error = css_stylesheet_selector_append_specific(c->sheet, parent,
- specific);
- if (error != CSS_OK) {
- css_stylesheet_selector_detail_destroy(c->sheet, specific);
- return error;
- }
-
- return CSS_OK;
+ return css_stylesheet_selector_append_specific(c->sheet, parent,
+ &specific);
}
css_error parseSelectorSpecifics(css_language *c,