summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Dröge <sebastian@centricular.com>2023-04-10 17:32:54 +0300
committerSebastian Dröge <sebastian@centricular.com>2023-04-10 18:18:48 +0300
commitcaf65250385252e0bf6f71f8a0a6d6a48117d45a (patch)
tree8b3a04186984fa62b955803c85045f2e2ba6d9b4
parent279e44361a82b6c1b79e7094186ae23da2909858 (diff)
downloadorc-caf65250385252e0bf6f71f8a0a6d6a48117d45a.tar.gz
orcprogram-neon: Fix usage of negative array index on errors
CID 1522422 CID 1522354 Part-of: <https://gitlab.freedesktop.org/gstreamer/orc/-/merge_requests/94>
-rw-r--r--orc/orcprogram-neon.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/orc/orcprogram-neon.c b/orc/orcprogram-neon.c
index 5236b9f..a581115 100644
--- a/orc/orcprogram-neon.c
+++ b/orc/orcprogram-neon.c
@@ -599,10 +599,14 @@ enum {
static void
orc_neon64_loop_shift (OrcCompiler *compiler)
{
- int align_var = get_align_var (compiler);
- int var_size_shift = get_shift (compiler->vars[align_var].size);
+ int align_var;
+ int var_size_shift;
int align_shift = 4;
+ align_var = get_align_var (compiler);
+ if (compiler->error) return;
+ var_size_shift = get_shift (compiler->vars[align_var].size);
+
if (compiler->n_insns < 5) {
/** Get the number of loops (N) from OrcExecutor */
orc_arm64_emit_load_reg (compiler, 32, ORC_ARM64_R2, compiler->exec_reg,
@@ -711,10 +715,14 @@ orc_neon64_loop_shift (OrcCompiler *compiler)
static void
orc_neon64_loop_caches (OrcCompiler *compiler)
{
- int align_var = get_align_var (compiler);
- int var_size_shift = get_shift (compiler->vars[align_var].size);
+ int align_var;
+ int var_size_shift;
int i;
+ align_var = get_align_var (compiler);
+ if (compiler->error) return;
+ var_size_shift = get_shift (compiler->vars[align_var].size);
+
/** if IP0 == 0, go to LABEL_REGION2_SKIP */
orc_arm64_emit_cmp_imm (compiler, 32, ORC_ARM64_IP0, 0);
orc_arm_emit_branch (compiler, ORC_ARM_COND_EQ, LABEL_REGION2_SKIP);