Merge remote-tracking branch 'origin/master' into windows
[scilab.git] / scilab / modules / fileio / sci_gateway / cpp / sci_mfscanf.cpp
index b30831a..125f688 100644 (file)
@@ -5,11 +5,14 @@
 * Copyright (C) 2010 - DIGITEO - Antoine ELIAS
 * Copyright (C) 2011 - DIGITEO - Cedric DELAMARRE
 *
-* 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.
 *
 */
 /*--------------------------------------------------------------------------*/
@@ -49,7 +52,7 @@ types::Function::ReturnValue sci_mfscanf(types::typed_list &in, int _iRetCount,
     int retval_s    = 0;
     int rowcount    = 0;
     rec_entry buf[MAXSCAN] = {0};
-    entry *data;
+    entry *data = NULL;
     sfdir type[MAXSCAN] = {NONE};
     sfdir type_s[MAXSCAN] = {NONE};
 
@@ -125,6 +128,11 @@ types::Function::ReturnValue sci_mfscanf(types::typed_list &in, int _iRetCount,
 
         // get data
         int err = do_xxscanf("mfscanf", fDesc, Format, &args, NULL, &retval, buf, type);
+        if (err == DO_XXPRINTF_MISMATCH)
+        {
+            break;
+        }
+
         if (err < 0)
         {
             return types::Function::Error;
@@ -211,6 +219,8 @@ types::Function::ReturnValue sci_mfscanf(types::typed_list &in, int _iRetCount,
                 uiFormatUsed |= (1 << 2);
                 break;
             }
+            case NONE:
+                break;
         }
     }