text: Bug #11483
  internal.h included after math.h in complex.c
  Status:
  Closed
  Priority:
  Normal
  Assignee:
  -
  Target version:
  -
  [ruby-core:<unknown>]
  ruby -v:
  ruby 2.3.0dev (2015-08-23 trunk 51669) [powerpc-aix7.1.2.0]
  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.
  Related issues
  Updated by naruse (Yui NARUSE) over 4 years ago
  - Blocks Misc #11516: Ruby 2.3.0 release engeneering added
  Updated by ReiOdaira (Rei Odaira) over 4 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 4 years ago
  - Status changed from Open to Closed
  Also available in: Atom PDF