* Bug #14095 fixed - Scilab crashed when a .fig file was loaded with loadmatfile... 80/17080/2
Charlotte HECQUET [Fri, 21 Aug 2015 12:22:17 +0000 (14:22 +0200)]
Change-Id: Iaf40d04029779ca656b188261d3f2d590fecf5f9

scilab/CHANGES_6.0.X
scilab/modules/matio/src/cpp/CreateMatlabTreeVariable.cpp
scilab/modules/matio/tests/nonreg_tests/bug_14095.dia.ref [new file with mode: 0644]
scilab/modules/matio/tests/nonreg_tests/bug_14095.fig [new file with mode: 0644]
scilab/modules/matio/tests/nonreg_tests/bug_14095.tst [new file with mode: 0644]

index ea29049..964a892 100644 (file)
@@ -29,6 +29,8 @@ Scilab Bug Fixes
 
 * Bug #14058 fixed - Scilab crashed with 'file("close", file())' instruction
 
+* Bug #14095 fixed - Scilab crashed when a .fig file was loaded with loadmatfile function.
+
 
             Changes between version 5.5.2 and 6.0.0-alpha-1 of Scilab
             =========================================================
index 9d3f08b..ffc7157 100644 (file)
@@ -65,8 +65,9 @@ InternalType* CreateMatlabTreeVariable(matvar_t *matVariable)
                 pOut = new Cell(iRank, piDims);
 
                 matvar_t** allData = (matvar_t**)(matVariable->data);
-                InternalType** ppIT = new InternalType*[matVariable->data_size];
-                for (int i = 0; i < matVariable->data_size; i++)
+                int iSize = pOut->getAs<types::Cell>()->getSize();
+                InternalType** ppIT = new InternalType*[iSize];
+                for (int i = 0; i < iSize; i++)
                 {
                     ppIT[i] = CreateMatlabTreeVariable(allData[i]);
                 }
diff --git a/scilab/modules/matio/tests/nonreg_tests/bug_14095.dia.ref b/scilab/modules/matio/tests/nonreg_tests/bug_14095.dia.ref
new file mode 100644 (file)
index 0000000..71215ee
--- /dev/null
@@ -0,0 +1,16 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2015 - Scilab Enterprises - Charlotte Hecquet
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- TEST WITH GRAPHIC -->
+// <-- Non-regression test for bug 14095 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/14095
+//
+// <-- Short Description -->
+// Load a fig file with loadmatfile makes Scilab crash
+fig_file = fullfile(SCI,"modules","matio", "tests", "nonreg_tests", "bug_14095.fig");
+assert_checktrue(execstr("loadmatfile(""-mat"", fig_file)", "errcatch") == 0);
diff --git a/scilab/modules/matio/tests/nonreg_tests/bug_14095.fig b/scilab/modules/matio/tests/nonreg_tests/bug_14095.fig
new file mode 100644 (file)
index 0000000..e3363d7
Binary files /dev/null and b/scilab/modules/matio/tests/nonreg_tests/bug_14095.fig differ
diff --git a/scilab/modules/matio/tests/nonreg_tests/bug_14095.tst b/scilab/modules/matio/tests/nonreg_tests/bug_14095.tst
new file mode 100644 (file)
index 0000000..1566fef
--- /dev/null
@@ -0,0 +1,18 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2015 - Scilab Enterprises - Charlotte Hecquet
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- TEST WITH GRAPHIC -->
+
+// <-- Non-regression test for bug 14095 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/14095
+//
+// <-- Short Description -->
+// Load a fig file with loadmatfile makes Scilab crash
+fig_file = fullfile(SCI,"modules","matio", "tests", "nonreg_tests", "bug_14095.fig");
+assert_checktrue(execstr("loadmatfile(""-mat"", fig_file)", "errcatch") == 0);