From eff7bec0b01dfa645e7a273f3bfd4cad8360b3b9 Mon Sep 17 00:00:00 2001 From: Anonymous Maarten Date: Wed, 17 Sep 2025 20:11:11 +0200 Subject: [PATCH 1/2] LoadInterfaceStrings: don't call fclose with a NULL FILE pointer --- src/DETHRACE/common/flicplay.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/DETHRACE/common/flicplay.c b/src/DETHRACE/common/flicplay.c index 3a4fb1de..b309e1c3 100644 --- a/src/DETHRACE/common/flicplay.c +++ b/src/DETHRACE/common/flicplay.c @@ -2146,11 +2146,11 @@ void LoadInterfaceStrings(void) { gTrans_fonts[10] = &gFonts[kFont_DRKPLAQ1]; gTrans_fonts[11] = &gFonts[kFont_BUTTOUT1]; gTrans_fonts[12] = &gFonts[kFont_BUTTIN1]; +#ifdef DETHRACE_FIX_BUGS + fclose(f); +#endif } -#ifdef DETHRACE_FIX_BUGS - fclose(f); -#endif } // IDA: void __cdecl FlushInterfaceFonts() From 5bd38fe359a928dc945eda6b60703572bd7572e7 Mon Sep 17 00:00:00 2001 From: Anonymous Maarten Date: Wed, 17 Sep 2025 20:15:28 +0200 Subject: [PATCH 2/2] Divide with RAND_MAX in [FI]RandomBetween On Linux, RAND_MAX == 2147483647 (0x7fffffff). So RAND_MAX + 1 = 0x80000000 == -2147483648. Because of this, [FI]RandomBetween returned negative numbers for positive inputs --- src/DETHRACE/common/utility.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/DETHRACE/common/utility.c b/src/DETHRACE/common/utility.c index a9c5142d..73432018 100644 --- a/src/DETHRACE/common/utility.c +++ b/src/DETHRACE/common/utility.c @@ -184,7 +184,7 @@ int IRandomBetween(int pA, int pB) { return num; #else // If RAND_MAX != 0x7fff, then use floating numbers (alternative is using modulo) - return pA + (int)((pB + 1 - pA) * (rand() / ((float)RAND_MAX + 1))); + return pA + (int)((pB + 1 - pA) * (rand() / (float)RAND_MAX)); #endif } @@ -205,7 +205,11 @@ int IRandomPosNeg(int pN) { // IDA: float __cdecl FRandomBetween(float pA, float pB) // FUNCTION: CARM95 0x004c16bf float FRandomBetween(float pA, float pB) { +#ifdef DETHRACE_FIX_BUGS + return (float)rand() * (pB - pA) / (float)RAND_MAX + pA; +#else return (float)rand() * (pB - pA) / (RAND_MAX + 1) + pA; +#endif } // IDA: float __cdecl FRandomPosNeg(float pN)