diff --git a/share/analysis-scripts/function_finder.py b/share/analysis-scripts/function_finder.py
index ab04c68afa9f1e62d320ae1d9915c1be623b05eb..7aef53cef0644df796ea85810fb9545c8de7c849 100755
--- a/share/analysis-scripts/function_finder.py
+++ b/share/analysis-scripts/function_finder.py
@@ -112,6 +112,13 @@ def compute_closing_braces(file_lines):
         # note: lines contain '\n', so they are never empty
         if line[0] == '}':
             braces.append(i)
+    # Special heuristics: if the last line contains whitespace + '}',
+    # assume it closes a function.
+    last_line_number = len(file_lines)+1
+    if file_lines != [] and not (last_line_number in braces):
+        last_line = file_lines[-1].lstrip()
+        if len(last_line) >= 1 and last_line[0] == '}':
+            braces.append(last_line_number)
     return braces
 
 # Returns the first element of [line_numbers] greater than [n], or [None]
@@ -120,11 +127,11 @@ def compute_closing_braces(file_lines):
 #
 # [line_numbers] must be sorted in ascending order.
 def get_first_line_after(line_numbers, n):
-    #for line in line_numbers:
-    #    if line > n:
-    #        return line
-    #assert False
-    return line_numbers[bisect.bisect_left(line_numbers, n)]
+    try:
+        return line_numbers[bisect.bisect_left(line_numbers, n)]
+    except IndexError:
+        # could not find line (e.g. for closing braces); return None
+        return None
 
 # Returns a list of tuples (fname, is_def, line_start, line_end, terminator_offset)
 # for each function definition or declaration.