From 884cae52d3102406645d0a61c50adc8aa436e0eb Mon Sep 17 00:00:00 2001 From: Ethan Lee Date: Tue, 10 Nov 2020 19:17:45 -0500 Subject: [PATCH] Replace SWAPDBL loop with memcpy, fixes MinGW Win64 --- mojoshader.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/mojoshader.c b/mojoshader.c index 95915c5..f50053d 100644 --- a/mojoshader.c +++ b/mojoshader.c @@ -2566,8 +2566,13 @@ static void parse_preshader(Context *ctx, const uint32 *tokens, uint32 tokcount) if (preshader->literals == NULL) return; // oh well. const double *litptr = (const double *) (clit.tokens + 2); - for (i = 0; i < lit_count; i++) - preshader->literals[i] = SWAPDBL(litptr[i]); + // !!! FIXME: This should be a SWAPDBL loop, but in addition to + // !!! FIXME: never having an implementation, it turns out some + // !!! FIXME: MinGW versions do not optimize this correctly, which + // !!! FIXME: can cause random crashes on Win64. -flibit + //for (i = 0; i < lit_count; i++) + // preshader->literals[i] = SWAPDBL(litptr[i]); + memcpy(preshader->literals, litptr, len); } // else if } // else