[PATCH] Patch to fix LoadStringW when buflen is 0
Christopher Berner
raccoonone at procyongames.com
Thu Jan 17 01:21:23 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..148e9d1 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
--------------050002020308080709010304--
More information about the wine-patches
mailing list