elementary_functions: fix invalid uninit error 56/21256/2
Clement David [Fri, 24 Jan 2020 13:03:14 +0000 (14:03 +0100)]
On VS2017 Debug, an unititialized access is detected on iOffset. Initialize
to a safe value out of the loop workaround this error.

   test_run elementary_functions permute

Change-Id: Ie8eee0a8134cf5a56cc9cca2ce80ed3cb1072548

scilab/modules/elementary_functions/sci_gateway/cpp/sci_permute.cpp

index 361bafb..8f05f06 100644 (file)
@@ -25,12 +25,13 @@ extern "C"
 
 void computeOffsets(int iDims, const int* piDimsArray, const std::vector<int>& dimsVect, int* piOffset, int* piMaxOffset)
 {
+    int iOffset = 1;
     for (int i = 0; i < iDims; ++i)
     {
-        int iOffset = i > 0 ? iOffset * piDimsArray[dimsVect[i - 1] - 1] : 1;
         int j = dimsVect[i] - 1;
         piOffset[j] = iOffset;
         piMaxOffset[j] = iOffset * piDimsArray[j];
+        iOffset *= piDimsArray[dimsVect[i] - 1];
     }
 }