Maki sets the IsInvokedWhereICERequired property for macro invocations appearing in the initializer for global variables, or in array sizes inside of typedefs, as false, when it should set them to true.
For example, in the following code snippet:
#define SIZE 10
int size = SIZE;
typedef char small_string[SIZE];
Maki sets the IsInvokedWhereICERequired property for both invocations of SIZE to false, when it should be set to true since both these invocations appear where integral constant expressions are required.
Any fix to this problem must additionally account for the fact that static local variables also need to be initialized with constant expressions, e.g., in the following snippet:
int foo(void) {
static int bar = 0;
}
bar would need to be initialized with a integral constant expression.
Maki sets the
IsInvokedWhereICERequired
property for macro invocations appearing in the initializer for global variables, or in array sizes inside of typedefs, asfalse
, when it should set them totrue
.For example, in the following code snippet:
Maki sets the
IsInvokedWhereICERequired
property for both invocations ofSIZE
tofalse
, when it should be set totrue
since both these invocations appear where integral constant expressions are required.Any fix to this problem must additionally account for the fact that static local variables also need to be initialized with constant expressions, e.g., in the following snippet:
bar
would need to be initialized with a integral constant expression.