diff options
Diffstat (limited to 'include/ruby/missing.h')
-rw-r--r-- | include/ruby/missing.h | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/include/ruby/missing.h b/include/ruby/missing.h index 91a6540299..0edb1ec6c0 100644 --- a/include/ruby/missing.h +++ b/include/ruby/missing.h @@ -124,20 +124,27 @@ RUBY_EXTERN double lgamma_r(double, int *); RUBY_EXTERN double cbrt(double); #endif +#if !defined(INFINITY) || !defined(NAN) +union bytesequence4_or_float { + unsigned char bytesequence[4]; + float float_value; +}; +#endif + #ifdef INFINITY # define HAVE_INFINITY #else /** @internal */ -RUBY_EXTERN const unsigned char rb_infinity[]; -# define INFINITY (*(float *)rb_infinity) +RUBY_EXTERN const union bytesequence4_or_float rb_infinity; +# define INFINITY (rb_infinity.float_value) #endif #ifdef NAN # define HAVE_NAN #else /** @internal */ -RUBY_EXTERN const unsigned char rb_nan[]; -# define NAN (*(float *)rb_nan) +RUBY_EXTERN const union bytesequence4_or_float rb_nan; +# define NAN (rb_nan.float_value) #endif #ifndef isinf |