* Bug 16601 fixed: libmatio >= 1.5.18 was not supported 66/21766/3
mottelet [Tue, 25 May 2021 09:49:46 +0000 (11:49 +0200)]
http://bugzilla.scilab.org/show_bug.cgi?id=16601

Change-Id: I1630a353a0ac46681334ebd1512b71eea4935cb6

scilab/CHANGES.md
scilab/modules/matio/src/cpp/GetSparseVariable.cpp

index 6810b01..03550ed 100644 (file)
@@ -445,7 +445,8 @@ Bug Fixes
 * [#16573](https://bugzilla.scilab.org/16573): `mfile2sci`: Some `axis` conversions were wrong or not reliable.
 * [#16586](https://bugzilla.scilab.org/16586): `mfile2sci`: The `prettyprintoutput` flag badly managed appended comments.
 * [#16592](https://bugzilla.scilab.org/16592): %i|[], []|%i, %i&[], and []&%i were wrong. %t|%i, %t&%i, and %i&%t were not defined.
-* [#16596](https://bugzilla.scilab.org/16596): Concatenating encoded integers with sparse numeric data was not possible. 
+* [#16596](https://bugzilla.scilab.org/16596): Concatenating encoded integers with sparse numeric data was not possible.
+* [#16601](https://bugzilla.scilab.org/16601): libmatio >= 1.5.18 was not supported.
 * [#16608](https://bugzilla.scilab.org/16608): `union` did not support input boolean, sparse boolean, nor sparse numerical matrices. The result of `union(complexA, complexB)` was wrongly conjugate.
 * [#16609](https://bugzilla.scilab.org/16609): `bitcmp` needed to be upgraded for Scilab 6.
 * [#16612](https://bugzilla.scilab.org/16612): Unlike the `.*.` operator, `kron()` was not defined for sparse numeric matrices.
index a867d5b..cf4b6ee 100644 (file)
@@ -65,7 +65,11 @@ matvar_t* GetSparseMatVar(types::Sparse* pSparse, const char *name)
     int* itemsRow = new int[pSparse->getRows()];
     pSparse->getNbItemByRow(itemsRow);
 
-    int* colIndexes = (int*)MALLOC(sizeof(int) *  (pSparse->getRows() + 1));
+#if MATIO_RELEASE_LEVEL < 18
+    mat_int32_t* colIndexes = (mat_int32_t*)MALLOC(sizeof(mat_int32_t) *  (pSparse->getRows() + 1));
+#else
+    mat_uint32_t* colIndexes = (mat_uint32_t*)MALLOC(sizeof(mat_uint32_t) *  (pSparse->getRows() + 1));
+#endif
     if (colIndexes == NULL)
     {
         FREE(sparseData);
@@ -82,7 +86,11 @@ matvar_t* GetSparseMatVar(types::Sparse* pSparse, const char *name)
         colIndexes[K + 1] = colIndexes[K] + itemsRow[K];
     }
 
-    int* rowIndexes = (int*)MALLOC(sizeof(int) *  nonZeros);
+#if MATIO_RELEASE_LEVEL < 18
+    mat_int32_t* rowIndexes = (mat_int32_t*)MALLOC(sizeof(mat_int32_t) *  nonZeros);
+#else
+    mat_uint32_t* rowIndexes = (mat_uint32_t*)MALLOC(sizeof(mat_uint32_t) *  nonZeros);
+#endif
     if (rowIndexes == NULL)
     {
         FREE(sparseData);