* Bug #14040 fixed - graphic property setting fails when using array of handles 73/17073/2
Cedric Delamarre [Thu, 20 Aug 2015 09:07:30 +0000 (11:07 +0200)]
test_run graphics bug_14040

Change-Id: I53bff92be35a2362a967ae667ecaba40baa71fa9

scilab/CHANGES_6.0.X
scilab/modules/ast/src/cpp/ast/visitor_common.cpp
scilab/modules/graphics/tests/nonreg_tests/bug_14040.dia.ref [new file with mode: 0644]
scilab/modules/graphics/tests/nonreg_tests/bug_14040.tst [new file with mode: 0644]

index f4c97f1..ea29049 100644 (file)
@@ -23,6 +23,8 @@ Scilab Bug Fixes
 
 * Bug #14036 fixed - tag and user_data properties were not displayed and not documented for light entity.
 
+* Bug #14040 fixed - graphic property setting fails when using array of handles
+
 * Bug #14049 fixed - genlib hangs if an unexpected endfunction occurs.
 
 * Bug #14058 fixed - Scilab crashed with 'file("close", file())' instruction
index 4b3c9a5..927ff71 100644 (file)
@@ -1222,19 +1222,21 @@ InternalType* evaluateFields(const ast::Exp* _pExp, std::list<ExpHistory*>& fiel
                 {
                     InternalType* pExtract = NULL;
 
-                    for (int i = 0; i < pArgs->size(); i++)
+                    if (pArgs->size() == 1 && (*pArgs)[0]->isImplicitList() == false)
                     {
-                        if ((*pArgs)[i]->isImplicitList())
-                        {
-                            pExtract = pGH->extract(pArgs);
-                            break;
-                        }
+                        // call overload
+                        pExtract = callOverload(*pEH->getExp(), L"e", pArgs, pITCurrent, NULL);
+                    }
+                    else
+                    {
+                        pExtract = pGH->extract(pArgs);
                     }
 
                     if (pExtract == NULL)
                     {
-                        // call overload
-                        pExtract = callOverload(*pEH->getExp(), L"e", pArgs, pITCurrent, NULL);
+                        std::wostringstream os;
+                        os << _W("Invalid index.");
+                        throw ast::InternalError(os.str(), 999, _pExp->getLocation());
                     }
 
                     if ((*iterFields)->getExp() == NULL)
diff --git a/scilab/modules/graphics/tests/nonreg_tests/bug_14040.dia.ref b/scilab/modules/graphics/tests/nonreg_tests/bug_14040.dia.ref
new file mode 100644 (file)
index 0000000..a982f43
--- /dev/null
@@ -0,0 +1,24 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2015 - Scilab Enterprises - Cedric Delamarre
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- TEST WITH GRAPHIC -->
+// <-- Non-regression test for bug 14040 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/14040
+//
+// <-- Short Description -->
+// graphic property setting fails when using array of handles
+clf;
+xstring(0.1,0.1,"foo1");e=gce();H(1,1)=e;
+xstring(0.1,0.2,"foo2");e=gce();H(2,1)=e;
+H(1,1).text="text1";
+assert_checkequal(H(1).text, "text1");
+H(2,1).text="text2";
+assert_checkequal(H(2).text, "text2");
+H(1:2).text="text3";
+assert_checkequal(H(1).text, "text3");
+assert_checkequal(H(2).text, "text3");
diff --git a/scilab/modules/graphics/tests/nonreg_tests/bug_14040.tst b/scilab/modules/graphics/tests/nonreg_tests/bug_14040.tst
new file mode 100644 (file)
index 0000000..4aaa9b3
--- /dev/null
@@ -0,0 +1,28 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2015 - Scilab Enterprises - Cedric Delamarre
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- TEST WITH GRAPHIC -->
+
+// <-- Non-regression test for bug 14040 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/14040
+//
+// <-- Short Description -->
+// graphic property setting fails when using array of handles
+
+clf;
+xstring(0.1,0.1,"foo1");e=gce();H(1,1)=e;
+xstring(0.1,0.2,"foo2");e=gce();H(2,1)=e;
+
+H(1,1).text="text1";
+assert_checkequal(H(1).text, "text1");
+H(2,1).text="text2";
+assert_checkequal(H(2).text, "text2");
+H(1:2).text="text3";
+assert_checkequal(H(1).text, "text3");
+assert_checkequal(H(2).text, "text3");