extract with ImplicitList fixed
[scilab.git] / scilab / modules / ast / src / cpp / types / arrayof.cpp
index 3e35362..39a3ad5 100644 (file)
@@ -1054,12 +1054,18 @@ InternalType* ArrayOf<T>::extract(typed_list* _pArgs)
 
         //std::cout << start << ":" << step << ":" << end << std::endl;
         int size = static_cast<int>((end - start) / step + 1);
-        if (size <= 0 || getSize() == 0)
+        if (size <= 0 || m_iSize == 0)
         {
             return createEmpty();
         }
 
-        bool isRowVector = getRows() == 1;
+        if (step > 0 && (size - 1) * step + start > m_iSize ||
+                step < 0 && start > m_iSize)
+        {
+            return NULL;
+        }
+
+        bool isRowVector = m_iRows == 1;
         isRowVector = isRowVector && !isForceColVector;
         int dims[2] = {isRowVector ? 1 : size, isRowVector ? size : 1};
         pOut = createEmpty(2, dims, isComplex());