summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--attocc.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/attocc.c b/attocc.c
index bb6b248..1015747 100644
--- a/attocc.c
+++ b/attocc.c
@@ -489,7 +489,8 @@ struct token *tokenize(char *source) {
char *ident_start = p;
for (char c; (c = *p++) && is_ident(c);)
;
- int ident_len = p - ident_start - 1;
+ p--;
+ int ident_len = p - ident_start;
char *ident_str = realloc_failsafe(NULL, ident_len + 1);
for (int i = 0; i < ident_len; i++)
ident_str[i] = ident_start[i];
@@ -649,6 +650,12 @@ char parse_enum_decl(struct token *tokens, struct node **node) {
if (tokens[p].kind == TOK_END)
return 1;
+ if (tokens[p].kind == TOK_SEPERATOR &&
+ tokens[p].data.seperator == SEP_COMMA) {
+ p++;
+ continue;
+ }
+
if (tokens[p].kind != TOK_IDENTIFIER)
return 1;
@@ -671,7 +678,7 @@ char parse_enum_decl(struct token *tokens, struct node **node) {
num_members++;
members =
- realloc_failsafe(NULL, sizeof(struct enum_member) * num_members);
+ realloc_failsafe(members, sizeof(struct enum_member) * num_members);
struct enum_member *new_member = &members[num_members - 1];
new_member->value = value++;
new_member->name = strdup_failsafe(m_ident);