aboutsummaryrefslogtreecommitdiffstats
path: root/src/mds-kbdc/make-tree.c
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/mds-kbdc/make-tree.c18
1 files changed, 14 insertions, 4 deletions
diff --git a/src/mds-kbdc/make-tree.c b/src/mds-kbdc/make-tree.c
index 77155b2..7534a40 100644
--- a/src/mds-kbdc/make-tree.c
+++ b/src/mds-kbdc/make-tree.c
@@ -1311,14 +1311,18 @@ static int parse_array_elements(void)
end = line + strlen(line);
END;
line = end, prev_end_char = '\0';
- in_array = 0;
- stack_ptr -= 2;
- NEXT;
- return 0;
+ goto done;
}
else
{
NEW_NODE(string, STRING);
+ if (strchr("[]()<>{}", *line))
+ {
+ mds_kbdc_tree_free((mds_kbdc_tree_t*)node);
+ NEW_ERROR(1, ERROR, "x-stray ‘%c’", *line);
+ error->end = error->start + 1;
+ goto done;
+ }
NO_JUMP;
CHARS(string);
LEAF;
@@ -1330,6 +1334,12 @@ static int parse_array_elements(void)
fail:
return -1;
+
+ done:
+ in_array = 0;
+ stack_ptr -= 2;
+ NEXT;
+ return 0;
}