parser: fix error reporting
[project/jsonpath.git] / parser.y
index e3b9ee9..54c6077 100644 (file)
--- a/parser.y
+++ b/parser.y
@@ -58,7 +58,7 @@ struct jp_opcode {
 struct jp_state {
        struct jp_opcode *pool;
        struct jp_opcode *path;
-       const char *error;
+       char *error;
        char str_quote;
        char str_buf[128];
        char *str_ptr;
@@ -167,7 +167,7 @@ unary_exp
 void
 yyerror(struct jp_state *s, const char *msg)
 {
-       s->error = msg;
+       s->error = strdup(msg);
 }
 
 static struct jp_opcode *
@@ -253,5 +253,8 @@ jp_free(struct jp_state *s)
                op = tmp;
        }
 
+       if (s->error)
+               free(s->error);
+
        free(s);
 }