[PATCH] fix LoadStringW conformance and bug number 10932

Christopher Berner raccoonone at procyongames.com
Mon Jan 21 02:09:52 CST 2008


---
 dlls/user32/resource.c |   11 +++++++++++
 1 files changed, 11 insertions(+), 0 deletions(-)

diff --git a/dlls/user32/resource.c b/dlls/user32/resource.c
index b9a51ae..7e4cc11 100644
--- a/dlls/user32/resource.c
+++ b/dlls/user32/resource.c
@@ -363,6 +363,7 @@ INT WINAPI LoadStringW( HINSTANCE instance, UINT resource_id,
     WCHAR *p;
     int string_num;
     int i;
+    int strlen;
 
     TRACE("instance = %p, id = %04x, buffer = %p, length = %d\n",
           instance, resource_id, buffer, buflen);
@@ -379,9 +380,19 @@ INT WINAPI LoadStringW( HINSTANCE instance, UINT resource_id,
     for (i = 0; i < string_num; i++)
 	p += *p + 1;
 
+    strlen = (int)*p;
     TRACE("strlen = %d\n", (int)*p );
 
     if (buffer == NULL) return *p;
+
+    /*if buflen == 0, then return a read-only pointer to the resource itself in buffer
+    it is assumed that buffer is actually a (LPWSTR *) */
+    if(buflen == 0)
+    {
+        *((LPWSTR *)buffer) = p + 1;
+        return strlen;
+    }
+
     i = min(buflen - 1, *p);
     if (i > 0) {
 	memcpy(buffer, p + 1, i * sizeof (WCHAR));
-- 
1.5.2.5


--------------030300010902090604050107--



More information about the wine-patches mailing list