From 52963a354fe5df0d09a14c8f77f4d8f460fa70c7 Mon Sep 17 00:00:00 2001 From: Filip Navara Date: Sat, 24 Jan 2004 11:59:04 +0000 Subject: [PATCH] Fix RtlStringFromGUID. svn path=/trunk/; revision=7860 --- reactos/lib/ntdll/rtl/unicode.c | 37 ++++++++++++++++++++------------- reactos/ntoskrnl/rtl/unicode.c | 37 ++++++++++++++++++++------------- 2 files changed, 46 insertions(+), 28 deletions(-) diff --git a/reactos/lib/ntdll/rtl/unicode.c b/reactos/lib/ntdll/rtl/unicode.c index 500bfcee0da..994b296f6d2 100644 --- a/reactos/lib/ntdll/rtl/unicode.c +++ b/reactos/lib/ntdll/rtl/unicode.c @@ -1,4 +1,4 @@ -/* $Id: unicode.c,v 1.32 2004/01/23 19:49:07 navaraf Exp $ +/* $Id: unicode.c,v 1.33 2004/01/24 11:59:04 navaraf Exp $ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel @@ -1848,28 +1848,37 @@ RtlStringFromGUID( OUT PUNICODE_STRING GuidString ) { + STATIC CONST PWCHAR Hex = L"0123456789ABCDEF"; + WCHAR Buffer[40]; + PWCHAR BufferPtr; + INT i; + if( Guid == NULL ) { return FALSE; } - PWCHAR Buffer; - PWCHAR String4; - PWCHAR String4a; - PWCHAR String4b; - - wcsncpy( String4a, String4, 4 ); - wcsncpy( String4b, String4+4, wcslen(String4) ); - - swprintf( Buffer, L"{%X-%X-%X-%X-%X}", + + swprintf( Buffer, L"{%08lX-%04X-%04X-%02X%02X-", Guid->Data1, Guid->Data2, Guid->Data3, - String4a, - String4b ); + Guid->Data4[0], + Guid->Data4[1]); + BufferPtr = Buffer + 25; + + /* 6 hex bytes */ + for (i = 2; i < 8; i++) + { + *BufferPtr++ = Hex[Guid->Data4[i] >> 4]; + *BufferPtr++ = Hex[Guid->Data4[i] & 0xf]; + } + + *BufferPtr++ = '}'; + *BufferPtr++ = '\0'; - RtlInitUnicodeString( GuidString, Buffer ); + RtlCreateUnicodeString( GuidString, Buffer ); - return(TRUE); + return TRUE; } /* EOF */ diff --git a/reactos/ntoskrnl/rtl/unicode.c b/reactos/ntoskrnl/rtl/unicode.c index 07d9d771f8b..82f34752143 100644 --- a/reactos/ntoskrnl/rtl/unicode.c +++ b/reactos/ntoskrnl/rtl/unicode.c @@ -1,4 +1,4 @@ -/* $Id: unicode.c,v 1.35 2004/01/23 18:00:53 navaraf Exp $ +/* $Id: unicode.c,v 1.36 2004/01/24 11:59:04 navaraf Exp $ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel @@ -1062,28 +1062,37 @@ RtlStringFromGUID( OUT PUNICODE_STRING GuidString ) { + STATIC CONST PWCHAR Hex = L"0123456789ABCDEF"; + WCHAR Buffer[40]; + PWCHAR BufferPtr; + INT i; + if( Guid == NULL ) { return FALSE; } - PWCHAR Buffer; - PWCHAR String4; - PWCHAR String4a; - PWCHAR String4b; - - wcsncpy( String4a, String4, 4 ); - wcsncpy( String4b, String4+4, wcslen(String4) ); - - swprintf( Buffer, L"{%X-%X-%X-%X-%X}", + + swprintf( Buffer, L"{%08lX-%04X-%04X-%02X%02X-", Guid->Data1, Guid->Data2, Guid->Data3, - String4a, - String4b ); + Guid->Data4[0], + Guid->Data4[1]); + BufferPtr = Buffer + 25; + + /* 6 hex bytes */ + for (i = 2; i < 8; i++) + { + *BufferPtr++ = Hex[Guid->Data4[i] >> 4]; + *BufferPtr++ = Hex[Guid->Data4[i] & 0xf]; + } + + *BufferPtr++ = '}'; + *BufferPtr++ = '\0'; - RtlInitUnicodeString( GuidString, Buffer ); + RtlCreateUnicodeString( GuidString, Buffer ); - return(TRUE); + return TRUE; }