Bug #11483
closedinternal.h included after math.h in complex.c
Description
r51313 modified complex.c to include internal.h after math.h, so that ruby/missing.h (included from internal.h) can test whether M_PI
is defined or not in math.h. Unfortunately, ruby/config.h, which is included from internal.h, defines _LARGE_FILES
, which must be defined before sys/types.h is included from math.h. Otherwise, in AIX, off_t
would be incorrectly defined as a 32-bit integer even when large files are used.
--- complex.c (revision 51312)
+++ complex.c (revision 51313)
@@ -5,12 +5,12 @@
which is written in ruby.
*/
-#include "internal.h"
#if defined _MSC_VER
/* Microsoft Visual C does not define M_PI and others by default */
# define _USE_MATH_DEFINES 1
#endif
#include <math.h>
+#include "internal.h"
#define NDEBUG
#include <assert.h>
There would be a couple of workarounds to fix this problem, but since I am relatively new to the Ruby core, I am wondering what would be the most acceptable way.
Updated by naruse (Yui NARUSE) over 7 years ago
- Blocks Misc #11516: Ruby 2.3.0 release engeneering added
Updated by ReiOdaira (Rei Odaira) over 7 years ago
Possible options:
- Define M_PI and M_PI_2 in complex.c
- Define _LARGE_FILES not in config.h but in a compiler option
- Include ruby/config.h before math.h but keep internal.h included after math.h in complex.c
- Any other options?
Option 3 looks reasonable if it is allowed to directly include ruby/config.h.
Updated by Anonymous over 7 years ago
- Status changed from Open to Closed
Applied in changeset r51922.
complex.c: ruby/config.h must be included before math.h
because it defines _LARGE_FILES on AIX and _LARGE_FILES
must be defined before sys/types.h is included from math.h.
[Bug #11483]