[PATCH v3 2/7] ntdll: Provide some Unicode helpers for Unix libs.
Jacek Caban
jacek at codeweavers.com
Wed Oct 6 08:53:53 CDT 2021
Hi Huw,
On 06/10/2021 15:12, Huw Davies wrote:
> On Wed, Oct 06, 2021 at 12:57:04PM +0200, Jacek Caban wrote:
>> Signed-off-by: Jacek Caban <jacek at codeweavers.com>
>> ---
>> dlls/ntdll/unix/env.c | 98 ++++++++++++++++++++++++++++++-------------
>> 1 file changed, 69 insertions(+), 29 deletions(-)
> Hi Jacek,
>
> This is giving me random crashes on (32-bit) macOS, e.g.:
>
> tools/runtest -q -P wine -T . -M gdi32.dll -p dlls/gdi32/tests/gdi32_test.exe brush && touch dlls/gdi32/tests/brush.ok
> /bin/sh: line 1: 59187 Segmentation fault: 11 tools/runtest -q -P wine -T . -M gdi32.dll -p dlls/gdi32/tests/gdi32_test.exe brush
I think I can see the problem, the attached patch should help. I will do
more testing and send an updated patch.
Thanks,
Jacek
-------------- next part --------------
diff --git a/dlls/ntdll/unix/env.c b/dlls/ntdll/unix/env.c
index 52736344078..13bf85d2eb6 100644
--- a/dlls/ntdll/unix/env.c
+++ b/dlls/ntdll/unix/env.c
@@ -644,10 +644,11 @@ DWORD ntdll_umbstowcs( const char *src, DWORD srclen, WCHAR *dst, DWORD dstlen )
}
else /* utf-8 */
{
+ reslen = 0;
RtlUTF8ToUnicodeN( dst, dstlen * sizeof(WCHAR), &reslen, src, srclen );
reslen /= sizeof(WCHAR);
#ifdef __APPLE__ /* work around broken Mac OS X filesystem that enforces NFD */
- if (reslen && nfc_table) reslen = compose_string( nfc_table, dst - reslen, reslen );
+ if (reslen && nfc_table) reslen = compose_string( nfc_table, dst, reslen );
#endif
}
return reslen;
More information about the wine-devel
mailing list