diff --git a/addons/misra.py b/addons/misra.py index a0aba8aa4..b963a70b7 100755 --- a/addons/misra.py +++ b/addons/misra.py @@ -1674,6 +1674,9 @@ class MisraChecker: if token.astParent.str in ('(', '{'): end_token = token.astParent.link if end_token: + # Don't add function called inside function arguments + if token.astParent.previous and token.astParent.previous.isName: + continue end_tokens_map[end_token.linenr].add(end_token.column) continue elif token.astParent.str == ',': diff --git a/addons/test/misra/misra-test.c b/addons/test/misra/misra-test.c index 8579318f8..55b9d4620 100644 --- a/addons/test/misra/misra-test.c +++ b/addons/test/misra/misra-test.c @@ -459,6 +459,8 @@ void misra_12_3(int a, int b, int c) { // no warning misra_12_3_fn4(misra_12_3_fn7(&a1, 32), &a1); misra_12_3_fn6(misra_12_3_fn5(&a1, 32), &a1); misra_12_3_fn6(misra_12_3_fn7(&a1, 32), &a1); + misra_12_3_fn7(maxlen, fn(va, unsigned long), false); + misra_12_3_fn8(maxlen, (unsigned long)((uintptr_t)fn(va, void*)), false); const struct fun_t {