gdi32: don't access DC in PolyDraw after releasing handle [try2]
Evan Stade
estade at gmail.com
Tue Jul 3 21:06:34 CDT 2007
Hi,
[try2] no whitespace modifications
Changelog:
* changed way PolyDraw returns a result
dlls/gdi32/painting.c | 21 +++++++++++++--------
1 files changed, 13 insertions(+), 8 deletions(-)
--
Evan Stade
-------------- next part --------------
diff --git a/dlls/gdi32/painting.c b/dlls/gdi32/painting.c
index 1b30d6d..3e84f60 100644
--- a/dlls/gdi32/painting.c
+++ b/dlls/gdi32/painting.c
@@ -833,18 +833,18 @@ BOOL WINAPI PolyDraw(HDC hdc, const POIN
if(dc->funcs->pPolyDraw)
{
result = dc->funcs->pPolyDraw( dc->physDev, lppt, lpbTypes, cCount );
- GDI_ReleaseObj( hdc );
- return result;
+ goto end;
}
- GDI_ReleaseObj( hdc );
/* check for each bezierto if there are two more points */
for( i = 0; i < cCount; i++ )
if( lpbTypes[i] != PT_MOVETO &&
lpbTypes[i] & PT_BEZIERTO )
{
- if( cCount < i+3 )
- return FALSE;
+ if( cCount < i+3 ){
+ result = FALSE;
+ goto end;
+ }
else
i += 2;
}
@@ -869,8 +869,10 @@ BOOL WINAPI PolyDraw(HDC hdc, const POIN
PolyBezierTo( hdc, &lppt[i], 3 );
i += 2;
}
- else
- return FALSE;
+ else{
+ result = FALSE;
+ goto end;
+ }
if( lpbTypes[i] & PT_CLOSEFIGURE )
{
@@ -881,7 +883,10 @@ BOOL WINAPI PolyDraw(HDC hdc, const POIN
}
}
- return TRUE;
+ result = TRUE;
+end:
+ GDI_ReleaseObj( hdc );
+ return result;
}
--
1.4.1
More information about the wine-patches
mailing list