Module: wine Branch: master Commit: 0a66633ce310eee7556cb3bba9d525faa1ae6115 URL: http://source.winehq.org/git/wine.git/?a=commit;h=0a66633ce310eee7556cb3bba9... Author: Francois Gouget <fgouget(a)codeweavers.com> Date: Tue Nov 18 21:58:38 2008 +0100 kernel32: Simplify and optimize create_(system,env)_registry_keys(). --- dlls/kernel32/cpu.c | 28 +++++++++++++++------------- 1 files changed, 15 insertions(+), 13 deletions(-) diff --git a/dlls/kernel32/cpu.c b/dlls/kernel32/cpu.c index 6f50009..63ca277 100644 --- a/dlls/kernel32/cpu.c +++ b/dlls/kernel32/cpu.c @@ -132,7 +132,7 @@ static void create_system_registry_keys( const SYSTEM_INFO *info ) if (NtCreateKey( &system_key, KEY_ALL_ACCESS, &attr, 0, NULL, 0, NULL )) return; RtlInitUnicodeString( &valueW, IdentifierW ); - NtSetValueKey( system_key, &valueW, 0, REG_SZ, SysidW, (strlenW(SysidW)+1) * sizeof(WCHAR) ); + NtSetValueKey( system_key, &valueW, 0, REG_SZ, SysidW, sizeof(SysidW) ); attr.RootDirectory = system_key; RtlInitUnicodeString( &nameW, fpuW ); @@ -151,6 +151,7 @@ static void create_system_registry_keys( const SYSTEM_INFO *info ) if (!NtCreateKey( &hkey, KEY_ALL_ACCESS, &attr, 0, NULL, 0, NULL )) { WCHAR idW[60]; + DWORD sizeW; DWORD cpuMHz = cpuHz / 1000000; /*TODO: report 64bit processors properly*/ @@ -158,12 +159,12 @@ static void create_system_registry_keys( const SYSTEM_INFO *info ) sprintf( id, "x86 Family %d Model %d Stepping %d", info->wProcessorLevel, HIBYTE(info->wProcessorRevision), LOBYTE(info->wProcessorRevision) ); - RtlMultiByteToUnicodeN( idW, sizeof(idW), NULL, id, strlen(id)+1 ); - NtSetValueKey( hkey, &valueW, 0, REG_SZ, idW, (strlenW(idW)+1)*sizeof(WCHAR) ); + RtlMultiByteToUnicodeN( idW, sizeof(idW), &sizeW, id, strlen(id)+1 ); + NtSetValueKey( hkey, &valueW, 0, REG_SZ, idW, sizeW ); /*TODO; report amd's properly*/ RtlInitUnicodeString( &valueW, VendorIdentifierW ); - NtSetValueKey( hkey, &valueW, 0, REG_SZ, VenidIntelW, (strlenW(VenidIntelW)+1) * sizeof(WCHAR) ); + NtSetValueKey( hkey, &valueW, 0, REG_SZ, VenidIntelW, sizeof(VenidIntelW) ); RtlInitUnicodeString( &valueW, mhzKeyW ); NtSetValueKey( hkey, &valueW, 0, REG_DWORD, &cpuMHz, sizeof(DWORD) ); @@ -194,6 +195,7 @@ static void create_env_registry_keys( const SYSTEM_INFO *info ) HANDLE env_key; OBJECT_ATTRIBUTES attr; UNICODE_STRING nameW, valueW; + DWORD sizeW; char nProc[10],id[60],procLevel[10],rev[10]; WCHAR nProcW[10],idW[60],procLevelW[10],revW[10]; @@ -214,31 +216,31 @@ static void create_env_registry_keys( const SYSTEM_INFO *info ) if (NtCreateKey( &env_key, KEY_ALL_ACCESS, &attr, 0, NULL, 0, NULL )) return; sprintf( nProc, "%d", info->dwNumberOfProcessors ); - RtlMultiByteToUnicodeN( nProcW, sizeof(nProcW), NULL, nProc, strlen(nProc)+1 ); + RtlMultiByteToUnicodeN( nProcW, sizeof(nProcW), &sizeW, nProc, strlen(nProc)+1 ); RtlInitUnicodeString( &valueW, NumProcW ); - NtSetValueKey( env_key, &valueW, 0, REG_SZ, nProcW, (strlenW(nProcW)+1)*sizeof(WCHAR) ); + NtSetValueKey( env_key, &valueW, 0, REG_SZ, nProcW, sizeW ); /* TODO: currently hardcoded x86, add different processors */ RtlInitUnicodeString( &valueW, ProcArchW ); - NtSetValueKey( env_key, &valueW, 0, REG_SZ, x86W, (strlenW(x86W)+1) * sizeof(WCHAR) ); + NtSetValueKey( env_key, &valueW, 0, REG_SZ, x86W, sizeof(x86W) ); /* TODO: currently hardcoded Intel, add different processors */ sprintf( id, "x86 Family %d Model %d Stepping %d, GenuineIntel", info->wProcessorLevel, HIBYTE(info->wProcessorRevision), LOBYTE(info->wProcessorRevision) ); - RtlMultiByteToUnicodeN( idW, sizeof(idW), NULL, id, strlen(id)+1 ); + RtlMultiByteToUnicodeN( idW, sizeof(idW), &sizeW, id, strlen(id)+1 ); RtlInitUnicodeString( &valueW, ProcIdW ); - NtSetValueKey( env_key, &valueW, 0, REG_SZ, idW, (strlenW(idW)+1)*sizeof(WCHAR) ); + NtSetValueKey( env_key, &valueW, 0, REG_SZ, idW, sizeW ); sprintf( procLevel, "%d", info->wProcessorLevel ); - RtlMultiByteToUnicodeN( procLevelW, sizeof(procLevelW), NULL, procLevel, strlen(procLevel)+1 ); + RtlMultiByteToUnicodeN( procLevelW, sizeof(procLevelW), &sizeW, procLevel, strlen(procLevel)+1 ); RtlInitUnicodeString( &valueW, ProcLvlW ); - NtSetValueKey( env_key, &valueW, 0, REG_SZ, procLevelW, (strlenW(procLevelW)+1)*sizeof(WCHAR) ); + NtSetValueKey( env_key, &valueW, 0, REG_SZ, procLevelW, sizeW ); /* Properly report model/stepping */ sprintf( rev, "%04x", info->wProcessorRevision); - RtlMultiByteToUnicodeN( revW, sizeof(revW), NULL, rev, strlen(rev)+1 ); + RtlMultiByteToUnicodeN( revW, sizeof(revW), &sizeW, rev, strlen(rev)+1 ); RtlInitUnicodeString( &valueW, ProcRevW ); - NtSetValueKey( env_key, &valueW, 0, REG_SZ, revW, (strlenW(revW)+1)*sizeof(WCHAR) ); + NtSetValueKey( env_key, &valueW, 0, REG_SZ, revW, sizeW ); NtClose( env_key ); }