summaryrefslogtreecommitdiff
path: root/class.c
diff options
context:
space:
mode:
authorNobuyoshi Nakada <nobu@ruby-lang.org>2021-08-20 14:03:08 +0900
committerNobuyoshi Nakada <nobu@ruby-lang.org>2021-08-20 14:04:07 +0900
commitb32987a3d783d6c7a5dec9a9a9c3550ca7c549d0 (patch)
tree2cb0633b5486e1c48aad2cc2ef0bf576f2fc787c /class.c
parent754adbee91c2d4a4e84e9271724ca33f630d1916 (diff)
downloadruby-b32987a3d783d6c7a5dec9a9a9c3550ca7c549d0.tar.gz
Simplify repeated member access macros
Diffstat (limited to 'class.c')
-rw-r--r--class.c28
1 files changed, 14 insertions, 14 deletions
diff --git a/class.c b/class.c
index 9e5cf5416f..5fa51df3fa 100644
--- a/class.c
+++ b/class.c
@@ -89,14 +89,14 @@ rb_module_add_to_subclasses_list(VALUE module, VALUE iclass)
void
rb_class_remove_from_super_subclasses(VALUE klass)
{
- rb_subclass_entry_t *entry;
+ rb_subclass_entry_t **prev = RCLASS_PARENT_SUBCLASSES(klass);
- if (RCLASS_PARENT_SUBCLASSES(klass)) {
- entry = *RCLASS_PARENT_SUBCLASSES(klass);
+ if (prev) {
+ rb_subclass_entry_t *entry = *prev, *next = entry->next;
- *RCLASS_PARENT_SUBCLASSES(klass) = entry->next;
- if (entry->next) {
- RCLASS_PARENT_SUBCLASSES(entry->next->klass) = RCLASS_PARENT_SUBCLASSES(klass);
+ *prev = next;
+ if (next) {
+ RCLASS_PARENT_SUBCLASSES(next->klass) = prev;
}
xfree(entry);
}
@@ -107,14 +107,14 @@ rb_class_remove_from_super_subclasses(VALUE klass)
void
rb_class_remove_from_module_subclasses(VALUE klass)
{
- rb_subclass_entry_t *entry;
+ rb_subclass_entry_t **prev = RCLASS_MODULE_SUBCLASSES(klass);
- if (RCLASS_MODULE_SUBCLASSES(klass)) {
- entry = *RCLASS_MODULE_SUBCLASSES(klass);
- *RCLASS_MODULE_SUBCLASSES(klass) = entry->next;
+ if (prev) {
+ rb_subclass_entry_t *entry = *prev, *next = entry->next;
- if (entry->next) {
- RCLASS_MODULE_SUBCLASSES(entry->next->klass) = RCLASS_MODULE_SUBCLASSES(klass);
+ *prev = next;
+ if (next) {
+ RCLASS_MODULE_SUBCLASSES(next->klass) = prev;
}
xfree(entry);
@@ -1124,10 +1124,10 @@ do_include_modules_at(const VALUE klass, VALUE c, VALUE module, int search_super
add_subclass = FALSE;
}
- {
+ if (add_subclass) {
VALUE m = module;
if (BUILTIN_TYPE(m) == T_ICLASS) m = RBASIC(m)->klass;
- if (add_subclass) rb_module_add_to_subclasses_list(m, iclass);
+ rb_module_add_to_subclasses_list(m, iclass);
}
if (FL_TEST(klass, RMODULE_IS_REFINEMENT)) {