* Bug 16174 fixed: now libraryinfo() yields [] for lib without macro 71/21071/4
St├ęphane MOTTELET [Fri, 23 Aug 2019 09:13:44 +0000 (11:13 +0200)]
https://bugzilla.scilab.org/show_bug.cgi?id=16174

Change-Id: I3dcdb7c66d01fcde800cc522357c376c534eae8e

scilab/CHANGES.md
scilab/modules/core/tests/nonreg_tests/bug_16111.tst [moved from modules/core/tests/nonreg_tests/bug_16111.tst with 100% similarity]
scilab/modules/functions/sci_gateway/cpp/sci_libraryinfo.cpp
scilab/modules/functions/tests/nonreg_tests/bug_16174.tst [new file with mode: 0644]

index 3274c43..8b58ad6 100644 (file)
@@ -184,5 +184,6 @@ Bug Fixes
 * [#16087](http://bugzilla.scilab.org/show_bug.cgi?id=16087): Insertion of struct() in a non-empty struct crashed Scilab.
 * [#16111](http://bugzilla.scilab.org/show_bug.cgi?id=16111): `isglobal` was not supporting non-scalar array of strings as input.
 * [#16144](http://bugzilla.scilab.org/show_bug.cgi?id=16144): Addition of sparse matrices gave incorrect results.
+* [#16174](http://bugzilla.scilab.org/show_bug.cgi?id=16174): `libraryinfo` yielded 0x0 matrix of strings for libs without macro
 
 
index b81ed03..2319d2c 100644 (file)
@@ -37,9 +37,9 @@ types::Function::ReturnValue sci_libraryinfo(types::typed_list &in, int _iRetCou
     }
 
     /* Check the number of output argument */
-    if (_iRetCount != 1 && _iRetCount != 2)
+    if (_iRetCount > 2)
     {
-        Scierror(999, _("%s: Wrong number of output argument(s): %d expected.\n"), "libraryinfo", 1);
+        Scierror(999, _("%s: Wrong number of output argument(s): %d to %d expected.\n"), "libraryinfo", 1, 2);
         return types::Function::Error;
     }
 
@@ -69,14 +69,20 @@ types::Function::ReturnValue sci_libraryinfo(types::typed_list &in, int _iRetCou
 
     std::list<std::wstring> names;
     int size = lib->getMacrosName(names);
-    types::String* pNames = new types::String(size, 1);
-    int i = 0;
-    for (auto name : names)
+    if (size > 0)
     {
-        pNames->set(i++, name.c_str());
+        types::String* pNames = new types::String(size, 1);
+        int i = 0;
+        for (auto name : names)
+        {
+            pNames->set(i++, name.c_str());
+        }
+        out.push_back(pNames);
+    }
+    else
+    {
+        out.push_back(types::Double::Empty());
     }
-
-    out.push_back(pNames);
 
     if (_iRetCount == 2)
     {
diff --git a/scilab/modules/functions/tests/nonreg_tests/bug_16174.tst b/scilab/modules/functions/tests/nonreg_tests/bug_16174.tst
new file mode 100644 (file)
index 0000000..45f4d94
--- /dev/null
@@ -0,0 +1,18 @@
+// =============================================================================
+// 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 16114 -->
+//
+// <-- Bugzilla URL -->
+// https://bugzilla.scilab.org/show_bug.cgi?id=16114
+//
+// <-- Short Description -->
+// libraryinfo() yields 0x0 matrix of strings for lib without macro
+
+ assert_checktrue(isempty(libraryinfo("webtoolslib")))
\ No newline at end of file