[0.4.9][WIN32SS] Fix BSOD CORE-15433 and repeatedly hit assert CORE-14755

CORE-15433 "Fix assertless BSOD when Opera 12.18 browses duckduckgo.com"
fix ported from 0.4.12-dev-20-g 43e2089 (I ported it back earlier into 0.4.11-RC-7-g 7d0eadd already)

CORE-14775 Allow NULL, Fix repeatedly hit assert when Opera 12.18 browses www.palemoon.org style_name==NULL
by taking parts only of the fix from 0.4.10-dev-284-g ae8762e . I left the verbosed debug-prints aside, as that is not performance-neutral.

They are both related. Actually style_name == NULL is ok, that assert was not correct.
but some of the code was just not handling it properly and dereferenced it.
This commit is contained in:
Joachim Henze 2020-12-11 01:05:58 +01:00
parent 3e63d1b811
commit 7c969a1e23

View file

@ -912,7 +912,8 @@ IntGdiLoadFontsFromMemory(PGDI_LOAD_FONT pLoadFont,
Status = RtlAnsiStringToUnicodeString(&Entry->FaceName, &AnsiString, TRUE);
if (NT_SUCCESS(Status))
{
if (Face->style_name[0] && strcmp(Face->style_name, "Regular"))
if (Face->style_name && Face->style_name[0] &&
strcmp(Face->style_name, "Regular") != 0)
{
RtlInitAnsiString(&AnsiString, Face->style_name);
Status = RtlAnsiStringToUnicodeString(&Entry->StyleName, &AnsiString, TRUE);
@ -4067,7 +4068,6 @@ GetFontPenalty(const LOGFONTW * LogFont,
ASSERT(Otm);
ASSERT(LogFont);
ASSERT(style_name);
/* FIXME: Aspect Penalty 30 */
/* FIXME: IntSizeSynth Penalty 20 */