Fixed error with failure messages. Null terminated lists to mpca_lang and fixed crash.

This commit is contained in:
Daniel Holden
2014-04-23 12:20:20 +01:00
parent 60b1496bb5
commit a5ed2097ea
6 changed files with 13 additions and 12 deletions

11
mpc.c
View File

@@ -157,9 +157,8 @@ char *mpc_err_string(mpc_err_t *x) {
if (x->failure) {
mpc_err_string_cat(buffer, &pos, &max,
"error: %s\n",
x->filename, x->state.row+1,
x->state.col+1, x->failure);
"%s: error: %s\n",
x->filename, x->failure);
return buffer;
}
@@ -2867,6 +2866,7 @@ static mpc_parser_t *mpca_grammar_find_parser(char *x, mpca_grammar_st_t *st) {
/* Search Existing Parsers */
for (i = 0; i < st->parsers_num; i++) {
mpc_parser_t *p = st->parsers[i];
if (p == NULL) { return mpc_failf("Unknown Parser '%s'!", x); }
if (p->name && strcmp(p->name, x) == 0) { return p; }
}
@@ -2879,10 +2879,7 @@ static mpc_parser_t *mpca_grammar_find_parser(char *x, mpca_grammar_st_t *st) {
st->parsers = realloc(st->parsers, sizeof(mpc_parser_t*) * st->parsers_num);
st->parsers[st->parsers_num-1] = p;
if (p == NULL) {
return mpc_failf("Unknown Parser '%s'!", x);
}
if (p == NULL) { return mpc_failf("Unknown Parser '%s'!", x); }
if (p->name && strcmp(p->name, x) == 0) { return p; }
}