From f937ccc2321d9bcb946fca249ec718531553a9bc Mon Sep 17 00:00:00 2001 From: Ben Pfaff Date: Tue, 4 Oct 2011 09:26:14 -0700 Subject: check-structs: Add check that OFP_ASSERT is checking the right structures. This avoids a fairly common issue in which a developer cuts and pastes a structure definition and forgets to update the structure name inside the OFP_ASSERT, so that the new structure's size doesn't really get checked at all. --- build-aux/check-structs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'build-aux/check-structs') diff --git a/build-aux/check-structs b/build-aux/check-structs index 152c6a214..0849fcf14 100755 --- a/build-aux/check-structs +++ b/build-aux/check-structs @@ -187,6 +187,7 @@ def parseStruct(): warn("%s needs %d bytes of tail padding" % (structName, shortage)) size += shortage types[structName] = {"size": size, "alignment": alignment} + return structName def checkStructs(): if len(sys.argv) < 2: @@ -223,6 +224,7 @@ header files without extensions.''' % {"argv0": argv0} global lineNumber inputFile = open(fileName) lineNumber = 0 + lastStruct = None while getToken(): if token in ("#ifdef", "#ifndef", "#include", "#endif", "#elif", "#else"): @@ -243,12 +245,15 @@ header files without extensions.''' % {"argv0": argv0} while token != ';': getToken() elif token in ('struct', 'union'): - parseStruct() + lastStruct = parseStruct() elif match('OFP_ASSERT') or match('BOOST_STATIC_ASSERT'): forceMatch('(') forceMatch('sizeof') forceMatch('(') typeName = parseTypeName() + if typeName != lastStruct: + warn("checking size of %s but %s was most recently defined" + % (typeName, lastStruct)) forceMatch(')') forceMatch('=') forceMatch('=') -- cgit v1.2.1