From 3d88105e4e601bc8c4b275906809045dd787df09 Mon Sep 17 00:00:00 2001 From: swasti16 Date: Wed, 7 Feb 2024 01:03:34 +0530 Subject: [PATCH] Rule 9.3: Allow only { 0 } form of initializer --- addons/misra_9.py | 2 +- addons/test/misra/misra-test.c | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/addons/misra_9.py b/addons/misra_9.py index ae46e1f17aa3..4035cf0b2bfe 100644 --- a/addons/misra_9.py +++ b/addons/misra_9.py @@ -311,7 +311,7 @@ def parseInitializer(self, root, token): if self.ed and self.ed.isValue: if not isDesignated and len(self.rootStack) > 0 and self.rootStack[-1][1] == self.root: self.rootStack[-1][0].markStuctureViolation(self.token) - if isFirstElement and self.token.isInt and self.token.getKnownIntValue() == 0 and self.token.next.str == '}': + if isFirstElement and self.token.str == '0' and self.token.next.str == '}': # Zero initializer causes recursive initialization self.root.initializeChildren() elif self.token.isString and self.ed.valueType and self.ed.valueType.pointer > 0: diff --git a/addons/test/misra/misra-test.c b/addons/test/misra/misra-test.c index da9243cf0b7c..cb2b03bbd86e 100644 --- a/addons/test/misra/misra-test.c +++ b/addons/test/misra/misra-test.c @@ -441,7 +441,10 @@ static void misra_9_empty_or_zero_initializers(void) { int e[2][2] = { { 1 , 2 }, {} }; // 9.2 int f[5] = { 0 }; - int f1[5] = { 0u }; // no-warning #11298 + int f1[5] = { 0u }; // 9.3 + unsigned int f1[ 3 ][ 2 ] = { 0U }; // 9.3 + unsigned int f2[ 3 ] = { 0U }; // 9.3 + float f3[ 3 ][ 2 ] = { 0.0F }; // 9.3 int g[5][2] = { 0 }; int h[2][2] = { { 0 } }; // 9.3 int i[2][2] = { { 0 }, { 0 } };