LOCAL: Not enough space in GDI heap

Huw D M Davies h.davies1 at physics.ox.ac.uk
Mon Feb 9 10:39:17 CST 2004


On Mon, Feb 09, 2004 at 05:03:40PM +0100, Fabian Cenedese wrote:
> 
> I hacked some more and need an advice. I changed font.cpp: CreateFontIndirectW
> a bit. Instead of always allocating a new gdi object it has a list of already
> allocated font objects and first tests if there was already a font allocated
> with the same logical properties (LOGFONTW). If so it just returns the
> existing HFONT and doesn't allocate a new one. With this change my
> VB app with the many controls comes up and is almost usable. Some
> fonts on the registers of the tab control look quite strange. But besides
> that it works.
> 
> Now is this a reasonable change (apart from its hacky implementation
> now :) ? Is the function CreateFontIndirect allowed to do something like
> this? Are there more things I should test than just the ones in the
> LOGFONTW struct? If anybody is interested in a screenshot (the
> funny fonts go down by about 20 degrees :) just raise your hand.

No, this isn't right.  You can convince yourself of this by a quick
test program on Windows; initialize a LOGFONT and then call
CreateFontIndirect twice, you'll get two different hfonts back.

I suspect your leak happens in the olefont implementation.  You want
to check that each hfont is destroyed when the IOleFont interface is
released.

Huw.
-- 
Huw Davies
huw at codeweavers.com



More information about the wine-devel mailing list