[前][次][番号順一覧][スレッド一覧]

ruby-changes:15101

From: nobu <ko1@a...>
Date: Fri, 19 Mar 2010 17:12:59 +0900 (JST)
Subject: [ruby-changes:15101] Ruby:r26978 (ruby_1_8): * ruby.h (RSTRING_*, RARRAY_*, RREGEXP_*, RSTRUCT_*, RBIGNUM_*):

nobu	2010-03-19 17:12:40 +0900 (Fri, 19 Mar 2010)

  New Revision: 26978

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=26978

  Log:
    * ruby.h (RSTRING_*, RARRAY_*, RREGEXP_*, RSTRUCT_*, RBIGNUM_*):
      ensure non-lvalue for compatibility with 1.9.

  Modified files:
    branches/ruby_1_8/ChangeLog
    branches/ruby_1_8/ruby.h
    branches/ruby_1_8/version.h

Index: ruby_1_8/ChangeLog
===================================================================
--- ruby_1_8/ChangeLog	(revision 26977)
+++ ruby_1_8/ChangeLog	(revision 26978)
@@ -1,3 +1,8 @@
+Fri Mar 19 17:12:34 2010  Nobuyoshi Nakada  <nobu@r...>
+
+	* ruby.h (RSTRING_*, RARRAY_*, RREGEXP_*, RSTRUCT_*, RBIGNUM_*):
+	  ensure non-lvalue for compatibility with 1.9.
+
 Thu Mar 18 13:51:22 2010  NARUSE, Yui  <naruse@r...>
 
 	* io.c, eval.c, process.c: add linux to r26371's condition.
Index: ruby_1_8/version.h
===================================================================
--- ruby_1_8/version.h	(revision 26977)
+++ ruby_1_8/version.h	(revision 26978)
@@ -1,7 +1,7 @@
 #define RUBY_VERSION "1.8.8"
-#define RUBY_RELEASE_DATE "2010-03-18"
+#define RUBY_RELEASE_DATE "2010-03-19"
 #define RUBY_VERSION_CODE 188
-#define RUBY_RELEASE_CODE 20100318
+#define RUBY_RELEASE_CODE 20100319
 #define RUBY_PATCHLEVEL -1
 
 #define RUBY_VERSION_MAJOR 1
@@ -9,7 +9,7 @@
 #define RUBY_VERSION_TEENY 8
 #define RUBY_RELEASE_YEAR 2010
 #define RUBY_RELEASE_MONTH 3
-#define RUBY_RELEASE_DAY 18
+#define RUBY_RELEASE_DAY 19
 
 #ifdef RUBY_EXTERN
 RUBY_EXTERN const char ruby_version[];
Index: ruby_1_8/ruby.h
===================================================================
--- ruby_1_8/ruby.h	(revision 26977)
+++ ruby_1_8/ruby.h	(revision 26978)
@@ -364,8 +364,8 @@
 	VALUE shared;
     } aux;
 };
-#define RSTRING_PTR(s) (RSTRING(s)->ptr)
-#define RSTRING_LEN(s) (RSTRING(s)->len)
+#define RSTRING_PTR(s) (*(char *const *)&RSTRING(s)->ptr)
+#define RSTRING_LEN(s) (*(const long *)&RSTRING(s)->len)
 #define RSTRING_END(s) (RSTRING_PTR(s)+RSTRING_LEN(s))
 
 struct RArray {
@@ -377,8 +377,8 @@
     } aux;
     VALUE *ptr;
 };
-#define RARRAY_PTR(s) (RARRAY(s)->ptr)
-#define RARRAY_LEN(s) (RARRAY(s)->len)
+#define RARRAY_PTR(s) (*(VALUE *const *)&RARRAY(s)->ptr)
+#define RARRAY_LEN(s) (*(const long *)&RARRAY(s)->len)
 
 struct RRegexp {
     struct RBasic basic;
@@ -386,8 +386,8 @@
     long len;
     char *str;
 };
-#define RREGEXP_SRC_PTR(r) (RREGEXP(r)->src)
-#define RREGEXP_SRC_LEN(r) (RREGEXP(r)->len)
+#define RREGEXP_SRC_PTR(r) (*(char *const *)&RREGEXP(r)->src)
+#define RREGEXP_SRC_LEN(r) (*(const long *)&RREGEXP(r)->len)
 
 struct RHash {
     struct RBasic basic;
@@ -441,8 +441,8 @@
     long len;
     VALUE *ptr;
 };
-#define RSTRUCT_LEN(st) (RSTRUCT(st)->len)
-#define RSTRUCT_PTR(st) (RSTRUCT(st)->ptr)
+#define RSTRUCT_LEN(st) (*(const long *)&RSTRUCT(st)->len)
+#define RSTRUCT_PTR(st) (*(VALUE *const *)&RSTRUCT(st)->ptr)
 
 struct RBignum {
     struct RBasic basic;
@@ -450,12 +450,12 @@
     long len;
     void *digits;
 };
-#define RBIGNUM_SIGN(b)       (RBIGNUM(b)->sign)
+#define RBIGNUM_SIGN(b)       (RBIGNUM(b)->sign != 0)
 #define RBIGNUM_SET_SIGN(b,s) (RBIGNUM(b)->sign = (s))
 #define RBIGNUM_POSITIVE_P(b) RBIGNUM_SIGN(b)
 #define RBIGNUM_NEGATIVE_P(b) (!RBIGNUM_SIGN(b))
-#define RBIGNUM_LEN(b)        (RBIGNUM(b)->len)
-#define RBIGNUM_DIGITS(b)     (RBIGNUM(b)->digits)
+#define RBIGNUM_LEN(b)        (*(const long *)&RBIGNUM(b)->len)
+#define RBIGNUM_DIGITS(b)     (*(VALUE *const *)&RBIGNUM(b)->digits)
 
 #define R_CAST(st)   (struct st*)
 #define RBASIC(obj)  (R_CAST(RBasic)(obj))

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]