Fix gdi32:SetSysColors apitest
authorRafal Harabien <rafalh@reactos.org>
Mon, 21 Mar 2011 14:52:08 +0000 (14:52 +0000)
committerRafal Harabien <rafalh@reactos.org>
Mon, 21 Mar 2011 14:52:08 +0000 (14:52 +0000)
svn path=/trunk/; revision=51110

reactos/subsystems/win32/win32k/include/intgdi.h
reactos/subsystems/win32/win32k/ntuser/ntstubs.c
reactos/subsystems/win32/win32k/objects/stockobj.c

index 5e7ca97..c88545c 100644 (file)
@@ -156,8 +156,8 @@ IntGdiCombineTransform(LPXFORM XFormResult,
 
 /* Stock objects */
 
-BOOL FASTCALL
-IntSetSysColors(UINT nColors, INT *Elements, COLORREF *Colors);
+VOID FASTCALL
+IntSetSysColors(UINT nColors, CONST INT *Elements, CONST COLORREF *Colors);
 
 HGDIOBJ FASTCALL
 IntGetSysColorBrush(INT Object);
index 1f7615d..7cdc720 100644 (file)
@@ -538,36 +538,40 @@ NtUserSetSysColors(
    IN CONST COLORREF *lpaRgbValues,
    FLONG Flags)
 {
-  DWORD Ret = FALSE;
-  NTSTATUS Status = STATUS_SUCCESS;
-  UserEnterExclusive();
-  _SEH2_TRY
-  {
-     ProbeForRead(lpaElements,
+   DWORD Ret = TRUE;
+   NTSTATUS Status = STATUS_SUCCESS;
+
+   if (cElements == 0)
+      return TRUE;
+
+   UserEnterExclusive();
+   _SEH2_TRY
+   {
+      ProbeForRead(lpaElements,
                    sizeof(INT),
                    1);
-     ProbeForRead(lpaRgbValues,
-                   sizeof(INT),
+      ProbeForRead(lpaRgbValues,
+                   sizeof(COLORREF),
                    1);
 // Developers: We are thread locked and calling gdi.
-     Ret = IntSetSysColors(cElements, (INT*)lpaElements, (COLORREF*)lpaRgbValues);
-  }
-  _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
-  {
+      IntSetSysColors(cElements, lpaElements, lpaRgbValues);
+   }
+   _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
+   {
       Status = _SEH2_GetExceptionCode();
-  }
-  _SEH2_END;
-  if (!NT_SUCCESS(Status))
-  {
+   }
+   _SEH2_END;
+   if (!NT_SUCCESS(Status))
+   {
       SetLastNtError(Status);
       Ret = FALSE;
-  }
-  if (Ret)
-  {
-     UserSendNotifyMessage(HWND_BROADCAST, WM_SYSCOLORCHANGE, 0, 0);
-  }
-  UserLeave();
-  return Ret;
+   }
+   if (Ret)
+   {
+      UserSendNotifyMessage(HWND_BROADCAST, WM_SYSCOLORCHANGE, 0, 0);
+   }
+   UserLeave();
+   return Ret;
 }
 
 DWORD
index 02b07df..ca8a5e7 100644 (file)
@@ -216,8 +216,8 @@ NtGdiGetStockObject(INT Object)
     return ((Object < 0) || (NB_STOCK_OBJECTS <= Object)) ? NULL : StockObjects[Object];
 }
 
-BOOL FASTCALL
-IntSetSysColors(UINT nColors, INT *Elements, COLORREF *Colors)
+VOID FASTCALL
+IntSetSysColors(UINT nColors, CONST INT *Elements, CONST COLORREF *Colors)
 {
     UINT i;
 
@@ -234,7 +234,6 @@ IntSetSysColors(UINT nColors, INT *Elements, COLORREF *Colors)
         Elements++;
         Colors++;
     }
-    return nColors > 0;
 }
 
 HGDIOBJ FASTCALL