*Bug #14278 fixed - ltitr returned an incorrect xf output value. 42/19042/2
Adeline CARNIS [Mon, 6 Feb 2017 09:51:05 +0000 (10:51 +0100)]
Change-Id: Ida2d58d31c2b22e36d44341ecc0e6a1572ac31bc

scilab/CHANGES.md
scilab/modules/cacsd/sci_gateway/cpp/sci_ltitr.cpp
scilab/modules/cacsd/tests/nonreg_tests/bug_14278.dia.ref [new file with mode: 0644]
scilab/modules/cacsd/tests/nonreg_tests/bug_14278.tst [new file with mode: 0644]

index d6609b2..9ad842d 100644 (file)
@@ -399,6 +399,7 @@ Bug Fixes
 * [#13906](http://bugzilla.scilab.org/show_bug.cgi?id=13906): It is now possible to navigate through the Palette browser with the arrow keys.
 * [#13990](http://bugzilla.scilab.org/show_bug.cgi?id=13990): `warning` with localization enabled some memory corruption
 * [#14192](http://bugzilla.scilab.org/show_bug.cgi?id=14192): `g_margin` error-ed for double integrator.
+* [#14278](http://bugzilla.scilab.org/show_bug.cgi?id=14278): `ltitr` returned an incorrect xf output value.
 * [#14306](http://bugzilla.scilab.org/show_bug.cgi?id=14306): Comparisons `>` and `>=` between integers of mismatching inttypes were not implemented.
 * [#14367](http://bugzilla.scilab.org/show_bug.cgi?id=14367): `edit_curv` failed opening due to a `[]+1` operation.
 * [#14379](http://bugzilla.scilab.org/show_bug.cgi?id=14379): Problem with lists of functions having 2 arguments.
index c4ea128..46bb7b1 100644 (file)
@@ -141,7 +141,7 @@ types::Function::ReturnValue sci_ltitr(types::typed_list &in, int _iRetCount, ty
     pdblA   = pDblA->get();
     iRowsA  = pDblA->getRows();
 
-    if (pDblA->getRows() != pDblB->getRows())
+    if (iRowsA != pDblB->getRows())
     {
         Scierror(60, _("%s: Wrong size for argument: Incompatible dimensions.\n"), "ltitr");
         return types::Function::Error;
@@ -149,7 +149,7 @@ types::Function::ReturnValue sci_ltitr(types::typed_list &in, int _iRetCount, ty
 
     if (in.size() == 4)
     {
-        if (pDblX0->getRows() != pDblA->getRows() || pDblX0->getCols() != 1)
+        if (pDblX0->getRows() != iRowsA || pDblX0->getCols() != 1)
         {
             Scierror(60, _("%s: Wrong size for argument: Incompatible dimensions.\n"), "ltitr");
             return types::Function::Error;
@@ -183,7 +183,7 @@ types::Function::ReturnValue sci_ltitr(types::typed_list &in, int _iRetCount, ty
     {
         types::Double* pDblOutXf = new types::Double(iRowsA, 1);
         double* pdblOutXf = pDblOutXf->get();
-        C2F(dcopy)(&iRowsA, pdblWgr + iColsU, &iOne, pdblOutXf, &iOne);
+        C2F(dcopy)(&iRowsA, pdblWgr + ig, &iOne, pdblOutXf, &iOne);
         out.push_back(pDblOutXf);
     }
 
diff --git a/scilab/modules/cacsd/tests/nonreg_tests/bug_14278.dia.ref b/scilab/modules/cacsd/tests/nonreg_tests/bug_14278.dia.ref
new file mode 100644 (file)
index 0000000..0fe2f27
--- /dev/null
@@ -0,0 +1,22 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2017 - Scilab Enterprises - Adeline CARNIS
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 14278 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/14278
+//
+// <-- Short Description -->
+// ltitr returned an incorrect xf output value.
+//
+A=eye(2,2);B=[1;1];
+x0=[-1;-2];
+u=[1,2,3,4,5];
+[xf,x]=ltitr(A,B,u,x0);
+assert_checkequal(xf, [14;13]);
diff --git a/scilab/modules/cacsd/tests/nonreg_tests/bug_14278.tst b/scilab/modules/cacsd/tests/nonreg_tests/bug_14278.tst
new file mode 100644 (file)
index 0000000..4732cf0
--- /dev/null
@@ -0,0 +1,23 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2017 - Scilab Enterprises - Adeline CARNIS
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 14278 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/14278
+//
+// <-- Short Description -->
+// ltitr returned an incorrect xf output value.
+//
+
+A=eye(2,2);B=[1;1];
+x0=[-1;-2];
+u=[1,2,3,4,5];
+[xf,x]=ltitr(A,B,u,x0);
+assert_checkequal(xf, [14;13]);