* Bug #14527 fixed - Calling pathconvert function without parameters crashed Scilab.
[scilab.git] / scilab / modules / fileio / sci_gateway / cpp / sci_pathconvert.cpp
index 865a48a..3fdabf7 100644 (file)
@@ -2,11 +2,14 @@
 * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
 * Copyright (C) 2009 - DIGITEO - Allan CORNET
 *
-* This file must be used under the terms of the CeCILL.
-* This source file is licensed as described in the file COPYING, which
-* you should have received as part of this distribution.  The terms
-* are also available at
-* http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ * Copyright (C) 2012 - 2016 - Scilab Enterprises
+ *
+ * This file is hereby licensed under the terms of the GNU GPL v2.0,
+ * pursuant to article 5.3.4 of the CeCILL v.2.1.
+ * This file was originally licensed under the terms of the CeCILL v2.1,
+ * and continues to be available under such terms.
+ * For more information, see the COPYING file which you should have received
+ * along with this program.
 *
 */
 /*--------------------------------------------------------------------------*/
@@ -29,25 +32,23 @@ extern "C"
 #define _UNIX_TYPE      "u"
 #define _WINDOWS_TYPE   "w"
 
-using namespace types;
-
 /*--------------------------------------------------------------------------*/
-Function::ReturnValue sci_pathconvert(typed_list &in, int _iRetCount, typed_list &out)
+types::Function::ReturnValue sci_pathconvert(types::typed_list &in, int _iRetCount, types::typed_list &out)
 {
     PathConvertType PType   = AUTO_STYLE;
     int iPathExpand         = 1;
     int iPathTrail          = 1;
 
-    if (in.size() < 1 && in.size() > 4)
+    if (in.size() < 1 || in.size() > 4)
     {
         Scierror(999, _("%s: Wrong number of input arguments: %d to %d expected.\n"), "pathconvert" , 1, 4);
-        return Function::Error;
+        return types::Function::Error;
     }
 
     if (_iRetCount != 1)
     {
         Scierror(78, _("%s: Wrong number of output argument(s): %d expected.\n"), "pathconvert", 1);
-        return Function::Error;
+        return types::Function::Error;
     }
 
     //get type
@@ -55,8 +56,8 @@ Function::ReturnValue sci_pathconvert(typed_list &in, int _iRetCount, typed_list
     {
         if (in[3]->isString() == false || in[3]->getAs<types::String>()->getSize() != 1)
         {
-            Scierror(999, _("%s: Wrong type for input argument #%d: A string expected.\n"), "pathconvert", 4);
-            return Function::Error;
+            Scierror(999, _("%s: Wrong type for input argument #%d: string expected.\n"), "pathconvert", 4);
+            return types::Function::Error;
         }
 
         wchar_t* pwstType = in[3]->getAs<types::String>()->get(0);
@@ -71,7 +72,7 @@ Function::ReturnValue sci_pathconvert(typed_list &in, int _iRetCount, typed_list
         else
         {
             Scierror(999, _("%s: Wrong value for input argument #%d: '%s' or '%s' expected.\n"), "pathconvert", 4, _UNIX_TYPE, _WINDOWS_TYPE);
-            return Function::Error;
+            return types::Function::Error;
         }
     }
 
@@ -80,7 +81,7 @@ Function::ReturnValue sci_pathconvert(typed_list &in, int _iRetCount, typed_list
         if (in[2]->isBool() == false || in[2]->getAs<types::Bool>()->getSize() != 1)
         {
             Scierror(999, _("%s: Wrong type for input argument #%d: A boolean expected.\n"), "pathconvert", 3);
-            return Function::Error;
+            return types::Function::Error;
         }
 
         iPathExpand = in[2]->getAs<types::Bool>()->get()[0];
@@ -91,27 +92,27 @@ Function::ReturnValue sci_pathconvert(typed_list &in, int _iRetCount, typed_list
         if (in[1]->isBool() == false || in[1]->getAs<types::Bool>()->getSize() != 1)
         {
             Scierror(999, _("%s: Wrong type for input argument #%d: A boolean expected.\n"), "pathconvert", 2);
-            return Function::Error;
+            return types::Function::Error;
         }
 
         iPathTrail = in[1]->getAs<types::Bool>()->get()[0];
     }
 
-    if (in[0]->isDouble() && in[0]->getAs<Double>()->isEmpty())
+    if (in[0]->isDouble() && in[0]->getAs<types::Double>()->isEmpty())
     {
-        out.push_back(Double::Empty());
-        return Function::OK;
+        out.push_back(types::Double::Empty());
+        return types::Function::OK;
     }
 
     if (in[0]->isString() == false)
     {
         Scierror(999, _("%s: Wrong type for input argument #%d: Matrix of strings expected.\n"), "pathconvert", 1);
-        return Function::Error;
+        return types::Function::Error;
     }
 
-    String* pS      = in[0]->getAs<types::String>();
-    String* pOut    = new String(pS->getRows(), pS->getCols());
-    wchar_t** pStr  = pOut->get();
+    types::String* pS = in[0]->getAs<types::String>();
+    types::String* pOut = new types::String(pS->getRows(), pS->getCols());
+    wchar_t** pStr = pOut->get();
 
 
     for (int i = 0 ; i < pS->getSize() ; i++)
@@ -120,7 +121,7 @@ Function::ReturnValue sci_pathconvert(typed_list &in, int _iRetCount, typed_list
     }
 
     out.push_back(pOut);
-    return Function::OK;
+    return types::Function::OK;
     //SciErr sciErr;
     //int *piAddressVarOne = NULL;
     //wchar_t **pStVarOne = NULL;
@@ -165,7 +166,7 @@ Function::ReturnValue sci_pathconvert(typed_list &in, int _iRetCount, typed_list
 
     // if (iType4 != sci_strings)
     // {
-    //         Scierror(999,_("%s: Wrong type for input argument #%d: A string expected.\n"), fname, 4);
+    //         Scierror(999,_("%s: Wrong type for input argument #%d: string expected.\n"), fname, 4);
     //         return 0;
     // }
 
@@ -178,7 +179,7 @@ Function::ReturnValue sci_pathconvert(typed_list &in, int _iRetCount, typed_list
 
     // if ( (m4 != n4) && (n4 != 1) )
     // {
-    //         Scierror(999,_("%s: Wrong size for input argument #%d: A string expected.\n"), fname, 4);
+    //         Scierror(999,_("%s: Wrong size for input argument #%d: string expected.\n"), fname, 4);
     //         return 0;
     // }
 
@@ -446,7 +447,7 @@ Function::ReturnValue sci_pathconvert(typed_list &in, int _iRetCount, typed_list
     //}
     //else
     //{
-    // Scierror(999,_("%s: Wrong type for input argument #%d: A string expected.\n"), fname, 1);
+    // Scierror(999,_("%s: Wrong type for input argument #%d: string expected.\n"), fname, 1);
     // return 0;
     //}
     //return 0;