diff --git a/addons/misra.py b/addons/misra.py index 6f38ec069..f6e0698df 100755 --- a/addons/misra.py +++ b/addons/misra.py @@ -647,7 +647,8 @@ def get_function_pointer_type(tok): ret += '(' tok = tok.next.next while tok and (tok.str not in '()'): - ret += ' ' + tok.str + if tok.varId is None: + ret += ' ' + tok.str tok = tok.next if (tok is None) or tok.str != ')': return None diff --git a/addons/test/misra/misra-test.c b/addons/test/misra/misra-test.c index 790c7a0da..14eddd860 100644 --- a/addons/test/misra/misra-test.c +++ b/addons/test/misra/misra-test.c @@ -779,6 +779,13 @@ static void misra_10_8(u8 x, s32 a, s32 b) { int (*misra_11_1_p)(void); // 8.4 void *misra_11_1_bad1 = (void*)misra_11_1_p; // 11.1 8.4 +// #12172 +typedef void (*pfFunc_11_1)(uint32_t some); +extern pfFunc_11_1 data_11_1[10]; +void func_11_1(pfFunc_11_1 ptr){ //8.4 + data_11_1[index] = ptr; // no-warning +} + struct misra_11_2_s; struct misra_11_2_t;