Use RB_SPECIAL_CONST_P instead of rb_special_const_p

rb_special_const_p returns a VALUE (Qtrue or Qfalse), so we shouldn't
assume that Qfalse is 0. We should instead use RB_SPECIAL_CONST_P.
This commit is contained in:
Peter Zhu 2024-02-27 15:09:18 -05:00
parent 95e55e9ae4
commit e8e2415bb3
3 changed files with 3 additions and 3 deletions

2
gc.c
View File

@ -4398,7 +4398,7 @@ is_live_object(rb_objspace_t *objspace, VALUE ptr)
static inline int static inline int
is_markable_object(VALUE obj) is_markable_object(VALUE obj)
{ {
if (rb_special_const_p(obj)) return FALSE; /* special const is not markable */ if (RB_SPECIAL_CONST_P(obj)) return FALSE; /* special const is not markable */
check_rvalue_consistency(obj); check_rvalue_consistency(obj);
return TRUE; return TRUE;
} }

View File

@ -1889,7 +1889,7 @@ r_object_for(struct load_arg *arg, bool partial, int *ivp, VALUE extmod, int typ
goto type_hash; goto type_hash;
} }
v = r_object_for(arg, partial, 0, extmod, type); v = r_object_for(arg, partial, 0, extmod, type);
if (rb_special_const_p(v) || RB_TYPE_P(v, T_OBJECT) || RB_TYPE_P(v, T_CLASS)) { if (RB_SPECIAL_CONST_P(v) || RB_TYPE_P(v, T_OBJECT) || RB_TYPE_P(v, T_CLASS)) {
goto format_error; goto format_error;
} }
if (RB_TYPE_P(v, T_MODULE) || !RTEST(rb_class_inherited_p(c, RBASIC(v)->klass))) { if (RB_TYPE_P(v, T_MODULE) || !RTEST(rb_class_inherited_p(c, RBASIC(v)->klass))) {

2
vm.c
View File

@ -2922,7 +2922,7 @@ rb_vm_each_stack_value(void *ptr, void (*cb)(VALUE, void*), void *ctx)
VALUE *p = ec->vm_stack; VALUE *p = ec->vm_stack;
VALUE *sp = ec->cfp->sp; VALUE *sp = ec->cfp->sp;
while (p < sp) { while (p < sp) {
if (!rb_special_const_p(*p)) { if (!RB_SPECIAL_CONST_P(*p)) {
cb(*p, ctx); cb(*p, ctx);
} }
p++; p++;