* Bug #14564 fixed - fieldnames failed for empty structs, tlists & mlists 93/19993/2
Paul Bignier [Wed, 2 May 2018 10:30:36 +0000 (12:30 +0200)]
Change-Id: Ied1afe7639ab31715f47cab27b3c69ca1acad338

scilab/CHANGES.md
scilab/modules/core/sci_gateway/cpp/sci_fieldnames.cpp
scilab/modules/types/tests/nonreg_tests/bug_14564.dia.ref [deleted file]
scilab/modules/types/tests/nonreg_tests/bug_14564.tst

index 0325d02..0205bef 100644 (file)
@@ -801,7 +801,7 @@ Known issues
 * [#14553](http://bugzilla.scilab.org/show_bug.cgi?id=14553): `find(a=b)` crashed Scilab.
 * [#14557](http://bugzilla.scilab.org/show_bug.cgi?id=14557): `csim` failed when the system has no state.
 * [#14558](http://bugzilla.scilab.org/show_bug.cgi?id=14558): `square` was poor, clumsy and too specific. It is tagged as obsolete.
-* [#14564](http://bugzilla.scilab.org/show_bug.cgi?id=14564): `fieldnames` failed for empty structs.
+* [#14564](http://bugzilla.scilab.org/show_bug.cgi?id=14564): `fieldnames` failed for empty structs, tlists & mlists
 * [#14571](http://bugzilla.scilab.org/show_bug.cgi?id=14571): The types of input arguments of `figure()` were not checked.
 * [#14578](http://bugzilla.scilab.org/show_bug.cgi?id=14578): LaTeX string used for text uicontrol was not updated.
 * [#14582](http://bugzilla.scilab.org/show_bug.cgi?id=14582): `gettext` or it alias `_()` were sometimes applied to broken literal strings
index e545d49..cf44b4c 100644 (file)
@@ -79,7 +79,7 @@ types::Function::ReturnValue sci_fieldnames(types::typed_list &in, int _iRetCoun
         types::List *pInList = in[0]->getAs<types::List>();
         pIT = pInList->get(0);
 
-        if (pIT == nullptr || pIT->isString() == false)
+        if (pIT == nullptr || pIT->isString() == false || pIT->getAs<types::String>()->getSize() < 2)
         {
             // FIXME : iso-functionnal to Scilab < 6
             // Works on other types except userType, {m,t}list and struct
diff --git a/scilab/modules/types/tests/nonreg_tests/bug_14564.dia.ref b/scilab/modules/types/tests/nonreg_tests/bug_14564.dia.ref
deleted file mode 100644 (file)
index e84d5ba..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-// =============================================================================
-// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
-// Copyright (C) 2016 - Scilab Enterprises - Nicolas Carrez
-//
-//  This file is distributed under the same license as the Scilab package.
-// =============================================================================
-//
-// <-- Non-regression test for bug 14564 -->
-//
-// <-- CLI SHELL MODE -->
-//
-// <-- Bugzilla URL -->
-// http://bugzilla.scilab.org/show_bug.cgi?id=14564
-//
-// <-- Short Description -->
-// fieldnames failed for empty struct
-a.r = 1;
-a.r = null();
-assert_checkequal(fieldnames(a), []);
index 2d98da3..632550a 100644 (file)
@@ -8,14 +8,21 @@
 // <-- Non-regression test for bug 14564 -->
 //
 // <-- CLI SHELL MODE -->
+// <-- NO CHECK REF -->
 //
 // <-- Bugzilla URL -->
-// http://bugzilla.scilab.org/show_bug.cgi?id=14564
+// https://bugzilla.scilab.org/show_bug.cgi?id=14564
 //
 // <-- Short Description -->
-// fieldnames failed for empty struct
+// fieldnames failed for empty struct, tlist & mlist
 
 a.r = 1;
 a.r = null();
 assert_checkequal(fieldnames(a), []);
 
+u = mlist("v");
+assert_checkequal(fieldnames(u), []);
+
+u = tlist("v");
+assert_checkequal(fieldnames(u), []);
+