From 601c8a42e1964807dd7249cebbf405a265c4791f Mon Sep 17 00:00:00 2001
From: Olivier BICHLER <olivier.bichler@cea.fr>
Date: Thu, 7 Nov 2024 10:08:53 +0100
Subject: [PATCH] Fix issue eclipse/aidge/aidge_core#196

---
 include/aidge/backend/opencv/data/TensorImpl.hpp | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/include/aidge/backend/opencv/data/TensorImpl.hpp b/include/aidge/backend/opencv/data/TensorImpl.hpp
index 4b548d2..d5254fb 100644
--- a/include/aidge/backend/opencv/data/TensorImpl.hpp
+++ b/include/aidge/backend/opencv/data/TensorImpl.hpp
@@ -91,10 +91,10 @@ public:
     }
 
     void copy(const void *src, NbElts_t length, NbElts_t offset = 0) override final {
+        AIDGE_ASSERT(offset + length <= mNbElts, "TensorImpl_opencv<{}>::copy(): copy offset ({}) + length ({}) is above capacity ({})", typeid(T).name(), offset, length, mNbElts);
         const T* srcT = static_cast<const T *>(src);
         T* dstT = static_cast<T *>(rawPtr(offset));
 
-        AIDGE_ASSERT(length <= (mData.total() * mData.channels()) || length <= mNbElts, "TensorImpl_opencv<{}>::copy(): copy length ({}) is above capacity ({})", typeid(T).name(), length, mNbElts);
         AIDGE_ASSERT(dstT < srcT || dstT >= srcT + length, "TensorImpl_opencv<{}>::copy(): overlapping copy is not supported", typeid(T).name());
         std::copy(srcT, srcT + length, dstT);
 
@@ -105,8 +105,8 @@ public:
             return;
         }
 
+        AIDGE_ASSERT(offset + length <= mNbElts, "TensorImpl_opencv<{}>::copyCast(): copy offset ({}) + length ({}) is above capacity ({})", typeid(T).name(), offset, length, mNbElts);
         T* dstT = static_cast<T *>(rawPtr(offset));
-        AIDGE_ASSERT(length <= (mData.total() * mData.channels()) || length <= mNbElts, "TensorImpl_opencv<{}>::copyCast(): copy length ({}) is above capacity ({})", typeid(T).name(), length, mNbElts);
         switch (srcDt)
         {
             case DataType::Float64:
@@ -171,8 +171,8 @@ public:
     }
 
     void copyToHost(void *dst, NbElts_t length, NbElts_t offset = 0) const override final {
+        AIDGE_ASSERT(offset + length <= mNbElts, "TensorImpl_opencv<{}>::copyToHost(): copy offset ({}) + length ({}) is above capacity ({})", typeid(T).name(), offset, length, mNbElts);
         const T* src = static_cast<const T*>(rawPtr(offset));
-        AIDGE_ASSERT(length <= (mData.total() * mData.channels()) || length <= mNbElts, "TensorImpl_opencv<{}>::copyToHost(): copy length ({}) is above capacity ({})", typeid(T).name(), length, mNbElts);
         std::copy(src, src + length, static_cast<T *>(dst));
     }
 
-- 
GitLab