зеркало из https://github.com/github/ruby.git
Fix Possible Control flow issues (DEADCODE)
Coverity Scan says `Execution cannot reach this statement: "poison_object(v);"`, so do nothing when `ptr` is always 0 without address_sanitizer.
This commit is contained in:
Родитель
e04d10b28f
Коммит
aee36bf149
|
@ -155,6 +155,14 @@ asan_poison_object(VALUE obj)
|
|||
asan_poison_memory_region(ptr, SIZEOF_VALUE);
|
||||
}
|
||||
|
||||
#if !__has_feature(address_sanitizer)
|
||||
#define asan_poison_object_if(ptr, obj) ((void)(ptr), (void)(obj))
|
||||
#else
|
||||
#define asan_poison_object_if(ptr, obj) do { \
|
||||
if (ptr) asan_poison_object(obj); \
|
||||
} while (0)
|
||||
#endif
|
||||
|
||||
/*!
|
||||
* This function predicates if the given object is fully addressable or not.
|
||||
*
|
||||
|
|
8
iseq.c
8
iseq.c
|
@ -1087,9 +1087,7 @@ remove_coverage_i(void *vstart, void *vend, size_t stride, void *data)
|
|||
ISEQ_COVERAGE_SET(iseq, Qnil);
|
||||
}
|
||||
|
||||
if (ptr) {
|
||||
asan_poison_object(v);
|
||||
}
|
||||
asan_poison_object_if(ptr, v);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
@ -3239,9 +3237,7 @@ trace_set_i(void *vstart, void *vend, size_t stride, void *data)
|
|||
rb_iseq_trace_set(rb_iseq_check((rb_iseq_t *)v), turnon_events);
|
||||
}
|
||||
|
||||
if (ptr) {
|
||||
asan_poison_object(v);
|
||||
}
|
||||
asan_poison_object_if(ptr, v);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче