bug #14097: genlib does not add end separator 51/17251/3
Antoine ELIAS [Thu, 24 Sep 2015 10:22:50 +0000 (12:22 +0200)]
Change-Id: I1faff14deaacc3eb65ce532df658180730660173

scilab/CHANGES_6.0.X
scilab/modules/ast/src/cpp/types/library.cpp
scilab/modules/fileio/fileio.vcxproj
scilab/modules/fileio/fileio.vcxproj.filters
scilab/modules/fileio/includes/pathconvert.h [moved from scilab/modules/fileio/src/c/pathconvert.h with 100% similarity]
scilab/modules/io/sci_gateway/cpp/sci_genlib.cpp
scilab/modules/io/sci_gateway/cpp/sci_lib.cpp
scilab/modules/io/tests/nonreg_tests/bug_14097.dia.ref [new file with mode: 0644]
scilab/modules/io/tests/nonreg_tests/bug_14097.tst [new file with mode: 0644]

index d3e7051..f132da8 100644 (file)
@@ -4,7 +4,7 @@
 New Features
 =============
 
-* SSE2, Streaming SIMD Extensions 2 support is now mandatory to run Scilab on 
+* SSE2, Streaming SIMD Extensions 2 support is now mandatory to run Scilab on
   Linux i686.
 
 * valgrind error detection added to test_run (Linux Only)
@@ -102,6 +102,8 @@ Scilab Bug Fixes
 
 * Bug #14095 fixed - Scilab crashed when a .fig file was loaded with loadmatfile function.
 
+* Bug #14097 fixed - genlib no more adds a separator at the end of the lib path if it is not given in the directory path.
+
 * Bug #14105 fixed - New block comments /*...*/ feature was not documented.
 
 * Bug #14107 fixed - lstcat of a string and a list did not produce consistent results.
index c49c69f..c3012a0 100644 (file)
@@ -55,9 +55,7 @@ Library::~Library()
 bool Library::toString(std::wostringstream& ostr)
 {
     wchar_t output[1024] = {0};
-    char* str = wide_string_to_UTF8(m_wstPath.c_str());
-    os_swprintf(output, 1024, _W("Functions files location : %s.\n").c_str(), str);
-    FREE(str);
+    os_swprintf(output, 1024, _W("Functions files location : %s.\n").c_str(), m_wstPath.c_str());
 
     ostr << output << std::endl;
 
index 4f5c373..c064f44 100644 (file)
@@ -326,6 +326,7 @@ lib /DEF:"$(ProjectDir)preferences_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Pla
     <ClInclude Include="includes\mtell.h" />
     <ClInclude Include="includes\newest.h" />
     <ClInclude Include="includes\os_wfopen.h" />
+    <ClInclude Include="includes\pathconvert.h" />
     <ClInclude Include="includes\readline.h" />
     <ClInclude Include="includes\removedir.h" />
     <ClInclude Include="includes\scanf_functions.h" />
@@ -346,7 +347,6 @@ lib /DEF:"$(ProjectDir)preferences_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Pla
     <ClInclude Include="src\c\getrelativefilename.h" />
     <ClInclude Include="src\c\isDrive.h" />
     <ClInclude Include="src\c\movefile.h" />
-    <ClInclude Include="src\c\pathconvert.h" />
     <ClInclude Include="src\c\Status2Mode.h" />
   </ItemGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
index 73dd423..8005caa 100644 (file)
     <ClInclude Include="src\c\Status2Mode.h">
       <Filter>Header Files</Filter>
     </ClInclude>
-    <ClInclude Include="src\c\pathconvert.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
     <ClInclude Include="src\c\movefile.h">
       <Filter>Header Files</Filter>
     </ClInclude>
     <ClInclude Include="includes\filemanager_interface.h">
       <Filter>Header Files</Filter>
     </ClInclude>
+    <ClInclude Include="includes\pathconvert.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
   </ItemGroup>
   <ItemGroup>
     <ResourceCompile Include="src\c\fileio.rc">
index 0f498ee..66ab66f 100644 (file)
@@ -32,7 +32,6 @@
 #include "context.hxx"
 #include "io_gw.hxx"
 #include "scilabWrite.hxx"
-#include "expandPathVariable.h"
 #include "configvariable.hxx"
 #include "library.hxx"
 #include "macrofile.hxx"
@@ -56,6 +55,7 @@ extern "C"
 #include "Scierror.h"
 #include "scicurdir.h"
 #include "md5.h"
+#include "pathconvert.h"
 }
 
 
@@ -170,14 +170,14 @@ types::Function::ReturnValue sci_genlib(types::typed_list &in, int _iRetCount, t
     }
 
     wchar_t* pstFile = pS->get(0);
-    pstParsePath = expandPathVariableW(pstFile);
+    pstParsePath = pathconvertW(pstFile, TRUE, TRUE, AUTO_STYLE);
 
     if (in.size() == 1)
     {
         delete pS;
     }
 
-    os_swprintf(pstParseFile, PATH_MAX + FILENAME_MAX, L"%ls%lslib", pstParsePath, FILE_SEPARATOR);
+    os_swprintf(pstParseFile, PATH_MAX + FILENAME_MAX, L"%lslib", pstParsePath);
 
     if (bVerbose)
     {
index c91b559..efca0c3 100644 (file)
@@ -21,7 +21,7 @@ extern "C"
 {
 #include "Scierror.h"
 #include "sci_malloc.h"
-#include "expandPathVariable.h"
+#include "pathconvert.h"
 }
 
 /*--------------------------------------------------------------------------*/
@@ -51,7 +51,7 @@ types::Function::ReturnValue sci_lib(types::typed_list &in, int _iRetCount, type
     }
 
     wchar_t* pstPath = pS->get(0);
-    wchar_t* pwstPath = expandPathVariableW(pstPath);
+    wchar_t* pwstPath = pathconvertW(pstPath, TRUE, TRUE, AUTO_STYLE);
     int err = 0;
     types::Library* lib = loadlib(pwstPath, &err, false, false);
     FREE(pwstPath);
diff --git a/scilab/modules/io/tests/nonreg_tests/bug_14097.dia.ref b/scilab/modules/io/tests/nonreg_tests/bug_14097.dia.ref
new file mode 100644 (file)
index 0000000..96b0305
--- /dev/null
@@ -0,0 +1,26 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2015 - Scilab Enterprises - Antoine ELIAS
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 14097 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/14097
+//
+// <-- Short Description -->
+//
+// genlib no more adds a separator at the end of the lib path if it is not given in the directory path.
+ref = pathconvert("SCI/modules/string/macros/");
+genlib("slib", "SCI/modules/string/macros");
+s1=string(slib)(1);
+assert_checkequal(s1, ref);
+clear slib
+genlib("slib", "SCI/modules/string/macros/");
+s2=string(slib)(1);
+assert_checkequal(s2, ref);
+clear slib
diff --git a/scilab/modules/io/tests/nonreg_tests/bug_14097.tst b/scilab/modules/io/tests/nonreg_tests/bug_14097.tst
new file mode 100644 (file)
index 0000000..8c41630
--- /dev/null
@@ -0,0 +1,29 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2015 - Scilab Enterprises - Antoine ELIAS
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 14097 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/14097
+//
+// <-- Short Description -->
+//
+// genlib no more adds a separator at the end of the lib path if it is not given in the directory path.
+
+ref = pathconvert("SCI/modules/string/macros/");
+genlib("slib", "SCI/modules/string/macros");
+s1=string(slib)(1);
+assert_checkequal(s1, ref);
+clear slib
+
+genlib("slib", "SCI/modules/string/macros/");
+s2=string(slib)(1);
+assert_checkequal(s2, ref);
+clear slib
+