[ros-diffs] [greatlrd] 27874: 1. merge down 27767 (prevent metadc/metafile crashing a bit in win32k) 2. merge down parts of 27758 (fixing code layout)

greatlrd at svn.reactos.org greatlrd at svn.reactos.org
Thu Jul 26 20:31:28 CEST 2007


Author: greatlrd
Date: Thu Jul 26 22:31:27 2007
New Revision: 27874

URL: http://svn.reactos.org/svn/reactos?rev=27874&view=rev
Log:
1. merge down 27767 (prevent metadc/metafile  crashing a bit in win32k)
2. merge down parts of 27758 (fixing code layout)

Modified:
    branches/ros-branch-0_3_3/reactos/subsystems/win32/win32k/objects/gdiobj.c
    branches/ros-branch-0_3_3/reactos/subsystems/win32/win32k/objects/metafile.c

Modified: branches/ros-branch-0_3_3/reactos/subsystems/win32/win32k/objects/gdiobj.c
URL: http://svn.reactos.org/svn/reactos/branches/ros-branch-0_3_3/reactos/subsystems/win32/win32k/objects/gdiobj.c?rev=27874&r1=27873&r2=27874&view=diff
==============================================================================
--- branches/ros-branch-0_3_3/reactos/subsystems/win32/win32k/objects/gdiobj.c (original)
+++ branches/ros-branch-0_3_3/reactos/subsystems/win32/win32k/objects/gdiobj.c Thu Jul 26 22:31:27 2007
@@ -81,8 +81,9 @@
   {GDI_OBJECT_TYPE_DIRECTDRAW,  sizeof(DD_DIRECTDRAW), DD_Cleanup},
   {GDI_OBJECT_TYPE_DD_SURFACE,  sizeof(DD_SURFACE),    DDSURF_Cleanup},
   {GDI_OBJECT_TYPE_EXTPEN,      sizeof(GDIBRUSHOBJ),   EXTPEN_Cleanup},
-  {GDI_OBJECT_TYPE_METADC,      0,                     GDI_CleanupDummy},
-  {GDI_OBJECT_TYPE_METAFILE,    0,                     GDI_CleanupDummy},
+  /* FIXME do not use normal DC struct for this */
+  {GDI_OBJECT_TYPE_METADC,      sizeof(DC),             GDI_CleanupDummy},
+  {GDI_OBJECT_TYPE_METAFILE,    sizeof(DC),            GDI_CleanupDummy},
   {GDI_OBJECT_TYPE_ENHMETAFILE, 0,                     GDI_CleanupDummy},
   {GDI_OBJECT_TYPE_ENHMETADC,   0,                     GDI_CleanupDummy},
   {GDI_OBJECT_TYPE_MEMDC,       0,                     GDI_CleanupDummy},

Modified: branches/ros-branch-0_3_3/reactos/subsystems/win32/win32k/objects/metafile.c
URL: http://svn.reactos.org/svn/reactos/branches/ros-branch-0_3_3/reactos/subsystems/win32/win32k/objects/metafile.c?rev=27874&r1=27873&r2=27874&view=diff
==============================================================================
--- branches/ros-branch-0_3_3/reactos/subsystems/win32/win32k/objects/metafile.c (original)
+++ branches/ros-branch-0_3_3/reactos/subsystems/win32/win32k/objects/metafile.c Thu Jul 26 22:31:27 2007
@@ -293,27 +293,28 @@
                            LPCWSTR  Description)
 {
    PDC Dc;   
-   HDC ret = NULL;       
+   HDC ret = NULL;
    DWORD length = 0;
    HDC tempHDC;
    DWORD MemSize;
+   DWORD dwDesiredAccess;
   
    tempHDC = hDCRef;
    if (hDCRef == NULL)
    {
-	   /* FIXME ??
-	    * Shall we create hdc NtGdiHdcCompatible hdc ?? 
-		*/
-	   UNICODE_STRING DriverName;
-	   RtlInitUnicodeString(&DriverName, L"DISPLAY");              
-	   //IntGdiCreateDC(&DriverName, NULL, NULL, NULL, FALSE);
+       /* FIXME ??
+        * Shall we create hdc NtGdiHdcCompatible hdc ?? 
+        */
+       UNICODE_STRING DriverName;
+       RtlInitUnicodeString(&DriverName, L"DISPLAY");
+       //IntGdiCreateDC(&DriverName, NULL, NULL, NULL, FALSE);
            tempHDC = NtGdiOpenDCW( &DriverName,
                                           NULL,
                                           NULL,
                                              0,  // DCW 0 and ICW 1.
                                           NULL,
                                   (PVOID) NULL,
-                                  (PVOID) NULL );                                                                                                                                 
+                                  (PVOID) NULL );
    }
 
    GDIOBJ_SetOwnership(GdiHandleTable, tempHDC, PsGetCurrentProcess());
@@ -407,45 +408,44 @@
       DPRINT1("Trying Create EnhMetaFile\n");
 
       /* disk based metafile */	  
-      DWORD dwDesiredAccess = GENERIC_WRITE | GENERIC_READ | SYNCHRONIZE | FILE_READ_ATTRIBUTES;      
+      dwDesiredAccess = GENERIC_WRITE | GENERIC_READ | SYNCHRONIZE | FILE_READ_ATTRIBUTES;
       OBJECT_ATTRIBUTES ObjectAttributes;
       IO_STATUS_BLOCK IoStatusBlock;
-	  IO_STATUS_BLOCK Iosb;	 
+      IO_STATUS_BLOCK Iosb;
       UNICODE_STRING NtPathU;
-      NTSTATUS Status;      	     
+      NTSTATUS Status;
       ULONG FileAttributes = (FILE_ATTRIBUTE_VALID_FLAGS & ~FILE_ATTRIBUTE_DIRECTORY);
-     
-	  if (!RtlDosPathNameToNtPathName_U (File, &NtPathU, NULL, NULL))
-      {        
+
+      if (!RtlDosPathNameToNtPathName_U (File, &NtPathU, NULL, NULL))
+      {
          DC_UnlockDc(Dc);
          if (hDCRef == NULL)
          {
-             NtGdiDeleteObjectApp(tempHDC);        
-         }       
+             NtGdiDeleteObjectApp(tempHDC);
+         }
          DPRINT1("Can not Create EnhMetaFile\n");
          SetLastWin32Error(ERROR_PATH_NOT_FOUND);
          return NULL;
       }
-	  
-
-	  InitializeObjectAttributes(&ObjectAttributes, &NtPathU, 0, NULL, NULL);
+
+      InitializeObjectAttributes(&ObjectAttributes, &NtPathU, 0, NULL, NULL);
       
       Status = NtCreateFile (&Dc->hFile, dwDesiredAccess, &ObjectAttributes, &IoStatusBlock,
-			                NULL, FileAttributes, 0, FILE_OVERWRITE_IF, FILE_NON_DIRECTORY_FILE,
-						    NULL, 0);
+                             NULL, FileAttributes, 0, FILE_OVERWRITE_IF, FILE_NON_DIRECTORY_FILE,
+                             NULL, 0);
 
       RtlFreeHeap(RtlGetProcessHeap(), 0, NtPathU.Buffer);
    
       if (!NT_SUCCESS(Status))
-      {   
-	     Dc->hFile = NULL;
-		 DC_UnlockDc(Dc);
+      {
+         Dc->hFile = NULL;
+         DC_UnlockDc(Dc);
          if (hDCRef == NULL)
          {
-             NtGdiDeleteObjectApp(tempHDC);        
+             NtGdiDeleteObjectApp(tempHDC);
          }  
-		 DPRINT1("Create EnhMetaFile fail\n");
-		 SetLastWin32Error(ERROR_INVALID_HANDLE);	
+         DPRINT1("Create EnhMetaFile fail\n");
+         SetLastWin32Error(ERROR_INVALID_HANDLE);
          return NULL;
       }
 
@@ -462,20 +462,20 @@
       }
 
       if (NT_SUCCESS(Status))
-      {                		  		  
-		  ret = tempHDC;		  
-		  DC_UnlockDc(Dc);		  
+      {
+          ret = tempHDC;
+          DC_UnlockDc(Dc);
       }
       else
       {
           Dc->hFile = NULL;
-		  DPRINT1("Write to EnhMetaFile fail\n");        
-		  SetLastWin32Error(ERROR_CAN_NOT_COMPLETE);
-		  ret = NULL;                                	     		  
-		  DC_UnlockDc(Dc);
+          DPRINT1("Write to EnhMetaFile fail\n");
+          SetLastWin32Error(ERROR_CAN_NOT_COMPLETE);
+          ret = NULL;
+          DC_UnlockDc(Dc);
           if (hDCRef == NULL) 
           {
-             NtGdiDeleteObjectApp(tempHDC);        
+             NtGdiDeleteObjectApp(tempHDC);
           }
       }
     }
@@ -483,8 +483,8 @@
     {
       DC_UnlockDc(Dc);
     }
-   
-    return ret;  
+
+    return ret;
 }
 
 




More information about the Ros-diffs mailing list