1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

* include/ruby/ruby.h (rb_array_const_ptr, rb_struct_const_ptr):

Suppress pointer type mismatch warnings occurred with old version
  of Fujitsu C Compiler (fcc) on Solaris 10. The warnings cause
  failure of TestMkmf::TestConvertible. [Bug #11644] [ruby-dev:49326]
* include/ruby/ruby.h (FIX_CONST_VALUE_PTR): macro for the above,
  only effective with fcc.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52465 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
ngoto 2015-11-06 09:19:14 +00:00
parent a2dbb9d603
commit fcf63d1e54
2 changed files with 21 additions and 4 deletions

View file

@ -1,3 +1,12 @@
Fri Nov 6 18:07:47 2015 Naohisa Goto <ngotogenome@gmail.com>
* include/ruby/ruby.h (rb_array_const_ptr, rb_struct_const_ptr):
Suppress pointer type mismatch warnings occurred with old version
of Fujitsu C Compiler (fcc) on Solaris 10. The warnings cause
failure of TestMkmf::TestConvertible. [Bug #11644] [ruby-dev:49326]
* include/ruby/ruby.h (FIX_CONST_VALUE_PTR): macro for the above,
only effective with fcc.
Fri Nov 6 12:39:21 2015 Nobuyoshi Nakada <nobu@ruby-lang.org> Fri Nov 6 12:39:21 2015 Nobuyoshi Nakada <nobu@ruby-lang.org>
* defs/id.def (token_ops), parse.y (parser_yylex): change DOTQ * defs/id.def (token_ops), parse.y (parser_yylex): change DOTQ

View file

@ -2004,11 +2004,19 @@ rb_array_len(VALUE a)
RARRAY_EMBED_LEN(a) : RARRAY(a)->as.heap.len; RARRAY_EMBED_LEN(a) : RARRAY(a)->as.heap.len;
} }
#if defined(__fcc__) || defined(__fcc_version) || \
defined(__FCC__) || defined(__FCC_VERSION)
/* workaround for old version of Fujitsu C Compiler (fcc) */
# define FIX_CONST_VALUE_PTR(x) ((const VALUE *)(x))
#else
# define FIX_CONST_VALUE_PTR(x) (x)
#endif
static inline const VALUE * static inline const VALUE *
rb_array_const_ptr(VALUE a) rb_array_const_ptr(VALUE a)
{ {
return (RBASIC(a)->flags & RARRAY_EMBED_FLAG) ? return FIX_CONST_VALUE_PTR((RBASIC(a)->flags & RARRAY_EMBED_FLAG) ?
RARRAY(a)->as.ary : RARRAY(a)->as.heap.ptr; RARRAY(a)->as.ary : RARRAY(a)->as.heap.ptr);
} }
static inline long static inline long
@ -2021,8 +2029,8 @@ rb_struct_len(VALUE st)
static inline const VALUE * static inline const VALUE *
rb_struct_const_ptr(VALUE st) rb_struct_const_ptr(VALUE st)
{ {
return (RBASIC(st)->flags & RSTRUCT_EMBED_LEN_MASK) ? return FIX_CONST_VALUE_PTR((RBASIC(st)->flags & RSTRUCT_EMBED_LEN_MASK) ?
RSTRUCT(st)->as.ary : RSTRUCT(st)->as.heap.ptr; RSTRUCT(st)->as.ary : RSTRUCT(st)->as.heap.ptr);
} }
#if defined(EXTLIB) && defined(USE_DLN_A_OUT) #if defined(EXTLIB) && defined(USE_DLN_A_OUT)