fix for LoadStringA - return part of string if buffer is to small Modified: trunk/reactos/lib/user32/misc/resources.c _____
Modified: trunk/reactos/lib/user32/misc/resources.c --- trunk/reactos/lib/user32/misc/resources.c 2005-12-03 20:53:23 UTC (rev 19844) +++ trunk/reactos/lib/user32/misc/resources.c 2005-12-03 21:00:55 UTC (rev 19845) @@ -98,7 +98,7 @@
{ UNICODE_STRING wstrResStr; ANSI_STRING strBuf; - NTSTATUS nErrCode; + INT retSize;
/* parameter validation */ if @@ -125,14 +125,13 @@ strBuf.MaximumLength = nBufferMax * sizeof(CHAR); strBuf.Buffer = lpBuffer;
- nErrCode = RtlUnicodeStringToAnsiString(&strBuf, &wstrResStr, FALSE); + retSize = WideCharToMultiByte(CP_ACP, 0, wstrResStr.Buffer, wstrResStr.Length / sizeof(WCHAR), strBuf.Buffer, strBuf.MaximumLength, NULL, NULL);
- if(!NT_SUCCESS(nErrCode)) - { + if(!retSize) /* failure */ - RtlNtStatusToDosError(nErrCode); return 0; - } + else + strBuf.Length = retSize;
/* the ANSI string may not be null-terminated */ if(strBuf.Length >= strBuf.MaximumLength)