[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