summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrancesco Romani <fromani@gmail.com>2014-07-07 07:59:56 +0200
committerSebastian Dröge <sebastian@centricular.com>2023-04-12 20:00:20 +0300
commit6b14709d51e72da7e71b8e428844160ebbfb4705 (patch)
treea07bb2d5ccdbd5d4e82c4486fd0ff0b8a70a0065
parent197b2565bda9f89c66e761f663b2de5c1ee8e40e (diff)
downloadorc-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.c12
-rw-r--r--orc/orcprogram.c2
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++){