summaryrefslogtreecommitdiff
path: root/mark.c
diff options
context:
space:
mode:
authorIvan Maidanski <ivmai@mail.ru>2019-09-10 23:35:14 +0300
committerIvan Maidanski <ivmai@mail.ru>2019-09-10 23:35:43 +0300
commitfe3a50824e878995999462843aff679d52e9f61b (patch)
treeadb6551851b2cfd519038c8c0a8a05b07ad0d5a6 /mark.c
parentcc91e8234f69126482ebdafc78de64705b06c5fc (diff)
downloadbdwgc-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.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/mark.c b/mark.c
index 4d702a93..0a1d1394 100644
--- a/mark.c
+++ b/mark.c
@@ -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);