diff options
author | Sebastian Dröge <sebastian@centricular.com> | 2023-04-10 17:32:54 +0300 |
---|---|---|
committer | Sebastian Dröge <sebastian@centricular.com> | 2023-04-10 18:18:48 +0300 |
commit | caf65250385252e0bf6f71f8a0a6d6a48117d45a (patch) | |
tree | 8b3a04186984fa62b955803c85045f2e2ba6d9b4 | |
parent | 279e44361a82b6c1b79e7094186ae23da2909858 (diff) | |
download | orc-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.c | 16 |
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); |