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:
Kazuhiro NISHIYAMA 2019-05-29 13:12:15 +09:00
Родитель e04d10b28f
Коммит aee36bf149
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 262ED8DBB4222F7A
2 изменённых файлов: 10 добавлений и 6 удалений

Просмотреть файл

@ -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
Просмотреть файл

@ -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;
}