fix some gcc 4.9 valid warnings 45/17045/2
Clément DAVID [Wed, 28 Jan 2015 16:23:26 +0000 (17:23 +0100)]
Scilab types used an int size whereas some natives functions return a
size_t. static_cast<int> is needed.

`for(iterator i = begin(), end = cases->end(); i != end; ++i)` will
disable optimizations as the end variable is not `const` thus might be
modified in the loop.

Change-Id: I828c95342c4e804e54dc7c0424a084d9708141cd

13 files changed:
scilab/modules/ast/includes/ast/runvisitor.hxx
scilab/modules/ast/includes/exps/exp.hxx
scilab/modules/ast/includes/types/sparse.hxx
scilab/modules/boolean/sci_gateway/cpp/sci_bool2s.cpp
scilab/modules/core/src/c/GetXmlFileEncoding.c
scilab/modules/elementary_functions/includes/elem_func_gw.hxx
scilab/modules/elementary_functions/sci_gateway/cpp/elem_func_gw.cpp
scilab/modules/elementary_functions/sci_gateway/cpp/sci_isequal.cpp
scilab/modules/elementary_functions/sci_gateway/cpp/sci_matrix.cpp
scilab/modules/elementary_functions/src/cpp/max.cpp
scilab/modules/elementary_functions/src/cpp/min.cpp
scilab/modules/fileio/src/cpp/mgetl.cpp
scilab/modules/output_stream/src/cpp/scilab_sprintf.cpp

index a94580d..b94e4c6 100644 (file)
@@ -81,7 +81,7 @@ public:
         }
         else
         {
-            for (vector<types::InternalType*>::iterator rv = _resultVect.begin(), end = _resultVect.end(); rv != end; rv++)
+            for (vector<types::InternalType*>::iterator rv = _resultVect.begin(); rv != _resultVect.end(); rv++)
             {
                 if (*rv != nullptr)
                 {
index 279107c..cabf1d4 100644 (file)
@@ -55,7 +55,7 @@ public:
     /** \brief Destroys an Expression node. */
     virtual ~Exp ()
     {
-        for (exps_t::const_iterator it = _exps.begin(), itEnd = _exps.end(); it != itEnd; ++it)
+        for (exps_t::const_iterator it = _exps.begin(); it != _exps.end(); ++it)
         {
             if (*it != NULL)
             {
index b237de0..f6d55ec 100644 (file)
@@ -668,7 +668,7 @@ struct EXTERN_AST SparseBool : GenericType
 
     bool isTrue()
     {
-        if (nbTrue() == m_iSize)
+        if (static_cast<int>(nbTrue()) == m_iSize)
         {
             return true;
         }
index 5e286ad..7cfb1b7 100644 (file)
@@ -84,7 +84,7 @@ types::Function::ReturnValue sci_bool2s(types::typed_list &in, int _iRetCount, t
 
         types::Sparse* pSpOut = new types::Sparse(pSpIn->getRows(), pSpIn->getCols());
 
-        size_t iNonZeros = pSpIn->nonZeros();
+        int iNonZeros = static_cast<int>(pSpIn->nonZeros());
 
         //coords
         int* pRows = new int[iNonZeros * 2];
@@ -108,7 +108,7 @@ types::Function::ReturnValue sci_bool2s(types::typed_list &in, int _iRetCount, t
         types::SparseBool* pSpbIn = in[0]->getAs<types::SparseBool>();
         types::Sparse* pSpOut = new types::Sparse(pSpbIn ->getRows(), pSpbIn ->getCols());
 
-        size_t iNonZeros = pSpbIn ->nbTrue();
+        int iNonZeros = static_cast<int>(pSpbIn->nbTrue());
 
         //coords
         int* pRows = new int[iNonZeros * 2];
index d2d202a..ff7da7c 100644 (file)
@@ -23,7 +23,7 @@ char *GetXmlFileEncoding(const char *filename)
     char *encoding = NULL;
     xmlDocPtr doc = NULL;
     BOOL bConvert = FALSE;
-    char *shortfilename = getshortpathname((char*)filename, &bConvert);
+    char *shortfilename = getshortpathname(filename, &bConvert);
 
     /* default */
     encoding = os_strdup(DEFAULT_ENCODING);
@@ -42,7 +42,7 @@ char *GetXmlFileEncoding(const char *filename)
                     FREE(encoding);
                     encoding = NULL;
                 }
-                encoding = os_strdup((char*)doc->encoding);
+                encoding = os_strdup(doc->encoding);
             }
         }
         xmlFreeDoc (doc);
index 616ba89..946db86 100644 (file)
@@ -86,7 +86,7 @@ CPP_GATEWAY_PROTOTYPE(sci_acosh);
 CPP_GATEWAY_PROTOTYPE(sci_asinh);
 CPP_GATEWAY_PROTOTYPE(sci_atanh);
 
-bool getDimsFromArguments(types::typed_list& in, char* _pstName, int* _iDims, int** _piDims, bool* _alloc);
+bool getDimsFromArguments(types::typed_list& in, const std::string& _pstName, int* _iDims, int** _piDims, bool* _alloc);
 
 template <class T>
 types::Double* getAsDouble(T* _val)
index 35805a4..ea24196 100644 (file)
@@ -93,7 +93,7 @@ int ElemFuncModule::Load()
 }
 
 
-bool getDimsFromArguments(types::typed_list& in, char* _pstName, int* _iDims, int** _piDims, bool* _alloc)
+bool getDimsFromArguments(types::typed_list& in, const std::string& _pstName, int* _iDims, int** _piDims, bool* _alloc)
 {
     types::Double* pOut = 0;
 
@@ -155,7 +155,7 @@ bool getDimsFromArguments(types::typed_list& in, char* _pstName, int* _iDims, in
             if (in[i]->isArrayOf() == false)
             {
                 delete[] * _piDims;
-                Scierror(999, _("%s: Wrong type for input argument #%d: A scalar expected.\n"), _pstName, i + 1);
+                Scierror(999, _("%s: Wrong type for input argument #%d: A scalar expected.\n"), _pstName.c_str(), i + 1);
                 return false;
             }
 
@@ -163,7 +163,7 @@ bool getDimsFromArguments(types::typed_list& in, char* _pstName, int* _iDims, in
             if (pGTIn->isScalar() == false || pGTIn->isComplex())
             {
                 delete[] * _piDims;
-                Scierror(999, _("%s: Wrong size for input argument #%d: A scalar expected.\n"), _pstName, i + 1);
+                Scierror(999, _("%s: Wrong size for input argument #%d: A scalar expected.\n"), _pstName.c_str(), i + 1);
                 return false;
             }
 
@@ -175,7 +175,7 @@ bool getDimsFromArguments(types::typed_list& in, char* _pstName, int* _iDims, in
                     if (dValue >= INT_MAX)
                     {
                         delete[] * _piDims;
-                        Scierror(999, _("%s: variable size exceeded : less than %d expected.\n"), _pstName, INT_MAX);
+                        Scierror(999, _("%s: variable size exceeded : less than %d expected.\n"), _pstName.c_str(), INT_MAX);
                         return false;
                     }
                     (*_piDims)[i] = static_cast<int>(dValue);
@@ -205,7 +205,7 @@ bool getDimsFromArguments(types::typed_list& in, char* _pstName, int* _iDims, in
                     if (llValue >= INT_MAX)
                     {
                         delete[] * _piDims;
-                        Scierror(999, _("%s: variable size exceeded : less than %d expected.\n"), _pstName, INT_MAX);
+                        Scierror(999, _("%s: variable size exceeded : less than %d expected.\n"), _pstName.c_str(), INT_MAX);
                         return false;
                     }
                     (*_piDims)[i] = static_cast<int>(llValue);
@@ -217,14 +217,14 @@ bool getDimsFromArguments(types::typed_list& in, char* _pstName, int* _iDims, in
                     if (ullValue >= INT_MAX)
                     {
                         delete[] * _piDims;
-                        Scierror(999, _("%s: variable size exceeded : less than %d expected.\n"), _pstName, INT_MAX);
+                        Scierror(999, _("%s: variable size exceeded : less than %d expected.\n"), _pstName.c_str(), INT_MAX);
                         return false;
                     }
                     (*_piDims)[i] = static_cast<int>(ullValue);
                     break;
                 }
                 default:
-                    Scierror(999, _("%s: Wrong size for input argument #%d: A scalar expected.\n"), _pstName, i + 1);
+                    Scierror(999, _("%s: Wrong size for input argument #%d: A scalar expected.\n"), _pstName.c_str(), i + 1);
                     return false;
             }
         }
index 6909a44..d37324f 100644 (file)
@@ -24,7 +24,7 @@ Function::ReturnValue sci_isequal(types::typed_list &in, int _iRetCount, types::
         return Function::Error;
     }
 
-    for (int i = 1 ; i < in.size() ; i++)
+    for (int i = 1 ; i < static_cast<int>(in.size()); i++)
     {
         InternalType* pIn1 = in[i - 1];
         InternalType* pIn2 = in[i];
index 24537ff..be1fd29 100644 (file)
@@ -119,7 +119,7 @@ types::Function::ReturnValue sci_matrix(types::typed_list &in, int _iRetCount, t
     {
         iDims = static_cast<int>(in.size()) - 1;
         piSizes = new int[iDims];
-        for (int i = 1; i < in.size(); i++)
+        for (int i = 1; i < static_cast<int>(in.size()); i++)
         {
             if (in[i]->isDouble() == false)
             {
index 8523f28..b75a989 100644 (file)
@@ -27,7 +27,7 @@ void max(std::vector<types::Double*> vectIn, int iOrientation, types::Double* pD
     if (vectIn.size() > 1) // Find the max value between all inputs matrix
     {
         //Find the first non scalar to init output matrix.
-        for (int iter = 0; iter < vectIn.size(); iter++)
+        for (int iter = 0; iter < static_cast<int>(vectIn.size()); iter++)
         {
             if (vectIn[iter]->isScalar() == false)
             {
@@ -55,7 +55,7 @@ void max(std::vector<types::Double*> vectIn, int iOrientation, types::Double* pD
 
             for (int i = 0; i < iSize; i++)
             {
-                for (int iter = 0; iter < vectIn.size(); iter++)
+                for (int iter = 0; iter < static_cast<int>(vectIn.size()); iter++)
                 {
                     int iPos = i;
                     if (vectIn[iter]->isScalar())
@@ -76,7 +76,7 @@ void max(std::vector<types::Double*> vectIn, int iOrientation, types::Double* pD
         {
             for (int i = 0; i < iSize; i++)
             {
-                for (int iter = 0; iter < vectIn.size(); iter++)
+                for (int iter = 0; iter < static_cast<int>(vectIn.size()); iter++)
                 {
                     int iPos = i;
                     if (vectIn[iter]->isScalar())
index 1c450e5..e348f2d 100644 (file)
@@ -27,7 +27,7 @@ void min(std::vector<types::Double*> vectIn, int iOrientation, types::Double* pD
     if (vectIn.size() > 1) // Find the min value between all inputs matrix
     {
         //Find the first non scalar to init output matrix.
-        for (int iter = 0; iter < vectIn.size(); iter++)
+        for (int iter = 0; iter < static_cast<int>(vectIn.size()); iter++)
         {
             if (vectIn[iter]->isScalar() == false)
             {
@@ -55,7 +55,7 @@ void min(std::vector<types::Double*> vectIn, int iOrientation, types::Double* pD
 
             for (int i = 0; i < iSize; i++)
             {
-                for (int iter = 0; iter < vectIn.size(); iter++)
+                for (int iter = 0; iter < static_cast<int>(vectIn.size()); iter++)
                 {
                     int iPos = i;
                     if (vectIn[iter]->isScalar())
@@ -76,7 +76,7 @@ void min(std::vector<types::Double*> vectIn, int iOrientation, types::Double* pD
         {
             for (int i = 0; i < iSize; i++)
             {
-                for (int iter = 0; iter < vectIn.size(); iter++)
+                for (int iter = 0; iter < static_cast<int>(vectIn.size()); iter++)
                 {
                     int iPos = i;
                     if (vectIn[iter]->isScalar())
index 31ce41f..d04435e 100644 (file)
@@ -111,7 +111,7 @@ wchar_t **mgetl(int fd, int nbLinesIn, int *nbLinesOut, int *ierr)
             }
             while ( getLine ( Line, LINE_MAX * iLineSizeMult, pFile ) != NULL )
             {
-                if (wcslen(Line) >= (LINE_MAX * iLineSizeMult) - 1)
+                if (((int) wcslen(Line)) >= (LINE_MAX * iLineSizeMult) - 1)
                 {
                     FREE(Line);
                     iLineSizeMult++;
@@ -188,7 +188,7 @@ wchar_t **mgetl(int fd, int nbLinesIn, int *nbLinesOut, int *ierr)
 
                         if ( getLine ( Line, LINE_MAX * iLineSizeMult, pFile) != NULL)
                         {
-                            if (wcslen(Line) >= (LINE_MAX * iLineSizeMult) - 1)
+                            if (((int) wcslen(Line)) >= (LINE_MAX * iLineSizeMult) - 1)
                             {
                                 FREE(Line);
                                 iLineSizeMult++;
index b9be1ea..20368b2 100644 (file)
@@ -568,21 +568,24 @@ wchar_t** scilab_sprintf(const std::string& funcname, const wchar_t* _pwstInput,
                 case InternalType::ScilabString:
                 {
                     wchar_t* pwstStr = nullptr;
+                   std::wstring NaN = NanString;
+                   std::wstring nInf = NegInfString;
+                   std::wstring pInf = InfString;
 
                     InternalType* it = in[tok->pos];
                     if (it->isDouble() && std::isnan(it->getAs<types::Double>()->get(0)))
                     {
-                        pwstStr = NanString;
+                        pwstStr = const_cast<wchar_t*>(NaN.c_str());
                     }
                     else if (it->isDouble() && std::isfinite(it->getAs<types::Double>()->get(0)) == false)
                     {
                         if (std::signbit(it->getAs<types::Double>()->get(0)))
                         {
-                            pwstStr = NegInfString;
+                            pwstStr = const_cast<wchar_t*>(nInf.c_str());
                         }
                         else
                         {
-                            pwstStr = InfString;
+                            pwstStr = const_cast<wchar_t*>(pInf.c_str());
                         }
                     }
                     else