diff options
author | Francesco Romani <fromani@gmail.com> | 2014-07-07 07:59:56 +0200 |
---|---|---|
committer | Sebastian Dröge <sebastian@centricular.com> | 2023-04-12 20:00:20 +0300 |
commit | 6b14709d51e72da7e71b8e428844160ebbfb4705 (patch) | |
tree | a07bb2d5ccdbd5d4e82c4486fd0ff0b8a70a0065 | |
parent | 197b2565bda9f89c66e761f663b2de5c1ee8e40e (diff) | |
download | orc-6b14709d51e72da7e71b8e428844160ebbfb4705.tar.gz |
parser: switch to orc_program_append_str_n
For better error reporting.
Part-of: <https://gitlab.freedesktop.org/gstreamer/orc/-/merge_requests/30>
-rw-r--r-- | orc/orcparse.c | 12 | ||||
-rw-r--r-- | orc/orcprogram.c | 2 |
2 files changed, 10 insertions, 4 deletions
diff --git a/orc/orcparse.c b/orc/orcparse.c index 1459f94..7fa2567 100644 --- a/orc/orcparse.c +++ b/orc/orcparse.c @@ -351,6 +351,7 @@ orc_parse_code (const char *code, OrcProgram ***programs, int *n_programs, OrcStaticOpcode *o; unsigned int flags = 0; int offset = 0; + int error = 0; if (strcmp (token[0], "x4") == 0) { flags |= ORC_INSTRUCTION_FLAG_X4; @@ -376,7 +377,7 @@ orc_parse_code (const char *code, OrcProgram ***programs, int *n_programs, if (o) { int n_args = opcode_n_args (o); int i, j; - char *args[4] = { NULL }; + const char *args[6] = { NULL }; if (n_tokens != 1 + offset + n_args) { orc_parse_add_error (parser, "line %d: too %s arguments for %s (expected %d)\n", @@ -406,8 +407,13 @@ orc_parse_code (const char *code, OrcProgram ***programs, int *n_programs, } } - orc_program_append_str_2 (parser->program, token[offset], flags, - args[0], args[1], args[2], args[3]); + error = orc_program_append_str_n (parser->program, token[offset], flags, + n_args, args); + + if (error > 0) { + orc_parse_add_error (parser, "bad operand \"%s\" in position %d", + token[offset + error], error); + } } else { orc_parse_add_error (parser, "unknown opcode: %s", token[offset]); } diff --git a/orc/orcprogram.c b/orc/orcprogram.c index de6c76f..e6ca548 100644 --- a/orc/orcprogram.c +++ b/orc/orcprogram.c @@ -1015,7 +1015,7 @@ orc_program_append_str_n (OrcProgram *program, const char *name, } if (argc != expected_args) { - ORC_ERROR ("not the correct number of arguments provided for opcode: %s expects %d but got %d", name, expected_args, argc); + ORC_WARNING ("not the correct number of arguments provided for opcode: %s expects %d but got %d", name, expected_args, argc); }; for (i=0;i<expected_args;i++){ |