[bug_14808] Extration using bad indexes fixed. Again 52/18652/2
Antoine ELIAS [Mon, 7 Nov 2016 13:55:17 +0000 (14:55 +0100)]
Change-Id: I8f4b053c376244d237a9f08f5d2d1f03df0e5145

scilab/modules/ast/src/cpp/types/arrayof.cpp

index ebe8e98..ba6a2f5 100644 (file)
@@ -999,11 +999,6 @@ GenericType* ArrayOf<T>::extract(typed_list* _pArgs)
         //index are ":"
         bool isForceColVector = il.size() == 4;
 
-        if (start < 1 || end < 1)
-        {
-            return NULL;
-        }
-
         //std::cout << start << ":" << step << ":" << end << std::endl;
         int size = static_cast<int>((end - start) / step + 1);
 
@@ -1012,8 +1007,9 @@ GenericType* ArrayOf<T>::extract(typed_list* _pArgs)
             return createEmpty();
         }
 
-        if (step > 0 && (size - 1) * step + start > m_iSize ||
-                step < 0 && start > m_iSize)
+        //check bounds
+        if (step > 0 && ((size - 1) * step + start > m_iSize || start < 1) ||
+                (step < 0 && (start > m_iSize || end < 1)))
         {
             return NULL;
         }