Hi Jinoh,
Thanks for looking at it. The patch seems to do the right thing, but some aspects are not clear to me.
On 10/3/21 9:04 PM, Jinoh Kang wrote:
+static UINT get_user_dib_image_size( const BITMAPINFO *info ) +{
- UINT size;
- if (info->bmiHeader.biCompression != BI_RGB)
- {
/* compressed image -- always trust biSizeImage */
return info->bmiHeader.biSizeImage;
- }
- size = get_dib_image_size( info );
- /* biSizeImage can be zero if biCompression == BI_RGB */
- if (info->bmiHeader.biSizeImage)
- {
if (info->bmiHeader.biSizeImage < size)
TRACE( "biSizeImage (%u) smaller than calculated size (%u)",
info->bmiHeader.biSizeImage,
size );
else
size = info->bmiHeader.biSizeImage; /* FIXME */
- }
- return size;
+}
Looking at bitmapinfoheader_from_user_bitmapinfo, we should probably ignore biSizeImage for BI_RGB and BI_BITFIELDS. There is also a question about what we should use for biSizeImage recorded as part of BITMAPINFOHEADER. Maybe we should just copy bitmapinfoheader_from_user_bitmapinfo and use it here. Ideally, we'd have a test for that in tests/metafile.c.
Thanks,
Jacek