From fc0498b3a8029a6bb85cd00df4775cbe679338e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?eray=20or=C3=A7unus?= Date: Sat, 6 Jun 2020 19:25:37 +0300 Subject: CFont crash workaround --- src/render/Font.cpp | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) (limited to 'src/render/Font.cpp') diff --git a/src/render/Font.cpp b/src/render/Font.cpp index ef665fae..42637390 100644 --- a/src/render/Font.cpp +++ b/src/render/Font.cpp @@ -936,15 +936,27 @@ CFont::GetStringWidth(wchar *s, bool spaces) } else #endif { - for (; (*s != ' ' || spaces) && *s != '\0'; s++) { - if (*s == '~') { - s++; - while (*s != '~') s++; + for (wchar c = *s; (c != ' ' || spaces) && c != '\0'; c = *(++s)) { + if (c == '~') { + + // This is original code +#if 0 s++; - if (*s == ' ' && !spaces) - break; + while (*s != '~') { + s++; + } +#else + // TODO(Miami): This is my code to prevent fuck up until InsertPlayerControlKeysInString is done + if (*(s + 1) != '~') { + s++; + while (*s != '~') { + s++; + } + } +#endif + } else { + w += GetCharacterSize(c - ' '); } - w += GetCharacterSize(*s - ' '); } } return w; -- cgit v1.2.3