aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2015-06-18 08:01:13 +0000
committerko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2015-06-18 08:01:13 +0000
commitd07448253f61bfc4490822b5b1cdefa59dc3bb47 (patch)
treef2dfffee7626fbfd2c8f1e72f54d161342b534f8
parent46a01b392ebb573098a924e2ab0598a052392996 (diff)
downloadruby-d07448253f61bfc4490822b5b1cdefa59dc3bb47.tar.gz
* method.h: constify rb_method_alias_struct::original_me and
rb_method_refined_struct::orig_me. * class.c (move_refined_method): use RB_OBJ_WRITE() for me->def->body.refined.orig_me. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50948 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog8
-rw-r--r--class.c2
-rw-r--r--method.h4
3 files changed, 11 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 98dc8777b1..ae483a815f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+Thu Jun 18 16:58:35 2015 Koichi Sasada <ko1@atdot.net>
+
+ * method.h: constify rb_method_alias_struct::original_me and
+ rb_method_refined_struct::orig_me.
+
+ * class.c (move_refined_method): use RB_OBJ_WRITE() for
+ me->def->body.refined.orig_me.
+
Thu Jun 18 14:35:28 2015 Koichi Sasada <ko1@atdot.net>
* ext/objspace/objspace.c (count_imemo_objects): support imemo_ment.
diff --git a/class.c b/class.c
index b8b44c96f6..f963f0c22a 100644
--- a/class.c
+++ b/class.c
@@ -915,7 +915,7 @@ move_refined_method(st_data_t key, st_data_t value, st_data_t data)
if (me->def->type == VM_METHOD_TYPE_REFINED) {
if (me->def->body.refined.orig_me) {
const rb_method_entry_t *orig_me = me->def->body.refined.orig_me, *new_me;
- me->def->body.refined.orig_me = NULL;
+ RB_OBJ_WRITE(me, &me->def->body.refined.orig_me, NULL);
new_me = rb_method_entry_clone(me);
st_add_direct(tbl, key, (st_data_t) new_me);
rb_method_entry_copy(me, orig_me);
diff --git a/method.h b/method.h
index bd717eb3d1..4badd06db5 100644
--- a/method.h
+++ b/method.h
@@ -122,11 +122,11 @@ typedef struct rb_method_attr_struct {
} rb_method_attr_t;
typedef struct rb_method_alias_struct {
- const struct rb_method_entry_struct *original_me; /* original_me->klass is original owner */
+ const struct rb_method_entry_struct * const original_me; /* original_me->klass is original owner */
} rb_method_alias_t;
typedef struct rb_method_refined_struct {
- const struct rb_method_entry_struct *orig_me;
+ const struct rb_method_entry_struct * const orig_me;
} rb_method_refined_t;
typedef struct rb_method_definition_struct {