* Bug 15920 fixed: now genlib always regenerates missing .bin 74/20674/2
St├ęphane Mottelet [Thu, 3 Jan 2019 11:30:04 +0000 (12:30 +0100)]
http://bugzilla.scilab.org/show_bug.cgi?id=15920

Change-Id: I808f5d5b10d0151a438497fcd8cb34015c811da0

scilab/CHANGES.md
scilab/modules/io/sci_gateway/cpp/sci_genlib.cpp
scilab/modules/io/tests/nonreg_tests/bug_15920.tst [new file with mode: 0644]

index 27c1254..a788617 100644 (file)
@@ -653,6 +653,7 @@ Known issues
 * [#15850](http://bugzilla.scilab.org/show_bug.cgi?id=15850): Adding a space after a string increases its size. 
 * [#15854](http://bugzilla.scilab.org/show_bug.cgi?id=15854): `horner(1:$,4)` yielded an error. Extractions from `cblock` tables were impacted.
 * [#15890](http://bugzilla.scilab.org/show_bug.cgi?id=15890): `evstr` sometimes yielded some `+[]` warnings.
+* [#15920](http://bugzilla.scilab.org/show_bug.cgi?id=15920): genlib() did not regenerate a missing .bin if the .sci was unchanged (Scilab 6 regression)
 
 
 ### Bugs fixed in 6.0.1:
index af0bab9..6c50ff4 100644 (file)
@@ -264,7 +264,7 @@ types::Function::ReturnValue sci_genlib(types::typed_list &in, int _iRetCount, t
             {
                 //check if is exist in old file
                 MacroInfoList::iterator it = lstOld.find(pstPathBin);
-                if (it != lstOld.end())
+                if (it != lstOld.end() && FileExistW(stFullPathBin.data()))
                 {
                     if (wide_md5 == (*it).second.md5)
                     {
diff --git a/scilab/modules/io/tests/nonreg_tests/bug_15920.tst b/scilab/modules/io/tests/nonreg_tests/bug_15920.tst
new file mode 100644 (file)
index 0000000..11e9555
--- /dev/null
@@ -0,0 +1,24 @@
+// =============================================================================
+// 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 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/15920
+//
+// genlib() does not regenerate a missing .bin if the .sci is unchanged (Scilab 6 regression)
+
+path = fullfile(TMPDIR,"test");
+rmdir(path, 's');
+mkdir(path);
+mputl("function a=pi(), a = %pi; endfunction", fullfile(path,"pi.sci"));
+genlib("pilib", path)
+deletefile(fullfile(path,"pi.bin"))
+clear pilib
+genlib("pilib", path)
+assert_checktrue(isfile(fullfile(path,"pi.bin")))