Module: wine Branch: master Commit: 0357d2ca75be92e927bb785a786d3766c94f3c83 URL: https://source.winehq.org/git/wine.git/?a=commit;h=0357d2ca75be92e927bb785a7...
Author: Alexandre Julliard julliard@winehq.org Date: Fri Jul 10 07:57:59 2020 +0200
ntdll: Avoid using RtlInitUnicodeString() in the Unix library.
Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/ntdll/unix/file.c | 3 ++- dlls/ntdll/unix/system.c | 16 +++++++++------- dlls/ntdll/unix/virtual.c | 10 ++++------ 3 files changed, 15 insertions(+), 14 deletions(-)
diff --git a/dlls/ntdll/unix/file.c b/dlls/ntdll/unix/file.c index 070aac3083..af7c214984 100644 --- a/dlls/ntdll/unix/file.c +++ b/dlls/ntdll/unix/file.c @@ -1993,7 +1993,8 @@ static NTSTATUS get_mountmgr_fs_info( HANDLE handle, int fd, struct mountmgr_uni else drive->letter = 'a' + letter;
- RtlInitUnicodeString( &string, MOUNTMGR_DEVICE_NAME ); + string.Buffer = (WCHAR *)MOUNTMGR_DEVICE_NAME; + string.Length = sizeof(MOUNTMGR_DEVICE_NAME) - sizeof(WCHAR); InitializeObjectAttributes( &attr, &string, 0, NULL, NULL ); status = NtOpenFile( &mountmgr, GENERIC_READ | SYNCHRONIZE, &attr, &io, FILE_SHARE_READ | FILE_SHARE_WRITE, FILE_SYNCHRONOUS_IO_NONALERT ); diff --git a/dlls/ntdll/unix/system.c b/dlls/ntdll/unix/system.c index 33fb37ec33..07a3ad2154 100644 --- a/dlls/ntdll/unix/system.c +++ b/dlls/ntdll/unix/system.c @@ -1729,7 +1729,8 @@ static BOOL reg_query_value( HKEY key, LPCWSTR name, DWORD type, void *data, DWO
if (count > sizeof(buf) - sizeof(KEY_VALUE_PARTIAL_INFORMATION)) return FALSE;
- RtlInitUnicodeString( &nameW, name ); + nameW.Buffer = (WCHAR *)name; + nameW.Length = wcslen( name ) * sizeof(WCHAR); if (NtQueryValueKey( key, &nameW, KeyValuePartialInformation, buf, sizeof(buf), &count )) return FALSE;
@@ -1756,7 +1757,7 @@ static void find_reg_tz_info(RTL_DYNAMIC_TIME_ZONE_INFORMATION *tzi, const char* HANDLE key, subkey, subkey_dyn = 0; ULONG idx, len; OBJECT_ATTRIBUTES attr; - UNICODE_STRING nameW, nameDynamicW; + UNICODE_STRING nameW; WCHAR yearW[16]; char buffer[128]; KEY_BASIC_INFORMATION *info = (KEY_BASIC_INFORMATION *)buffer; @@ -1764,9 +1765,8 @@ static void find_reg_tz_info(RTL_DYNAMIC_TIME_ZONE_INFORMATION *tzi, const char* sprintf( buffer, "%u", year ); ascii_to_unicode( yearW, buffer, strlen(buffer) + 1 );
- RtlInitUnicodeString( &nameW, Time_ZonesW ); - RtlInitUnicodeString( &nameDynamicW, Dynamic_DstW ); - + nameW.Buffer = (WCHAR *)Time_ZonesW; + nameW.Length = sizeof(Time_ZonesW) - sizeof(WCHAR); InitializeObjectAttributes( &attr, &nameW, 0, 0, NULL ); if (NtOpenKey( &key, KEY_READ, &attr )) return;
@@ -1785,7 +1785,7 @@ static void find_reg_tz_info(RTL_DYNAMIC_TIME_ZONE_INFORMATION *tzi, const char*
nameW.Buffer = info->Name; nameW.Length = info->NameLength; - InitializeObjectAttributes( &attr, &nameW, 0, key, NULL ); + attr.RootDirectory = key; if (NtOpenKey( &subkey, KEY_READ, &attr )) continue;
memset( ®_tzi, 0, sizeof(reg_tzi) ); @@ -1801,7 +1801,9 @@ static void find_reg_tz_info(RTL_DYNAMIC_TIME_ZONE_INFORMATION *tzi, const char* goto next;
/* Check for Dynamic DST entry first */ - InitializeObjectAttributes( &attr, &nameDynamicW, 0, subkey, NULL ); + nameW.Buffer = (WCHAR *)Dynamic_DstW; + nameW.Length = sizeof(Dynamic_DstW) - sizeof(WCHAR); + attr.RootDirectory = subkey; if (!NtOpenKey( &subkey_dyn, KEY_READ, &attr )) { is_dynamic = reg_query_value( subkey_dyn, yearW, REG_BINARY, &tz_data, sizeof(tz_data) ); diff --git a/dlls/ntdll/unix/virtual.c b/dlls/ntdll/unix/virtual.c index 7592234ccc..4e5b1acf0b 100644 --- a/dlls/ntdll/unix/virtual.c +++ b/dlls/ntdll/unix/virtual.c @@ -2804,16 +2804,14 @@ void virtual_clear_thread_stack( void *stack_end ) */ void virtual_map_user_shared_data(void) { - static const WCHAR wine_usdW[] = {'\','K','e','r','n','e','l','O','b','j','e','c','t','s', - '\','_','_','w','i','n','e','_','u','s','e','r','_','s','h','a','r','e','d','_','d','a','t','a',0}; - OBJECT_ATTRIBUTES attr = {sizeof(attr)}; - UNICODE_STRING wine_usd_str; + static const WCHAR nameW[] = {'\','K','e','r','n','e','l','O','b','j','e','c','t','s', + '\','_','_','w','i','n','e','_','u','s','e','r','_','s','h','a','r','e','d','_','d','a','t','a',0}; + UNICODE_STRING name_str = { sizeof(nameW) - sizeof(WCHAR), sizeof(nameW), (WCHAR *)nameW }; + OBJECT_ATTRIBUTES attr = { sizeof(attr), 0, &name_str }; NTSTATUS status; HANDLE section; int res, fd, needs_close;
- RtlInitUnicodeString( &wine_usd_str, wine_usdW ); - InitializeObjectAttributes( &attr, &wine_usd_str, OBJ_OPENIF, NULL, NULL ); if ((status = NtOpenSection( §ion, SECTION_ALL_ACCESS, &attr ))) { ERR( "failed to open the USD section: %08x\n", status );