[Bug 28610] New: Drawing of Text using Message LOGFONT obtained via SystemParametersInfo can cause a crash in drawing of text (difference in behaviour)

wine-bugs at winehq.org wine-bugs at winehq.org
Fri Oct 7 15:30:01 CDT 2011


http://bugs.winehq.org/show_bug.cgi?id=28610

             Bug #: 28610
           Summary: Drawing of Text using Message LOGFONT obtained via
                    SystemParametersInfo can cause a crash in drawing of
                    text (difference in behaviour)
           Product: Wine
           Version: 1.3.29
          Platform: x86
        OS/Version: Linux
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: gdi32
        AssignedTo: wine-bugs at winehq.org
        ReportedBy: damian.dixon at gmail.com
    Classification: Unclassified


I have narrowed an issue down to a difference in behaviour between Windows and
Wine.

The problem boils down to the following code:

  NONCLIENTMETRICS ncm;
  memset(&ncm, 0, sizeof(NONCLIENTMETRICS));
  ncm.cbSize = sizeof(NONCLIENTMETRICS);

  VERIFY(SystemParametersInfo(SPI_GETNONCLIENTMETRICS,
sizeof(NONCLIENTMETRICS), &ncm, 0));

I used the font's returned from this call for drawing text and this caused the
crash.

The problem is that I upgraded to VS2010 and changed the target to
WINVER=0x600.

This means that I needed to change my code to the following.

  NONCLIENTMETRICS ncm;
  memset(&ncm, 0, sizeof(NONCLIENTMETRICS));
  ncm.cbSize = sizeof(NONCLIENTMETRICS);

#if(WINVER >= 0x0600) 
  OSVERSIONINFO osvi; 
  memset(&osvi,0,sizeof(osvi)); 
  osvi.dwOSVersionInfoSize = sizeof(osvi); 
  GetVersionEx(&osvi); 
  if (osvi.dwMajorVersion < 6) 
    ncm.cbSize -= sizeof(ncm.iPaddedBorderWidth); 
#endif
  VERIFY(SystemParametersInfo(SPI_GETNONCLIENTMETRICS,
sizeof(NONCLIENTMETRICS), &ncm, 0));

Note: On windows my application does not actually crash or stop working with my
original code and the text is displayed at a size I would kind of expect it to
be.

-- 
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
Do not reply to this email, post in Bugzilla using the
above URL to reply.
------- You are receiving this mail because: -------
You are watching all bug changes.



More information about the wine-bugs mailing list