From 434c1dc5b57090217a0a5a3a5e382e9e0065e0c1 Mon Sep 17 00:00:00 2001 From: ngoto Date: Fri, 6 Nov 2015 09:19:14 +0000 Subject: * 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 --- include/ruby/ruby.h | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) (limited to 'include/ruby') diff --git a/include/ruby/ruby.h b/include/ruby/ruby.h index 6486344945..f778298d62 100644 --- a/include/ruby/ruby.h +++ b/include/ruby/ruby.h @@ -2004,11 +2004,19 @@ rb_array_len(VALUE a) 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 * rb_array_const_ptr(VALUE a) { - return (RBASIC(a)->flags & RARRAY_EMBED_FLAG) ? - RARRAY(a)->as.ary : RARRAY(a)->as.heap.ptr; + return FIX_CONST_VALUE_PTR((RBASIC(a)->flags & RARRAY_EMBED_FLAG) ? + RARRAY(a)->as.ary : RARRAY(a)->as.heap.ptr); } static inline long @@ -2021,8 +2029,8 @@ rb_struct_len(VALUE st) static inline const VALUE * rb_struct_const_ptr(VALUE st) { - return (RBASIC(st)->flags & RSTRUCT_EMBED_LEN_MASK) ? - RSTRUCT(st)->as.ary : RSTRUCT(st)->as.heap.ptr; + return FIX_CONST_VALUE_PTR((RBASIC(st)->flags & RSTRUCT_EMBED_LEN_MASK) ? + RSTRUCT(st)->as.ary : RSTRUCT(st)->as.heap.ptr); } #if defined(EXTLIB) && defined(USE_DLN_A_OUT) -- cgit v1.2.3