win32k: Add tags when allocating memory
authorHervé Poussineau <hpoussin@reactos.org>
Fri, 29 Aug 2008 21:19:41 +0000 (21:19 +0000)
committerHervé Poussineau <hpoussin@reactos.org>
Fri, 29 Aug 2008 21:19:41 +0000 (21:19 +0000)
ntoskrnl: Relax checks when freeing a string

svn path=/trunk/; revision=35769

reactos/ntoskrnl/rtl/libsupp.c
reactos/subsystems/win32/win32k/eng/surface.c
reactos/subsystems/win32/win32k/eng/xlate.c
reactos/subsystems/win32/win32k/ntuser/cursoricon.c
reactos/subsystems/win32/win32k/ntuser/msgqueue.c

index 5221937..b0193cd 100644 (file)
@@ -74,13 +74,18 @@ RtlpAllocateMemory(ULONG Bytes,
 }
 
 
+#define TAG_USTR        TAG('U', 'S', 'T', 'R')
+#define TAG_ASTR        TAG('A', 'S', 'T', 'R')
+#define TAG_OSTR        TAG('O', 'S', 'T', 'R')
 VOID
 STDCALL
 RtlpFreeMemory(PVOID Mem,
                ULONG Tag)
 {
-    ExFreePoolWithTag(Mem,
-                      Tag);
+    if (Tag == TAG_ASTR || Tag == TAG_OSTR || Tag == TAG_USTR)
+        ExFreePool(Mem);
+    else
+        ExFreePoolWithTag(Mem, Tag);
 }
 
 /*
index bda6561..afe3b9a 100644 (file)
@@ -325,7 +325,7 @@ IntCreateBitmap(IN SIZEL Size,
         SurfObj->lDelta = DIB_GetDIBWidthBytes(Size.cx, BitsPerFormat(BMF_8BPP));
         SurfObj->cjBits = SurfObj->lDelta * Size.cy;
         UncompressedFormat = BMF_8BPP;
-        UncompressedBits = EngAllocMem(FL_ZERO_MEMORY, SurfObj->cjBits, 0);
+        UncompressedBits = EngAllocMem(FL_ZERO_MEMORY, SurfObj->cjBits, TAG_DIB);
         Decompress8bpp(Size, (BYTE *)Bits, (BYTE *)UncompressedBits, SurfObj->lDelta);
     }
     else
@@ -356,7 +356,7 @@ IntCreateBitmap(IN SIZEL Size,
             {
                 SurfObj->pvBits = EngAllocMem(0 != (Flags & BMF_NOZEROINIT) ?
                                                   0 : FL_ZERO_MEMORY,
-                                              SurfObj->cjBits, 0);
+                                              SurfObj->cjBits, TAG_DIB);
             }
             if (SurfObj->pvBits == NULL)
             {
index f484bc3..1b12654 100644 (file)
@@ -243,7 +243,7 @@ IntEngCreateXlate(USHORT DestPalType, USHORT SourcePalType,
    {
       XlateObj->cEntries = SourcePalGDI->NumColors;
       XlateObj->pulXlate =
-         EngAllocMem(0, sizeof(ULONG) * XlateObj->cEntries, 0);
+         EngAllocMem(0, sizeof(ULONG) * XlateObj->cEntries, TAG_XLATEOBJ);
 
       XlateObj->flXlate |= XO_TRIVIAL;
       for (i = 0; i < XlateObj->cEntries; i++)
@@ -264,7 +264,7 @@ IntEngCreateXlate(USHORT DestPalType, USHORT SourcePalType,
    {
       XlateObj->cEntries = SourcePalGDI->NumColors;
       XlateObj->pulXlate =
-         EngAllocMem(0, sizeof(ULONG) * XlateObj->cEntries, 0);
+         EngAllocMem(0, sizeof(ULONG) * XlateObj->cEntries, TAG_XLATEOBJ);
       for (i = 0; i < XlateObj->cEntries; i++)
          XlateObj->pulXlate[i] =
             ShiftAndMask(XlateGDI, *((ULONG *)&SourcePalGDI->IndexedColors[i]));
@@ -379,7 +379,7 @@ IntEngCreateSrcMonoXlate(HPALETTE PaletteDest,
    XlateObj = GDIToObj(XlateGDI, XLATE);
 
    XlateObj->cEntries = 2;
-   XlateObj->pulXlate = EngAllocMem(0, sizeof(ULONG) * XlateObj->cEntries, 0);
+   XlateObj->pulXlate = EngAllocMem(0, sizeof(ULONG) * XlateObj->cEntries, TAG_XLATEOBJ);
    if (XlateObj->pulXlate == NULL)
    {
       PALETTE_UnlockPalette(DestPalGDI);
index c1c8210..caab60d 100644 (file)
@@ -317,7 +317,7 @@ IntSetupCurIconHandles(PWINSTATION_OBJECT WinSta)
                                   NULL,
                                   0,
                                   sizeof(CURICON_PROCESS),
-                                  0,
+                                  TAG_DIB,
                                   128);
    InitializeListHead(&gCurIconList);
 
index d472d8e..ebed9aa 100644 (file)
@@ -155,14 +155,14 @@ MsqInitializeImpl(VOID)
                                   NULL,
                                   0,
                                   sizeof(USER_MESSAGE),
-                                  0,
+                                  TAG_USRMSG,
                                   256);
    ExInitializePagedLookasideList(&TimerLookasideList,
                                   NULL,
                                   NULL,
                                   0,
                                   sizeof(TIMER_ENTRY),
-                                  0,
+                                  TAG_TIMER,
                                   64);
 
    return(STATUS_SUCCESS);