Akihiro Sagawa : msvfw32: Fix uncompressed bitmap size handling in DrawDibDraw.
Alexandre Julliard
julliard at winehq.org
Fri May 2 11:50:37 CDT 2014
Module: wine
Branch: master
Commit: af089289b32dbeec797f810938bca4adc8f717db
URL: http://source.winehq.org/git/wine.git/?a=commit;h=af089289b32dbeec797f810938bca4adc8f717db
Author: Akihiro Sagawa <sagawa.aki at gmail.com>
Date: Fri May 2 22:14:24 2014 +0900
msvfw32: Fix uncompressed bitmap size handling in DrawDibDraw.
---
dlls/msvfw32/drawdib.c | 8 ++------
dlls/msvfw32/tests/drawdib.c | 6 ++++++
2 files changed, 8 insertions(+), 6 deletions(-)
diff --git a/dlls/msvfw32/drawdib.c b/dlls/msvfw32/drawdib.c
index 2916126..c4e5c40 100644
--- a/dlls/msvfw32/drawdib.c
+++ b/dlls/msvfw32/drawdib.c
@@ -355,12 +355,6 @@ BOOL VFWAPI DrawDibDraw(HDRAWDIB hdd, HDC hdc,
if (!(wFlags & DDF_UPDATE))
{
- DWORD biSizeImage = lpbi->biSizeImage;
-
- /* biSizeImage may be set to 0 for BI_RGB (uncompressed) bitmaps */
- if ((lpbi->biCompression == BI_RGB) && (biSizeImage == 0))
- biSizeImage = ((lpbi->biWidth * lpbi->biBitCount + 31) / 32) * 4 * lpbi->biHeight;
-
if (lpbi->biCompression)
{
DWORD flags = 0;
@@ -374,6 +368,8 @@ BOOL VFWAPI DrawDibDraw(HDRAWDIB hdd, HDC hdc,
}
else
{
+ /* BI_RGB: lpbi->biSizeImage isn't reliable */
+ DWORD biSizeImage = ((lpbi->biWidth * lpbi->biBitCount + 31) / 32) * 4 * lpbi->biHeight;
memcpy(whdd->lpvbits, lpBits, biSizeImage);
}
}
diff --git a/dlls/msvfw32/tests/drawdib.c b/dlls/msvfw32/tests/drawdib.c
index 24d8631..0a59d82 100644
--- a/dlls/msvfw32/tests/drawdib.c
+++ b/dlls/msvfw32/tests/drawdib.c
@@ -105,6 +105,12 @@ static void test_DrawDib_sizeimage(void)
{ 0, 0, 0, "" },
{ 0, HEIGHT, 0, "" },
{ WIDTH, 0, 0, "" },
+ /* [8] zero size (to compare [9], [10] ) */
+ { WIDTH, HEIGHT/2, 0, "8b75bf6d54a8645380114fe77505ee0699ffffaa" },
+ /* [9] insufficient size */
+ { WIDTH, HEIGHT/2, sizeof(RGBQUAD), "8b75bf6d54a8645380114fe77505ee0699ffffaa" },
+ /* [10] too much size */
+ { WIDTH, HEIGHT/2, WIDTH * HEIGHT * sizeof(RGBQUAD), "8b75bf6d54a8645380114fe77505ee0699ffffaa" },
};
HDC hdc;
DWORD src_dib_size, dst_dib_size;
More information about the wine-cvs
mailing list