* Bug 16263 fixed: insertion in complex polynomial is repaired 44/21144/4
St├ęphane MOTTELET [Fri, 29 Nov 2019 08:54:56 +0000 (09:54 +0100)]
https://bugzilla.scilab.org/show_bug.cgi?id=16263

This bug was also breaking addition of complex rationals:

https://bugzilla.scilab.org/show_bug.cgi?id=16262
https://bugzilla.scilab.org/show_bug.cgi?id=16261

Change-Id: Ic1daca304a967158a174573792be6968a44a9fe1

scilab/CHANGES.md
scilab/modules/ast/src/cpp/types/polynom.cpp
scilab/modules/ast/tests/nonreg_tests/bug_16263.tst [new file with mode: 0644]

index 6a50f05..6f55800 100644 (file)
@@ -188,5 +188,6 @@ Bug Fixes
 * [#16174](http://bugzilla.scilab.org/show_bug.cgi?id=16174): `libraryinfo` yielded 0x0 matrix of strings for libs without macro
 * [#16208](http://bugzilla.scilab.org/show_bug.cgi?id=16208): Using 3D string matrix with old C-api gateways may crash Scilab.
 * [#16209](http://bugzilla.scilab.org/show_bug.cgi?id=16209): grand() causes a freeze after several consecutive calls when using default base generator.
+* [#16263](http://bugzilla.scilab.org/show_bug.cgi?id=16263): Polynomial insertion was broken for complex case.
 * [#16264](http://bugzilla.scilab.org/show_bug.cgi?id=16264): After empty for loop iterator was left uninitialized.
 
index 5ac4d43..4f003eb 100644 (file)
@@ -235,12 +235,14 @@ void Polynom::setVariableName(const std::wstring& _szVarName)
 
 bool Polynom::isComplex()
 {
-    if (m_iSize && m_pRealData[0])
-    {
-        return m_pRealData[0]->isComplex();
-    }
-
-    return false;
+        for (int i = 0 ; i < getSize() ; i++)
+        {
+            if  (m_pRealData[i] && m_pRealData[i]->isComplex())
+            {
+                return true;
+            }
+        }
+        return false;
 }
 
 Polynom* Polynom::setComplex(bool _bComplex)
diff --git a/scilab/modules/ast/tests/nonreg_tests/bug_16263.tst b/scilab/modules/ast/tests/nonreg_tests/bug_16263.tst
new file mode 100644 (file)
index 0000000..5442ddb
--- /dev/null
@@ -0,0 +1,21 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2019 - St├ęphane MOTTELET
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+// <-- NO CHECK REF -->
+//
+// <-- Non-regression test for bug 16263 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/16263
+//
+// <-- Short Description -->
+// Polynomial insertion is broken for complex case
+
+num = [1 1+%i %i+%s];
+num(1) = 1;
+assert_checkfalse(isreal(num))
\ No newline at end of file