Skip to content

Commit 13b2cab

Browse files
fixup! fixup! fixup! fixup! fixup! fixup! fixup! fixup! Fix #11311 Do not search for null pointer in dead code
1 parent e49fc5d commit 13b2cab

File tree

1 file changed

+9
-13
lines changed

1 file changed

+9
-13
lines changed

lib/checknullpointer.cpp

+9-13
Original file line numberDiff line numberDiff line change
@@ -346,7 +346,7 @@ const Token * CheckNullPointer::nullPointerByDeRefAndCheck(const Token *start, c
346346
/* Garbage code */
347347
return end;
348348
}
349-
tok = tok->next()->linkAt(3); /* Skip condition */
349+
tok = tok->linkAt(4); /* Skip condition */
350350
if (!tok || !tok->next() || !tok->next()->link()) {
351351
/* Garbage code */
352352
return end;
@@ -368,25 +368,21 @@ const Token * CheckNullPointer::nullPointerByDeRefAndCheck(const Token *start, c
368368
}
369369
const Token *condTok = ifTok->next()->astOperand2();
370370
const Token *condStartTok = ifTok->next();
371-
const Token *condEndTok = ifTok->next()->link();
371+
const Token *condEndTok = condStartTok->link();
372372
if (!Token::simpleMatch(condStartTok, "(") || !Token::simpleMatch(condEndTok, ")")) {
373373
/* Garbage code */
374374
return end;
375375
}
376376
tok = nullPointerByDeRefAndCheck(condStartTok, condEndTok, printInconclusive);
377-
if (!tok || !tok->next() || !tok->next()->link()) {
377+
if (!tok || !tok->next() || !tok->linkAt(1)) {
378378
/* Garbage code */
379379
return end;
380380
}
381381

382382
prevBranchTaken = prevBranchTaken || (condTok->hasKnownIntValue() && condTok->getKnownIntValue());
383383
if (condTok->hasKnownIntValue() && condTok->getKnownIntValue() == 0) {
384-
if (!tok->next()->link()) {
385-
/* Garbage code */
386-
return end;
387-
}
388384
/* Skip body */
389-
tok = tok->next()->link();
385+
tok = tok->linkAt(1);
390386
} else {
391387
/* Analyze body */
392388
const Token *elseIfBodyStartTok = tok->next();
@@ -401,16 +397,16 @@ const Token * CheckNullPointer::nullPointerByDeRefAndCheck(const Token *start, c
401397
/* Garbage code */
402398
return end;
403399
}
404-
} while (Token::simpleMatch(tok->next(), "else { if (") && Token::simpleMatch(tok->next()->linkAt(3), ") {"));
400+
} while (Token::simpleMatch(tok->next(), "else { if (") && Token::simpleMatch(tok->linkAt(4), ") {"));
405401

406402
/* Handle final else branch */
407403
if (prevBranchTaken && Token::simpleMatch(tok->next(), "else")) {
408404
/* Skip body */
409-
if (!tok->next() || !tok->next()->next() || !tok->next()->next()->link()) {
405+
if (!tok->next() || !tok->next()->next() || !tok->linkAt(2)) {
410406
/* Garbage code */
411407
return end;
412408
}
413-
tok = tok->next()->next()->link();
409+
tok = tok->linkAt(2);
414410
}
415411
} else if (Token::simpleMatch(tok, "?") && Token::simpleMatch(tok->astOperand2(), ":")) { // ternary operator
416412
const Token *condTok = tok->astOperand1();
@@ -421,12 +417,12 @@ const Token * CheckNullPointer::nullPointerByDeRefAndCheck(const Token *start, c
421417
}
422418
} else {
423419
if (isUnevaluated(tok)) {
424-
if (!tok->next() || !tok->next()->link()) {
420+
if (!tok->next() || !tok->linkAt(1)) {
425421
/* Garbage code */
426422
return end;
427423
}
428424

429-
tok = tok->next()->link();
425+
tok = tok->linkAt(1);
430426
} else {
431427
nullPointerByDeRefAndCheckToken(tok, printInconclusive);
432428
}

0 commit comments

Comments
 (0)