[bug_14205] double free fixed 40/17340/2
Cedric Delamarre [Mon, 19 Oct 2015 14:43:45 +0000 (16:43 +0200)]
Change-Id: I08a885c933c921ab7501af173cfebdf051b6d8bb

scilab/CHANGES_6.0.X
scilab/modules/ast/src/cpp/ast/run_AssignExp.hpp
scilab/modules/ast/tests/nonreg_tests/bug_14205.dia.ref [new file with mode: 0644]
scilab/modules/ast/tests/nonreg_tests/bug_14205.tst [new file with mode: 0644]

index a8d3ae6..2206315 100644 (file)
@@ -120,6 +120,8 @@ Scilab Bug Fixes
 
 * Bug #14199 fixed - sqrt returned wrong dimension results on matrix with more than dimensions.
 
+* Bug #14205 fixed - Console crash when assigning uint32 numbers to double matrix.
+
 
             Changes between version 5.5.2 and 6.0.0-alpha-1 of Scilab
             =========================================================
index 1532522..0b57e07 100644 (file)
@@ -55,7 +55,7 @@ namespace ast {
                     if (pIT->getAs<types::ImplicitList>()->isComputable())
                     {
                         types::InternalType *pTemp = pIT->getAs<types::ImplicitList>()->extractFullMatrix();
-                        delete pIT;
+                        pIT->killMe();
                         pIT = pTemp;
                     }
                 }
diff --git a/scilab/modules/ast/tests/nonreg_tests/bug_14205.dia.ref b/scilab/modules/ast/tests/nonreg_tests/bug_14205.dia.ref
new file mode 100644 (file)
index 0000000..89d4b5a
--- /dev/null
@@ -0,0 +1,18 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2013 - Scilab Enterprises - Cedric Delamarre
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 14205 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/14205
+//
+// <-- Short Description -->
+// Console crash when assigning uint32 numbers to double matrix
+q=1;
+q(1:3,2)=uint32([1;2;3]);
+assert_checkequal(q, [1 1;0 2;0 3]);
diff --git a/scilab/modules/ast/tests/nonreg_tests/bug_14205.tst b/scilab/modules/ast/tests/nonreg_tests/bug_14205.tst
new file mode 100644 (file)
index 0000000..9b19d7c
--- /dev/null
@@ -0,0 +1,20 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2013 - Scilab Enterprises - Cedric Delamarre
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 14205 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/14205
+//
+// <-- Short Description -->
+// Console crash when assigning uint32 numbers to double matrix
+
+q=1;
+q(1:3,2)=uint32([1;2;3]);
+
+assert_checkequal(q, [1 1;0 2;0 3]);