Alexandre Julliard : gdi32: Make sure DCs are fully zero-initialized.

Alexandre Julliard julliard at winehq.org
Wed Dec 7 13:57:12 CST 2011


Module: wine
Branch: master
Commit: 1f15ffa1e6ea9b330e555e39e9363fffea2c4d51
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=1f15ffa1e6ea9b330e555e39e9363fffea2c4d51

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Wed Dec  7 11:54:57 2011 +0100

gdi32: Make sure DCs are fully zero-initialized.

---

 dlls/gdi32/dc.c |   44 ++------------------------------------------
 1 files changed, 2 insertions(+), 42 deletions(-)

diff --git a/dlls/gdi32/dc.c b/dlls/gdi32/dc.c
index 77897e9..2519a28 100644
--- a/dlls/gdi32/dc.c
+++ b/dlls/gdi32/dc.c
@@ -75,43 +75,21 @@ DC *alloc_dc_ptr( WORD magic )
 {
     DC *dc;
 
-    if (!(dc = HeapAlloc( GetProcessHeap(), 0, sizeof(*dc) ))) return NULL;
+    if (!(dc = HeapAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*dc) ))) return NULL;
 
     dc->nulldrv.funcs       = &null_driver;
-    dc->nulldrv.next        = NULL;
-    dc->dibdrv              = NULL;
     dc->physDev             = &dc->nulldrv;
     dc->thread              = GetCurrentThreadId();
     dc->refcount            = 1;
-    dc->dirty               = 0;
-    dc->saveLevel           = 0;
-    dc->saved_dc            = 0;
-    dc->dwHookData          = 0;
-    dc->hookProc            = NULL;
-    dc->wndOrgX             = 0;
-    dc->wndOrgY             = 0;
     dc->wndExtX             = 1;
     dc->wndExtY             = 1;
-    dc->vportOrgX           = 0;
-    dc->vportOrgY           = 0;
     dc->vportExtX           = 1;
     dc->vportExtY           = 1;
     dc->miterLimit          = 10.0f; /* 10.0 is the default, from MSDN */
-    dc->flags               = 0;
-    dc->layout              = 0;
-    dc->hClipRgn            = 0;
-    dc->hMetaRgn            = 0;
-    dc->hMetaClipRgn        = 0;
-    dc->hVisRgn             = 0;
-    dc->region              = 0;
     dc->hPen                = GDI_inc_ref_count( GetStockObject( BLACK_PEN ));
     dc->hBrush              = GDI_inc_ref_count( GetStockObject( WHITE_BRUSH ));
     dc->hFont               = GDI_inc_ref_count( GetStockObject( SYSTEM_FONT ));
-    dc->hBitmap             = 0;
-    dc->hDevice             = 0;
     dc->hPalette            = GetStockObject( DEFAULT_PALETTE );
-    dc->gdiFont             = 0;
-    dc->path                = NULL;
     dc->font_code_page      = CP_ACP;
     dc->ROPmode             = R2_COPYPEN;
     dc->polyFillMode        = ALTERNATE;
@@ -122,18 +100,9 @@ DC *alloc_dc_ptr( WORD magic )
     dc->dcBrushColor        = RGB( 255, 255, 255 );
     dc->dcPenColor          = RGB( 0, 0, 0 );
     dc->textColor           = RGB( 0, 0, 0 );
-    dc->brushOrgX           = 0;
-    dc->brushOrgY           = 0;
-    dc->mapperFlags         = 0;
     dc->textAlign           = TA_LEFT | TA_TOP | TA_NOUPDATECP;
-    dc->charExtra           = 0;
-    dc->breakExtra          = 0;
-    dc->breakRem            = 0;
     dc->MapMode             = MM_TEXT;
     dc->GraphicsMode        = GM_COMPATIBLE;
-    dc->pAbortProc          = NULL;
-    dc->CursPosX            = 0;
-    dc->CursPosY            = 0;
     dc->ArcDirection        = AD_COUNTERCLOCKWISE;
     dc->xformWorld2Wnd.eM11 = 1.0f;
     dc->xformWorld2Wnd.eM12 = 0.0f;
@@ -144,10 +113,6 @@ DC *alloc_dc_ptr( WORD magic )
     dc->xformWorld2Vport    = dc->xformWorld2Wnd;
     dc->xformVport2World    = dc->xformWorld2Wnd;
     dc->vport2WorldValid    = TRUE;
-    dc->BoundsRect.left     = 0;
-    dc->BoundsRect.top      = 0;
-    dc->BoundsRect.right    = 0;
-    dc->BoundsRect.bottom   = 0;
 
     if (!(dc->hSelf = alloc_gdi_handle( &dc->header, magic, &dc_funcs )))
     {
@@ -371,7 +336,7 @@ INT nulldrv_SaveDC( PHYSDEV dev )
 {
     DC *newdc, *dc = get_nulldrv_dc( dev );
 
-    if (!(newdc = HeapAlloc( GetProcessHeap(), 0, sizeof(*newdc )))) return 0;
+    if (!(newdc = HeapAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*newdc )))) return 0;
     newdc->flags            = dc->flags;
     newdc->layout           = dc->layout;
     newdc->hPen             = dc->hPen;
@@ -420,11 +385,6 @@ INT nulldrv_SaveDC( PHYSDEV dev )
 
     /* Get/SetDCState() don't change hVisRgn field ("Undoc. Windows" p.559). */
 
-    newdc->region       = 0;
-    newdc->hVisRgn      = 0;
-    newdc->hClipRgn     = 0;
-    newdc->hMetaRgn     = 0;
-    newdc->hMetaClipRgn = 0;
     if (dc->hClipRgn)
     {
         newdc->hClipRgn = CreateRectRgn( 0, 0, 0, 0 );




More information about the wine-cvs mailing list