diff options
author | Ivan Maidanski <ivmai@mail.ru> | 2019-09-10 23:35:14 +0300 |
---|---|---|
committer | Ivan Maidanski <ivmai@mail.ru> | 2019-09-10 23:35:43 +0300 |
commit | fe3a50824e878995999462843aff679d52e9f61b (patch) | |
tree | adb6551851b2cfd519038c8c0a8a05b07ad0d5a6 /mark.c | |
parent | cc91e8234f69126482ebdafc78de64705b06c5fc (diff) | |
download | bdwgc-fe3a50824e878995999462843aff679d52e9f61b.tar.gz |
Workaround 'redundant initialization for r' cppcheck false positive
* mark.c (GC_mark_and_push_stack): Replace "if(a&&b)" with
"if(a) if(b)" where b is an expression which contains r variable
assignment.
Diffstat (limited to 'mark.c')
-rw-r--r-- | mark.c | 7 |
1 files changed, 4 insertions, 3 deletions
@@ -1483,12 +1483,13 @@ GC_API struct GC_ms_entry * GC_CALL GC_mark_and_push(void *obj, PREFETCH(p); GET_HDR(p, hhdr); - if (EXPECT(IS_FORWARDING_ADDR_OR_NIL(hhdr), FALSE) - && (NULL == hhdr + if (EXPECT(IS_FORWARDING_ADDR_OR_NIL(hhdr), FALSE)) { + if (NULL == hhdr || (r = (ptr_t)GC_base(p)) == NULL - || (hhdr = HDR(r)) == NULL)) { + || (hhdr = HDR(r)) == NULL) { GC_ADD_TO_BLACK_LIST_STACK(p, source); return; + } } if (EXPECT(HBLK_IS_FREE(hhdr), FALSE)) { GC_ADD_TO_BLACK_LIST_NORMAL(p, source); |