gdi.exe: Reset devmode->dmDriverExtra to avoid invalid memory accesses.
Dmitry Timoshkov
dmitry at baikal.ru
Fri Nov 13 07:14:16 CST 2015
ChangeDisplaySettingsA/W already handle passed in DEVMODE this way.
For bug 19160.
Signed-off-by: Dmitry Timoshkov <dmitry at baikal.ru>
---
dlls/gdi.exe16/gdi.c | 7 ++++---
include/wine/wingdi16.h | 2 +-
2 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/dlls/gdi.exe16/gdi.c b/dlls/gdi.exe16/gdi.c
index 8ee37d7..bfdbf6d 100644
--- a/dlls/gdi.exe16/gdi.c
+++ b/dlls/gdi.exe16/gdi.c
@@ -1169,10 +1169,11 @@ HDC16 WINAPI CreateCompatibleDC16( HDC16 hdc )
/***********************************************************************
* CreateDC (GDI.53)
*/
-HDC16 WINAPI CreateDC16( LPCSTR driver, LPCSTR device, LPCSTR output,
- const DEVMODEA *initData )
+HDC16 WINAPI CreateDC16( LPCSTR driver, LPCSTR device, LPCSTR output, DEVMODEA *devmode )
{
- return HDC_16( CreateDCA( driver, device, output, initData ) );
+ if (devmode) devmode->dmDriverExtra = 0;
+
+ return HDC_16( CreateDCA( driver, device, output, devmode ) );
}
diff --git a/include/wine/wingdi16.h b/include/wine/wingdi16.h
index c56c7b1..f763be6 100644
--- a/include/wine/wingdi16.h
+++ b/include/wine/wingdi16.h
@@ -377,7 +377,7 @@ HBITMAP16 WINAPI CreateBitmapIndirect16(const BITMAP16*);
HBRUSH16 WINAPI CreateBrushIndirect16(const LOGBRUSH16*);
HBITMAP16 WINAPI CreateCompatibleBitmap16(HDC16,INT16,INT16);
HDC16 WINAPI CreateCompatibleDC16(HDC16);
-HDC16 WINAPI CreateDC16(LPCSTR,LPCSTR,LPCSTR,const DEVMODEA*);
+HDC16 WINAPI CreateDC16(LPCSTR,LPCSTR,LPCSTR,DEVMODEA*);
HBITMAP16 WINAPI CreateDIBitmap16(HDC16,const BITMAPINFOHEADER*,DWORD,
LPCVOID,const BITMAPINFO*,UINT16);
HBRUSH16 WINAPI CreateDIBPatternBrush16(HGLOBAL16,UINT16);
--
2.6.3
More information about the wine-patches
mailing list