diff options
author | Ben Pfaff <blp@nicira.com> | 2011-10-04 09:26:14 -0700 |
---|---|---|
committer | Ben Pfaff <blp@nicira.com> | 2011-10-04 09:26:14 -0700 |
commit | f937ccc2321d9bcb946fca249ec718531553a9bc (patch) | |
tree | 503845ac635fcca87dbcf0cf72468f6f5a5c4bd4 /build-aux/check-structs | |
parent | 3021ea6074bcc5a5bc7f1434ade97d84759e8d14 (diff) | |
download | openvswitch-f937ccc2321d9bcb946fca249ec718531553a9bc.tar.gz |
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.
Diffstat (limited to 'build-aux/check-structs')
-rwxr-xr-x | build-aux/check-structs | 7 |
1 files changed, 6 insertions, 1 deletions
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('=') |