mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-03-08 23:19:40 +00:00
(svn r15818) -Fix [FS#2752]: some (newer) GCCs have trouble compiling the Win32 specific part of fontcache.cpp; jumps across variable declarations (Maeyanie)
This commit is contained in:
parent
2fe151bd92
commit
56e7d2944b
@ -206,42 +206,47 @@ static const char *GetEnglishFontName(const ENUMLOGFONTEX *logfont)
|
||||
static char font_name[MAX_PATH];
|
||||
const char *ret_font_name = NULL;
|
||||
uint pos = 0;
|
||||
HDC dc;
|
||||
HGDIOBJ oldfont;
|
||||
byte *buf;
|
||||
DWORD dw;
|
||||
uint16 format, count, stringOffset, platformId, encodingId, languageId, nameId, length, offset;
|
||||
|
||||
HFONT font = CreateFontIndirect(&logfont->elfLogFont);
|
||||
if (font == NULL) goto err1;
|
||||
|
||||
HDC dc = GetDC(NULL);
|
||||
HGDIOBJ oldfont = SelectObject(dc, font);
|
||||
DWORD dw = GetFontData(dc, 'eman', 0, NULL, 0);
|
||||
dc = GetDC(NULL);
|
||||
oldfont = SelectObject(dc, font);
|
||||
dw = GetFontData(dc, 'eman', 0, NULL, 0);
|
||||
if (dw == GDI_ERROR) goto err2;
|
||||
|
||||
byte *buf = MallocT<byte>(dw);
|
||||
buf = MallocT<byte>(dw);
|
||||
dw = GetFontData(dc, 'eman', 0, buf, dw);
|
||||
if (dw == GDI_ERROR) goto err3;
|
||||
|
||||
uint16 format = buf[pos++] << 8;
|
||||
format = buf[pos++] << 8;
|
||||
format += buf[pos++];
|
||||
assert(format == 0);
|
||||
uint16 count = buf[pos++] << 8;
|
||||
count = buf[pos++] << 8;
|
||||
count += buf[pos++];
|
||||
uint16 stringOffset = buf[pos++] << 8;
|
||||
stringOffset = buf[pos++] << 8;
|
||||
stringOffset += buf[pos++];
|
||||
for (uint i = 0; i < count; i++) {
|
||||
uint16 platformId = buf[pos++] << 8;
|
||||
platformId = buf[pos++] << 8;
|
||||
platformId += buf[pos++];
|
||||
uint16 encodingId = buf[pos++] << 8;
|
||||
encodingId = buf[pos++] << 8;
|
||||
encodingId += buf[pos++];
|
||||
uint16 languageId = buf[pos++] << 8;
|
||||
languageId = buf[pos++] << 8;
|
||||
languageId += buf[pos++];
|
||||
uint16 nameId = buf[pos++] << 8;
|
||||
nameId = buf[pos++] << 8;
|
||||
nameId += buf[pos++];
|
||||
if (nameId != 1) {
|
||||
pos += 4; // skip length and offset
|
||||
continue;
|
||||
}
|
||||
uint16 length = buf[pos++] << 8;
|
||||
length = buf[pos++] << 8;
|
||||
length += buf[pos++];
|
||||
uint16 offset = buf[pos++] << 8;
|
||||
offset = buf[pos++] << 8;
|
||||
offset += buf[pos++];
|
||||
|
||||
/* Don't buffer overflow */
|
||||
|
Loading…
Reference in New Issue
Block a user