Author: hbelusca
Date: Tue Jul 29 12:54:01 2014
New Revision: 63764

URL: http://svn.reactos.org/svn/reactos?rev=63764&view=rev
Log:
[CONSRV]
Add diagnostics ASSERTs for MultiByteToWideChar & its companion (the source and 
target pointers must not be the same, otherwise it doesn't work).

Modified:
    branches/condrv_restructure/win32ss/user/winsrv/consrv/alias.c
    branches/condrv_restructure/win32ss/user/winsrv/consrv/condrv/coninput.c
    branches/condrv_restructure/win32ss/user/winsrv/consrv/include/conio.h
    
branches/condrv_restructure/win32ss/user/winsrv/consrv/include/conio_winsrv.h

Modified: branches/condrv_restructure/win32ss/user/winsrv/consrv/alias.c
URL: 
http://svn.reactos.org/svn/reactos/branches/condrv_restructure/win32ss/user/winsrv/consrv/alias.c?rev=63764&r1=63763&r2=63764&view=diff
==============================================================================
--- branches/condrv_restructure/win32ss/user/winsrv/consrv/alias.c      
[iso-8859-1] (original)
+++ branches/condrv_restructure/win32ss/user/winsrv/consrv/alias.c      
[iso-8859-1] Tue Jul 29 12:54:01 2014
@@ -69,6 +69,14 @@
                           /*P*/USHORT  TargetLength)
 {
     ASSERT(Source && Target && TargetLength);
+
+    /*
+     * From MSDN:
+     * "The lpMultiByteStr and lpWideCharStr pointers must not be the same.
+     *  If they are the same, the function fails, and GetLastError returns
+     *  ERROR_INVALID_PARAMETER."
+     */
+    ASSERT((ULONG_PTR)Source != (ULONG_PTR)Target);
 
     /* Use the console input CP for the conversion */
     // *TargetLength = WideCharToMultiByte(Console->InputCodePage, 0,

Modified: 
branches/condrv_restructure/win32ss/user/winsrv/consrv/condrv/coninput.c
URL: 
http://svn.reactos.org/svn/reactos/branches/condrv_restructure/win32ss/user/winsrv/consrv/condrv/coninput.c?rev=63764&r1=63763&r2=63764&view=diff
==============================================================================
--- branches/condrv_restructure/win32ss/user/winsrv/consrv/condrv/coninput.c    
[iso-8859-1] (original)
+++ branches/condrv_restructure/win32ss/user/winsrv/consrv/condrv/coninput.c    
[iso-8859-1] Tue Jul 29 12:54:01 2014
@@ -16,10 +16,18 @@
 
 /* GLOBALS 
********************************************************************/
 
+/*
+ * From MSDN:
+ * "The lpMultiByteStr and lpWideCharStr pointers must not be the same.
+ *  If they are the same, the function fails, and GetLastError returns
+ *  ERROR_INVALID_PARAMETER."
+ */
 #define ConsoleInputUnicodeCharToAnsiChar(Console, dChar, sWChar) \
+    ASSERT((ULONG_PTR)dChar != (ULONG_PTR)sWChar); \
     WideCharToMultiByte((Console)->InputCodePage, 0, (sWChar), 1, (dChar), 1, 
NULL, NULL)
 
 #define ConsoleInputAnsiCharToUnicodeChar(Console, dWChar, sChar) \
+    ASSERT((ULONG_PTR)dWChar != (ULONG_PTR)sChar); \
     MultiByteToWideChar((Console)->InputCodePage, 0, (sChar), 1, (dWChar), 1)
 
 typedef struct ConsoleInput_t

Modified: branches/condrv_restructure/win32ss/user/winsrv/consrv/include/conio.h
URL: 
http://svn.reactos.org/svn/reactos/branches/condrv_restructure/win32ss/user/winsrv/consrv/include/conio.h?rev=63764&r1=63763&r2=63764&view=diff
==============================================================================
--- branches/condrv_restructure/win32ss/user/winsrv/consrv/include/conio.h      
[iso-8859-1] (original)
+++ branches/condrv_restructure/win32ss/user/winsrv/consrv/include/conio.h      
[iso-8859-1] Tue Jul 29 12:54:01 2014
@@ -352,10 +352,18 @@
 #define ConioRectWidth(Rect) \
     (((Rect)->Left) > ((Rect)->Right) ? 0 : ((Rect)->Right) - ((Rect)->Left) + 
1)
 
+/*
+ * From MSDN:
+ * "The lpMultiByteStr and lpWideCharStr pointers must not be the same.
+ *  If they are the same, the function fails, and GetLastError returns
+ *  ERROR_INVALID_PARAMETER."
+ */
 #define ConsoleUnicodeCharToAnsiChar(Console, dChar, sWChar) \
+    ASSERT((ULONG_PTR)dChar != (ULONG_PTR)sWChar); \
     WideCharToMultiByte((Console)->OutputCodePage, 0, (sWChar), 1, (dChar), 1, 
NULL, NULL)
 
 #define ConsoleAnsiCharToUnicodeChar(Console, dWChar, sChar) \
+    ASSERT((ULONG_PTR)dWChar != (ULONG_PTR)sChar); \
     MultiByteToWideChar((Console)->OutputCodePage, 0, (sChar), 1, (dWChar), 1)
 
 PCHAR_INFO ConioCoordToPointer(PTEXTMODE_SCREEN_BUFFER Buff, ULONG X, ULONG Y);

Modified: 
branches/condrv_restructure/win32ss/user/winsrv/consrv/include/conio_winsrv.h
URL: 
http://svn.reactos.org/svn/reactos/branches/condrv_restructure/win32ss/user/winsrv/consrv/include/conio_winsrv.h?rev=63764&r1=63763&r2=63764&view=diff
==============================================================================
--- 
branches/condrv_restructure/win32ss/user/winsrv/consrv/include/conio_winsrv.h   
    [iso-8859-1] (original)
+++ 
branches/condrv_restructure/win32ss/user/winsrv/consrv/include/conio_winsrv.h   
    [iso-8859-1] Tue Jul 29 12:54:01 2014
@@ -161,10 +161,18 @@
 #define ConioRectWidth(Rect) \
     (((Rect)->Left) > ((Rect)->Right) ? 0 : ((Rect)->Right) - ((Rect)->Left) + 
1)
 
+/*
+ * From MSDN:
+ * "The lpMultiByteStr and lpWideCharStr pointers must not be the same.
+ *  If they are the same, the function fails, and GetLastError returns
+ *  ERROR_INVALID_PARAMETER."
+ */
 #define ConsoleUnicodeCharToAnsiChar(Console, dChar, sWChar) \
+    ASSERT((ULONG_PTR)dChar != (ULONG_PTR)sWChar); \
     WideCharToMultiByte((Console)->OutputCodePage, 0, (sWChar), 1, (dChar), 1, 
NULL, NULL)
 
 #define ConsoleAnsiCharToUnicodeChar(Console, dWChar, sChar) \
+    ASSERT((ULONG_PTR)dWChar != (ULONG_PTR)sChar); \
     MultiByteToWideChar((Console)->OutputCodePage, 0, (sChar), 1, (dWChar), 1)
 
 PCHAR_INFO ConioCoordToPointer(PTEXTMODE_SCREEN_BUFFER Buff, ULONG X, ULONG Y);


Reply via email to