From 58728ec358b021d3ec4dc901ca1307e00cf14241 Mon Sep 17 00:00:00 2001 From: mazmazz Date: Mon, 24 Dec 2018 19:58:05 -0500 Subject: [PATCH 1/4] Fix float comparison for colormap maskamt --- src/r_data.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/r_data.c b/src/r_data.c index e0b9a814..ae44631b 100644 --- a/src/r_data.c +++ b/src/r_data.c @@ -1220,7 +1220,7 @@ INT32 R_CreateColormap(char *p1, char *p2, char *p3) continue; if (maskcolor == extra_colormaps[i].maskcolor && fadecolor == extra_colormaps[i].fadecolor - && fabsf((float)(maskamt - extra_colormaps[i].maskamt)) < 1.0E-36f + && fabs(maskamt - extra_colormaps[i].maskamt) < 1.0E-36 && fadestart == extra_colormaps[i].fadestart && fadeend == extra_colormaps[i].fadeend && fog == extra_colormaps[i].fog) From e9e51287548ca10c7c77232e889dd135dd054dd2 Mon Sep 17 00:00:00 2001 From: mazmazz Date: Mon, 24 Dec 2018 20:22:10 -0500 Subject: [PATCH 2/4] Use DBL_EPSILON for colormap comparison --- src/doomdef.h | 4 ++++ src/r_data.c | 4 +++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/doomdef.h b/src/doomdef.h index 796221c9..27b94614 100644 --- a/src/doomdef.h +++ b/src/doomdef.h @@ -410,6 +410,10 @@ INT32 I_GetKey(void); #define max(x, y) (((x) > (y)) ? (x) : (y)) #endif +// Floating point comparison epsilons from float.h +#define FLT_EPSILON 1.1920928955078125e-7f +#define DBL_EPSILON 2.2204460492503131e-16 + // An assert-type mechanism. #ifdef PARANOIA #define I_Assert(e) ((e) ? (void)0 : I_Error("assert failed: %s, file %s, line %d", #e, __FILE__, __LINE__)) diff --git a/src/r_data.c b/src/r_data.c index ae44631b..b497d4b0 100644 --- a/src/r_data.c +++ b/src/r_data.c @@ -1220,7 +1220,7 @@ INT32 R_CreateColormap(char *p1, char *p2, char *p3) continue; if (maskcolor == extra_colormaps[i].maskcolor && fadecolor == extra_colormaps[i].fadecolor - && fabs(maskamt - extra_colormaps[i].maskamt) < 1.0E-36 + && fabs(maskamt - extra_colormaps[i].maskamt) < DBL_EPSILON && fadestart == extra_colormaps[i].fadestart && fadeend == extra_colormaps[i].fadeend && fog == extra_colormaps[i].fog) @@ -1229,6 +1229,8 @@ INT32 R_CreateColormap(char *p1, char *p2, char *p3) } } + CONS_Printf("Making a new colormap\n"); + if (num_extra_colormaps == MAXCOLORMAPS) I_Error("R_CreateColormap: Too many colormaps! the limit is %d\n", MAXCOLORMAPS); From c65f44e805824c4b115585ff6aeead97d0832f7a Mon Sep 17 00:00:00 2001 From: mazmazz Date: Mon, 24 Dec 2018 20:33:59 -0500 Subject: [PATCH 3/4] Remove log message --- src/r_data.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/r_data.c b/src/r_data.c index b497d4b0..a21ba49a 100644 --- a/src/r_data.c +++ b/src/r_data.c @@ -1229,8 +1229,6 @@ INT32 R_CreateColormap(char *p1, char *p2, char *p3) } } - CONS_Printf("Making a new colormap\n"); - if (num_extra_colormaps == MAXCOLORMAPS) I_Error("R_CreateColormap: Too many colormaps! the limit is %d\n", MAXCOLORMAPS); From 10a3e3fec9d0e37ebe16ba381b48a73a924b8d5d Mon Sep 17 00:00:00 2001 From: mazmazz Date: Mon, 24 Dec 2018 20:36:28 -0500 Subject: [PATCH 4/4] Define EPSILONs only if not already defined Fixes OSX buildbot --- src/doomdef.h | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/doomdef.h b/src/doomdef.h index 27b94614..d63c5038 100644 --- a/src/doomdef.h +++ b/src/doomdef.h @@ -411,8 +411,13 @@ INT32 I_GetKey(void); #endif // Floating point comparison epsilons from float.h +#ifndef FLT_EPSILON #define FLT_EPSILON 1.1920928955078125e-7f +#endif + +#ifndef DBL_EPSILON #define DBL_EPSILON 2.2204460492503131e-16 +#endif // An assert-type mechanism. #ifdef PARANOIA