patch to fix locale behavior

Mehmet YASAR myasar at free.fr
Thu May 23 15:17:38 CDT 2002


Hi,

It's a repost of my previous patch for GetLocaleInfoA (it has been
dropped ?) with the same fix applied to GetNumberFormatA and
GetCurrencyFormatA (as shown in my locale regression test).

Mehmet

Changelog
Fix GetLocaleInfoA /GetNumberFormatA /GetCurrencyFormatA to
work as Windows (first fill buffer then test buffer length)
since some app rely on this bug.







-------------- next part --------------
diff -ur /home/mehmet/CVS/wine/ole/ole2nls.c ./ole2nls.c
--- /home/mehmet/CVS/wine/ole/ole2nls.c	Sun Apr 28 15:42:21 2002
+++ ./ole2nls.c	Thu May 23 18:54:38 2002
@@ -574,8 +574,9 @@
     }
     /* if len=0 return only the length, don't touch the buffer*/
     if (len) {
-	lstrcpynA(buf,retString,len);
-	return strlen(buf) + 1;
+	/* Like Windows we copy len bytes to buffer and we check len after */
+	strncpy(buf,retString,len);
+	return (len < strlen(retString) + 1)? 0 : strlen(retString)+1 ;
     }
     return strlen(retString)+1;
 }
@@ -3275,9 +3276,8 @@
         retVal = strlen(sDestination) + 1;
     else           
     {
-        strncpy (lpNumberStr, sDestination, cchNumber-1);
-        *(lpNumberStr+cchNumber-1) = '\0';   /* ensure we got a NULL at the end */
-        retVal = strlen(lpNumberStr);
+        strncpy (lpNumberStr, sDestination, cchNumber);
+	retVal = cchNumber < (strlen(sDestination)+1) ? 0: strlen(sDestination)+1;
     }
           
     return retVal;
@@ -3531,9 +3531,8 @@
 
     else
     {
-        strncpy (lpCurrencyStr, pDestination, cchCurrency-1);
-        *(lpCurrencyStr+cchCurrency-1) = '\0';   /* ensure we got a NULL at the end */
-        return  strlen(lpCurrencyStr);
+        strncpy (lpCurrencyStr, pDestination, cchCurrency);
+	return (cchCurrency < (strlen(pDestination)+1) ? 0: strlen(pDestination)+1);
     }    
 }
 
Only in .: ole2nls.c~







More information about the wine-patches mailing list