summaryrefslogtreecommitdiff
path: root/src/parse
diff options
context:
space:
mode:
Diffstat (limited to 'src/parse')
-rw-r--r--src/parse/language.c13
-rw-r--r--src/parse/parse.c35
-rw-r--r--src/parse/parse.h4
-rw-r--r--src/parse/properties.c22
4 files changed, 40 insertions, 34 deletions
diff --git a/src/parse/language.c b/src/parse/language.c
index cff66df..691dff3 100644
--- a/src/parse/language.c
+++ b/src/parse/language.c
@@ -36,7 +36,7 @@ struct css_language {
enum {
BEFORE_CHARSET,
BEFORE_RULES,
- HAD_RULE,
+ HAD_RULE
} state; /**< State flag, for at-rule handling */
/** \todo These should be statically allocated */
@@ -129,6 +129,7 @@ css_error css_language_create(css_stylesheet *sheet, css_parser *parser,
parserutils_error perror;
lwc_error lerror;
css_error error;
+ int i;
if (sheet == NULL || parser == NULL || alloc == NULL ||
language == NULL)
@@ -147,7 +148,7 @@ css_error css_language_create(css_stylesheet *sheet, css_parser *parser,
}
/* Intern all known strings */
- for (int i = 0; i < LAST_KNOWN; i++) {
+ for (i = 0; i < LAST_KNOWN; i++) {
lerror = lwc_context_intern(sheet->dictionary,
stringmap[i].data,
stringmap[i].len,
@@ -354,14 +355,14 @@ css_error handleStartAtRule(css_language *c, const parserutils_vector *vector)
{
parserutils_error perror;
context_entry entry = { CSS_PARSER_START_ATRULE, NULL };
-
- assert(c != NULL);
-
- /* vector contains: ATKEYWORD ws any0 */
const css_token *token = NULL;
const css_token *atkeyword = NULL;
int32_t ctx = 0;
+ /* vector contains: ATKEYWORD ws any0 */
+
+ assert(c != NULL);
+
atkeyword = parserutils_vector_iterate(vector, &ctx);
consumeWhitespace(vector, &ctx);
diff --git a/src/parse/parse.c b/src/parse/parse.c
index f195c50..cc24385 100644
--- a/src/parse/parse.c
+++ b/src/parse/parse.c
@@ -583,10 +583,11 @@ css_error getToken(css_parser *parser, const css_token **token)
if (t->type < CSS_TOKEN_LAST_INTERN && t->data.data != NULL) {
if (t->type < CSS_TOKEN_LAST_INTERN_LOWER) {
- uint8_t temp[t->data.len];
+ uint8_t *temp = alloca(t->data.len);
bool lower = false;
+ size_t i;
- for (size_t i = 0; i < t->data.len; i++) {
+ for (i = 0; i < t->data.len; i++) {
uint8_t c = t->data.data[i];
if ('A' <= c && c <= 'Z') {
@@ -828,6 +829,7 @@ css_error parseRuleset(css_parser *parser)
{
enum { Initial = 0, Brace = 1, WS = 2 };
parser_state *state = parserutils_stack_get_current(parser->states);
+ parser_state to = { sRulesetEnd, Initial };
const css_token *token;
css_error error;
@@ -916,8 +918,6 @@ css_error parseRuleset(css_parser *parser)
break;
}
- parser_state to = { sRulesetEnd, Initial };
-
return transitionNoRet(parser, to);
}
@@ -1003,6 +1003,7 @@ css_error parseAtRule(css_parser *parser)
{
enum { Initial = 0, WS = 1, Any = 2, AfterAny = 3 };
parser_state *state = parserutils_stack_get_current(parser->states);
+ parser_state to = { sAtRuleEnd, Initial };
const css_token *token;
css_error error;
@@ -1065,8 +1066,6 @@ css_error parseAtRule(css_parser *parser)
break;
}
- parser_state to = { sAtRuleEnd, Initial };
-
return transitionNoRet(parser, to);
}
@@ -1450,6 +1449,7 @@ css_error parseDeclList(css_parser *parser)
{
enum { Initial = 0, WS = 1 };
parser_state *state = parserutils_stack_get_current(parser->states);
+ parser_state to = { sDeclListEnd, Initial };
const css_token *token;
css_error error;
@@ -1493,8 +1493,6 @@ css_error parseDeclList(css_parser *parser)
break;
}
- parser_state to = { sDeclListEnd, Initial };
-
return transitionNoRet(parser, to);
}
@@ -1502,6 +1500,7 @@ css_error parseDeclListEnd(css_parser *parser)
{
enum { Initial = 0, AfterDeclaration = 1 };
parser_state *state = parserutils_stack_get_current(parser->states);
+ parser_state to = { sDeclList, Initial };
const css_token *token;
css_error error;
@@ -1540,8 +1539,6 @@ css_error parseDeclListEnd(css_parser *parser)
break;
}
- parser_state to = { sDeclList, Initial };
-
return transitionNoRet(parser, to);
}
@@ -1584,6 +1581,7 @@ css_error parseValue1(css_parser *parser)
{
enum { Initial = 0, AfterValue = 1 };
parser_state *state = parserutils_stack_get_current(parser->states);
+ parser_state to = { sValue0, Initial };
const css_token *token;
css_error error;
@@ -1622,8 +1620,6 @@ css_error parseValue1(css_parser *parser)
break;
}
- parser_state to = { sValue0, Initial };
-
return transitionNoRet(parser, to);
}
@@ -1980,6 +1976,8 @@ css_error parseMalformedDeclaration(css_parser *parser)
}
case Go:
while (1) {
+ char want;
+ char *match;
const char *data;
size_t len;
@@ -2002,8 +2000,7 @@ css_error parseMalformedDeclaration(css_parser *parser)
data[0] != ';'))
continue;
- char want;
- char *match = parserutils_stack_get_current(
+ match = parserutils_stack_get_current(
parser->open_items);
/* If the stack is empty, then we're done if we've got
@@ -2078,6 +2075,8 @@ css_error parseMalformedSelector(css_parser *parser)
/* Fall through */
case Go:
while (1) {
+ char want;
+ char *match;
const char *data;
size_t len;
@@ -2099,8 +2098,7 @@ css_error parseMalformedSelector(css_parser *parser)
data[0] != '(' && data[0] != ')'))
continue;
- char want;
- char *match = parserutils_stack_get_current(
+ match = parserutils_stack_get_current(
parser->open_items);
/* Get corresponding start tokens for end tokens */
@@ -2176,6 +2174,8 @@ css_error parseMalformedAtRule(css_parser *parser)
}
case Go:
while (1) {
+ char want;
+ char *match;
const char *data;
size_t len;
@@ -2198,8 +2198,7 @@ css_error parseMalformedAtRule(css_parser *parser)
data[0] != ';'))
continue;
- char want;
- char *match = parserutils_stack_get_current(
+ match = parserutils_stack_get_current(
parser->open_items);
/* If we have a semicolon, then we're either done or
diff --git a/src/parse/parse.h b/src/parse/parse.h
index 3a460e6..c590858 100644
--- a/src/parse/parse.h
+++ b/src/parse/parse.h
@@ -31,7 +31,7 @@ typedef enum css_parser_event {
CSS_PARSER_START_BLOCK,
CSS_PARSER_END_BLOCK,
CSS_PARSER_BLOCK_CONTENT,
- CSS_PARSER_DECLARATION,
+ CSS_PARSER_DECLARATION
} css_parser_event;
typedef css_error (*css_parser_event_handler)(css_parser_event type,
@@ -42,7 +42,7 @@ typedef css_error (*css_parser_event_handler)(css_parser_event type,
*/
typedef enum css_parser_opttype {
CSS_PARSER_QUIRKS,
- CSS_PARSER_EVENT_HANDLER,
+ CSS_PARSER_EVENT_HANDLER
} css_parser_opttype;
/**
diff --git a/src/parse/properties.c b/src/parse/properties.c
index d08d23a..6294a6e 100644
--- a/src/parse/properties.c
+++ b/src/parse/properties.c
@@ -1390,9 +1390,10 @@ css_error parse_clip(css_language *c,
value = CLIP_AUTO;
} else if (token->type == CSS_TOKEN_FUNCTION &&
token->ilower == c->strings[RECT]) {
+ int i;
value = CLIP_SHAPE_RECT;
- for (int i = 0; i < 4; i++) {
+ for (i = 0; i < 4; i++) {
consumeWhitespace(vector, ctx);
token = parserutils_vector_peek(vector, *ctx);
@@ -1470,9 +1471,10 @@ css_error parse_clip(css_language *c,
memcpy((*result)->bytecode, &opv, sizeof(opv));
if ((flags & FLAG_INHERIT) == false &&
(value & CLIP_SHAPE_MASK) == CLIP_SHAPE_RECT) {
+ int i;
uint8_t *ptr = ((uint8_t *) (*result)->bytecode) + sizeof(opv);
- for (int i = 0; i < num_lengths; i++) {
+ for (i = 0; i < num_lengths; i++) {
memcpy(ptr, &length[i], sizeof(length[i]));
ptr += sizeof(length[i]);
memcpy(ptr, &unit[i], sizeof(unit[i]));
@@ -2827,7 +2829,8 @@ css_error parse_font_family(css_language *c,
uint16_t len = lwc_string_length(token->idata);
const css_token *temp_token = token;
lwc_error lerror;
-
+ uint8_t *buf;
+ uint8_t *p;
temp_ctx = *ctx;
@@ -2856,8 +2859,8 @@ css_error parse_font_family(css_language *c,
vector, &temp_ctx);
}
- uint8_t buf[len];
- uint8_t *p = buf;
+ buf = alloca(len);
+ p = buf;
memcpy(p, lwc_string_data(token->idata), lwc_string_length(token->idata));
p += lwc_string_length(token->idata);
@@ -6009,6 +6012,8 @@ css_error parse_voice_family(css_language *c,
uint16_t len = lwc_string_length(token->idata);
const css_token *temp_token = token;
lwc_error lerror;
+ uint8_t *buf;
+ uint8_t *p;
temp_ctx = *ctx;
@@ -6036,8 +6041,8 @@ css_error parse_voice_family(css_language *c,
vector, &temp_ctx);
}
- uint8_t buf[len];
- uint8_t *p = buf;
+ buf = alloca(len);
+ p = buf;
memcpy(p, lwc_string_data(token->idata), lwc_string_length(token->idata));
p += lwc_string_length(token->idata);
@@ -6657,9 +6662,10 @@ css_error parse_colour_specifier(css_language *c,
return error;
} else if (token->type == CSS_TOKEN_FUNCTION) {
if (token->ilower == c->strings[RGB]) {
+ int i;
css_token_type valid = CSS_TOKEN_NUMBER;
- for (int i = 0; i < 3; i++) {
+ for (i = 0; i < 3; i++) {
css_fixed num;
size_t consumed = 0;
uint8_t *component = i == 0 ? &r