diff options
author | S-H-GAMELINKS <gamelinks007@gmail.com> | 2023-03-11 10:38:42 +0900 |
---|---|---|
committer | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2023-03-12 10:08:18 +0900 |
commit | 2d0dc376c426a8ea01d36ef2832355b6198e1465 (patch) | |
tree | 911cb8fcd4d469eae05c719460017b00a253edd0 /variable.c | |
parent | 94da5f7c360b64e12c55fa0be266d9f48e66e937 (diff) |
Reuse CVAR_LOOKUP macro
Notes
Notes:
Merged: https://github.com/ruby/ruby/pull/7503
Diffstat (limited to 'variable.c')
-rw-r--r-- | variable.c | 38 |
1 files changed, 14 insertions, 24 deletions
diff --git a/variable.c b/variable.c index c0b4625e2e..30b786335e 100644 --- a/variable.c +++ b/variable.c @@ -3624,30 +3624,6 @@ cvar_overtaken(VALUE front, VALUE target, ID id) } } -static VALUE -find_cvar(VALUE klass, VALUE * front, VALUE * target, ID id) -{ - VALUE v = Qundef; - CVAR_ACCESSOR_SHOULD_BE_MAIN_RACTOR(); - if (cvar_lookup_at(klass, id, (&v))) { - if (!*front) { - *front = klass; - } - *target = klass; - } - - for (klass = cvar_front_klass(klass); klass; klass = RCLASS_SUPER(klass)) { - if (cvar_lookup_at(klass, id, (&v))) { - if (!*front) { - *front = klass; - } - *target = klass; - } - } - - return v; -} - #define CVAR_FOREACH_ANCESTORS(klass, v, r) \ for (klass = cvar_front_klass(klass); klass; klass = RCLASS_SUPER(klass)) { \ if (cvar_lookup_at(klass, id, (v))) { \ @@ -3661,6 +3637,20 @@ find_cvar(VALUE klass, VALUE * front, VALUE * target, ID id) CVAR_FOREACH_ANCESTORS(klass, v, r);\ } while(0) +static VALUE +find_cvar(VALUE klass, VALUE * front, VALUE * target, ID id) +{ + VALUE v = Qundef; + CVAR_LOOKUP(&v, { + if (!*front) { + *front = klass; + } + *target = klass; + }); + + return v; +} + static void check_for_cvar_table(VALUE subclass, VALUE key) { |