Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 99d1f2c

Browse files
committed
merge revision(s) 63571,63572: [Backport #14816]
`int isnan(double)` is a POSIXism - `isnan` is something relatively new. We need to provide one for those systems without it. However: - X/Open defines `int isnan(double)`. Note the `int`. - C99 defines `isnan(x)` to be a macro. - C++11 nukes them all, undefines all the "masking macro"s, and defines its own `bool isnan(double)`. Note the `bool`. - In C++, `int isnan(double)` and `bool isnan(double)` are incompatible. - So the mess. [Bug #14816][ruby-core:87364] further reading: https://developers.redhat.com/blog/2016/02/29/why-cstdlib-is-more-complicated-than-you-might-think/ include/ruby/missing.h: defined(__cplusplus) before using __cplusplus * include/ruby/missing.h (isinf, isnan): For non-C++ programs, defined(__cplusplus) may be needed before using __cplusplus. [Bug #14816] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_5@64434 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
1 parent f5a90a2 commit 99d1f2c

File tree

2 files changed

+7
-1
lines changed

2 files changed

+7
-1
lines changed

include/ruby/missing.h

+6
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,8 @@ RUBY_EXTERN const union bytesequence4_or_float rb_nan;
162162
# include <ieeefp.h>
163163
# endif
164164
# define isinf(x) (!finite(x) && !isnan(x))
165+
# elif defined(__cplusplus) && __cplusplus >= 201103L
166+
# include <cmath> // it must include constexpr bool isinf(double);
165167
# else
166168
RUBY_EXTERN int isinf(double);
167169
# endif
@@ -170,7 +172,11 @@ RUBY_EXTERN int isinf(double);
170172

171173
#ifndef isnan
172174
# ifndef HAVE_ISNAN
175+
# if defined(__cplusplus) && __cplusplus >= 201103L
176+
# include <cmath> // it must include constexpr bool isnan(double);
177+
# else
173178
RUBY_EXTERN int isnan(double);
179+
# endif
174180
# endif
175181
#endif
176182

version.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#define RUBY_VERSION "2.5.2"
22
#define RUBY_RELEASE_DATE "2018-08-18"
3-
#define RUBY_PATCHLEVEL 76
3+
#define RUBY_PATCHLEVEL 77
44

55
#define RUBY_RELEASE_YEAR 2018
66
#define RUBY_RELEASE_MONTH 8

0 commit comments

Comments
 (0)