Aric Stewart : kernel32: Set last error to ERROR_INSUFFICIENT_BUFFER in LCMapString when the sort key buffer is too small .

Alexandre Julliard julliard at winehq.org
Fri Oct 26 08:34:42 CDT 2007


Module: wine
Branch: master
Commit: 6a8219a6b1f2a4703179cd2b514a2133e3342bc1
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=6a8219a6b1f2a4703179cd2b514a2133e3342bc1

Author: Aric Stewart <aric at codeweavers.com>
Date:   Thu Oct 25 14:53:01 2007 -0500

kernel32: Set last error to ERROR_INSUFFICIENT_BUFFER in LCMapString when the sort key buffer is too small.

---

 dlls/kernel32/locale.c |    8 +++++++-
 1 files changed, 7 insertions(+), 1 deletions(-)

diff --git a/dlls/kernel32/locale.c b/dlls/kernel32/locale.c
index 1ecda49..ea39c52 100644
--- a/dlls/kernel32/locale.c
+++ b/dlls/kernel32/locale.c
@@ -2349,6 +2349,7 @@ INT WINAPI LCMapStringW(LCID lcid, DWORD flags, LPCWSTR src, INT srclen,
 
     if (flags & LCMAP_SORTKEY)
     {
+        INT ret;
         if (src == dst)
         {
             SetLastError(ERROR_INVALID_FLAGS);
@@ -2360,7 +2361,10 @@ INT WINAPI LCMapStringW(LCID lcid, DWORD flags, LPCWSTR src, INT srclen,
         TRACE("(0x%04x,0x%08x,%s,%d,%p,%d)\n",
               lcid, flags, debugstr_wn(src, srclen), srclen, dst, dstlen);
 
-        return wine_get_sortkey(flags, src, srclen, (char *)dst, dstlen);
+        ret = wine_get_sortkey(flags, src, srclen, (char *)dst, dstlen);
+        if (ret == 0)
+            SetLastError(ERROR_INSUFFICIENT_BUFFER);
+        return ret;
     }
 
     /* SORT_STRINGSORT must be used exclusively with LCMAP_SORTKEY */
@@ -2497,6 +2501,8 @@ INT WINAPI LCMapStringA(LCID lcid, DWORD flags, LPCSTR src, INT srclen,
             goto map_string_exit;
         }
         ret = wine_get_sortkey(flags, srcW, srclenW, dst, dstlen);
+        if (ret == 0)
+            SetLastError(ERROR_INSUFFICIENT_BUFFER);
         goto map_string_exit;
     }
 




More information about the wine-cvs mailing list