Bug 13721 fixed: Could not write in a file opened in r+ mode
[scilab.git] / scilab / modules / fileio / sci_gateway / c / sci_mfprintf.c
index 5e92be6..2d17687 100644 (file)
@@ -32,6 +32,7 @@ int sci_mfprintf(char *fname, unsigned long fname_len)
     int l2 = 0, m2 = 0, n2 = 0;
     int lcount = 0, rval = 0, mx = 0, mk = 0, nk = 0, k = 0;
     char *ptrFormat = NULL;
+    int lenptrFormat = 0;
     int i = 0;
     int NumberPercent = 0;
     int param1 = 0;
@@ -105,13 +106,14 @@ int sci_mfprintf(char *fname, unsigned long fname_len)
     /* checks file mode */
     /* bug 3898 */
     /* read only attrib 1xx*/
-    if ( (fileMode >= 100) && (fileMode < 200) && !isSTD)
+    if ( (fileMode >= 100) && (fileMode < 200) && ((fileMode % 100) < 10) /* check that it is not r+ */ &&  !isSTD)
     {
         Scierror(999, _("%s: Wrong file mode: READ only.\n"), fname);
         return 0;
     }
 
-    for (i = 0; i < (int)strlen(ptrFormat); i++)
+    lenptrFormat = (int)strlen(ptrFormat);
+    for (i = 0; i < lenptrFormat; i++)
     {
         if (ptrFormat[i] == '%')
         {