From 5043dff351f4ad9095f66bbef8e08d363cd959a0 Mon Sep 17 00:00:00 2001 From: antirez Date: Tue, 27 Oct 2009 18:38:25 +0100 Subject: [PATCH] More Solaris fixes --- redis.c | 3 +++ solarisfixes.h | 16 ++++++++++++++++ 2 files changed, 19 insertions(+) create mode 100644 solarisfixes.h diff --git a/redis.c b/redis.c index eb44138f..e26e676f 100644 --- a/redis.c +++ b/redis.c @@ -58,6 +58,9 @@ #include #include #include +#if defined(__sun) && defined(__GNUC__) +#include "solarisfixes.h" +#endif #include "redis.h" #include "ae.h" /* Event driven programming library */ diff --git a/solarisfixes.h b/solarisfixes.h new file mode 100644 index 00000000..36f19201 --- /dev/null +++ b/solarisfixes.h @@ -0,0 +1,16 @@ +/* Solaris specific fixes */ + +#undef isnan +#define isnan(x) \ + __extension__({ __typeof (x) __x_a = (x); \ + __builtin_expect(__x_a != __x_a, 0); }) + +#undef isfinite +#define isfinite(x) \ + __extension__ ({ __typeof (x) __x_f = (x); \ + __builtin_expect(!isnan(__x_f - __x_f), 1); }) + +#undef isinf +#define isinf(x) \ + __extension__ ({ __typeof (x) __x_i = (x); \ + __builtin_expect(!isnan(__x_i) && !isfinite(__x_i), 0); })