Commit af089289 authored by Akihiro Sagawa's avatar Akihiro Sagawa Committed by Alexandre Julliard

msvfw32: Fix uncompressed bitmap size handling in DrawDibDraw.

parent 47a3a052
......@@ -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);
}
}
......
......@@ -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;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment