From 4a4423967819406e2b6d950a7edf1986b6b7035b Mon Sep 17 00:00:00 2001
From: NAUD Maxence <maxence.naud@cea.fr>
Date: Mon, 4 Mar 2024 13:47:41 +0000
Subject: [PATCH] Switch contiguous local variable comparison with 0 and array
 access to avoid seg fault

---
 src/operator/DivImpl.cpp | 14 ++++----------
 1 file changed, 4 insertions(+), 10 deletions(-)

diff --git a/src/operator/DivImpl.cpp b/src/operator/DivImpl.cpp
index 292a3b56..729aff24 100644
--- a/src/operator/DivImpl.cpp
+++ b/src/operator/DivImpl.cpp
@@ -91,16 +91,10 @@ void Aidge::DivImpl_cpu::forward() {
     std::size_t contiguousIdx = nbDims - 1;
     for (; contiguousIdx+1 > 0; --contiguousIdx) {
         if (dims0[contiguousIdx] != dims1[contiguousIdx]) {
-            if (contiguousIdx == (nbDims -1)) {
-                if (dims0[contiguousIdx] == 1) {
-                    while ((dims0[contiguousIdx] == 1) && (contiguousIdx+1 > 0)) {
-                        --contiguousIdx;
-                    }
-                }
-                else {
-                    while ((dims1[contiguousIdx] == 1) && (contiguousIdx+1 > 0)) {
-                        --contiguousIdx;
-                    }
+            if (contiguousIdx == (nbDims -1)) { // last dimensions of one of the input Tensor are of size 1
+                const std::vector<std::size_t>& dims = (dims0[contiguousIdx] == 1) ? dims0 : dims1;
+                while ((contiguousIdx+1 > 0) && (dims[contiguousIdx] == 1)) {
+                    --contiguousIdx;
                 }
             }
             break;
-- 
GitLab