util: Fix state leakage in the SortIncludes style verifier
authorAndreas Sandberg <Andreas.Sandberg@ARM.com>
Wed, 13 Aug 2014 10:57:25 +0000 (06:57 -0400)
committerAndreas Sandberg <Andreas.Sandberg@ARM.com>
Wed, 13 Aug 2014 10:57:25 +0000 (06:57 -0400)
There are cases where the state of a SortIncludes object gets messed
up and leaks between invocations/files. This typically happens when a
file ends with an include block (dump_block() gets called at the end
of __call__). In this case, the state of the class is not reset
between files. This bug manifests itself as ghost includes that leak
between files when applying the style hooks.

This changeset adds a reset at the beginning of the __call__ method
which ensures that the class is always in a clean state when
processing a new file.

util/sort_includes.py

index 15d1f2788c374e5540c834ad62fd5cbf06bce679..41f57e2ead4821d9236797bb476ccf41116f05a4 100644 (file)
@@ -72,7 +72,7 @@ class SortIncludes(object):
     includes_re = tuple((a, b, re.compile(c)) for a,b,c in includes_re)
 
     def __init__(self):
-        self.reset()
+        pass
 
     def reset(self):
         # clear all stored headers
@@ -103,6 +103,7 @@ class SortIncludes(object):
                 prev = l
 
     def __call__(self, lines, filename, language):
+        self.reset()
         leading_blank = False
         blanks = 0
         block = False