diff options
author | Vincent Sanders <vince@netsurf-browser.org> | 2011-01-19 23:12:37 +0000 |
---|---|---|
committer | Vincent Sanders <vince@netsurf-browser.org> | 2011-01-19 23:12:37 +0000 |
commit | 6a50bef84ae6a0a67e03ac1356f8d85d15fe09d6 (patch) | |
tree | 01f78f04b22517899f603787f6005f70b359271e /src/parse/language.c | |
parent | 63c21aca7c77b1d37cb64ad2b1fa76d6b0b92f48 (diff) | |
download | libcss-6a50bef84ae6a0a67e03ac1356f8d85d15fe09d6.tar.gz libcss-6a50bef84ae6a0a67e03ac1356f8d85d15fe09d6.tar.bz2 |
Merge parser autogeneration and string handling refactor branch r=jmb,kinnison,vince
svn path=/trunk/libcss/; revision=11408
Diffstat (limited to 'src/parse/language.c')
-rw-r--r-- | src/parse/language.c | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/src/parse/language.c b/src/parse/language.c index 739eba5..f8df2f1 100644 --- a/src/parse/language.c +++ b/src/parse/language.c @@ -1273,17 +1273,24 @@ css_error parseProperty(css_language *c, const css_token *property, handler = property_handlers[i - FIRST_PROP]; assert(handler != NULL); - /* Call it */ - error = handler(c, vector, ctx, &style); - if (error != CSS_OK) + /* allocate style */ + error = css_stylesheet_style_create(c->sheet, &style); + if (error != CSS_OK) return error; assert (style != NULL); + /* Call the handler */ + error = handler(c, vector, ctx, style); + if (error != CSS_OK) { + css_stylesheet_style_destroy(style); + return error; + } + /* Determine if this declaration is important or not */ error = parse_important(c, vector, ctx, &flags); if (error != CSS_OK) { - css_stylesheet_style_destroy(c->sheet, style, false); + css_stylesheet_style_destroy(style); return error; } @@ -1292,7 +1299,7 @@ css_error parseProperty(css_language *c, const css_token *property, token = parserutils_vector_iterate(vector, ctx); if (token != NULL) { /* Trailing junk, so discard declaration */ - css_stylesheet_style_destroy(c->sheet, style, false); + css_stylesheet_style_destroy(style); return CSS_INVALID; } @@ -1303,7 +1310,7 @@ css_error parseProperty(css_language *c, const css_token *property, /* Append style to rule */ error = css_stylesheet_rule_append_style(c->sheet, rule, style); if (error != CSS_OK) { - css_stylesheet_style_destroy(c->sheet, style, false); + css_stylesheet_style_destroy(style); return error; } |