Quicken/CreateCompatibleBitmap issue revisited

Carl Sopchak carl.sopchak at cegis123.com
Fri Apr 29 09:46:31 CDT 2005


In the bug found at http://bugs.winehq.org/show_bug.cgi?id=2096 , I have 
described an issue that I am having with Quicken Deluxe 2000 when running 
under Wine.  The symptom is that Quicken was crashing HARD when trying to 
print a partial page of checks on a laser printer.  Now, I just get fixme's 
stating that CreateCompatibleBitmap is getting bad parameters.

(In lieu of reading the following, you could probably just read the last few 
posts in bugzilla for this bug...)

Long story short, with the help of some others (thanks guys!), it seems that 
CreateCompatibleBitmap is being called directly from Quicken, and that 
Quicken seems to be passing an address instead of a value for the height 
parameter.

Now, I would normally just mark the bug as INVALID, and let it go.  But, while 
looking into things, I read the MSDN page describing the function of 
CreateCompatibleBitmap, and it appears to me that there may be "issues" with 
Wine's implementation of CreateCompatibleBitmap.  To quote my post attached 
to the bug:

"I would have changed this bug entry's resolution to INVALID, except that (a) 
I wouldn't mind a more knowledgeable (of Wine, Win API, and C) person to 
verify my findings, and, more importantly, (b) it seems to me that Windows 
would be handling this scenario differently than Wine (or Intuit/Quicken 
would have some customer relations problems due to frequent crashes) - should 
Wine do something different when the parameters are out of whack?  The only 
thing I can see on MSDN under CreateCompatibleBitmap is "Windows 95/98/Me: 
The created bitmap cannot exceed 16MB in size."

"Which I guess brings up another point...  dlls/gdi/bitmap.c's
CreateCompatibleBitmap shows the aforementioned fixme message if the width or
height exceeds 0x10000, and no bitmap is returned.  This seems wrong to me on
three counts: (1) MSDN states that if either width or height is zero, a 1x1
monochrome bitmap is returned (in my case the height was 0, but the width was
"huge", so a 1x1 bitmap should be returned); (2) a 0x11000 by 0x2 bitmap is
within the (more restrictive Win95) 16 MB limit and should be valid; and (3) 
Win NT/2000/XP do not seem to have any restriction on a bitmap's size (except
physical and paged memory constraints), so at least in theory, any values for
width and height are "valid".

So, this begs the question, should Wine's CreateCompatibleBitmap be modified 
for any (or all?) of the reasons above?

Thoughts?  Comments?

Carl



More information about the wine-devel mailing list