diff options
Diffstat (limited to 'org.eclipse.cdt.codan.extension/src/org/eclipse/cdt/codan/extension/checkers/CloseOpenedFilesChecker.java')
-rw-r--r-- | org.eclipse.cdt.codan.extension/src/org/eclipse/cdt/codan/extension/checkers/CloseOpenedFilesChecker.java | 19 |
1 files changed, 7 insertions, 12 deletions
diff --git a/org.eclipse.cdt.codan.extension/src/org/eclipse/cdt/codan/extension/checkers/CloseOpenedFilesChecker.java b/org.eclipse.cdt.codan.extension/src/org/eclipse/cdt/codan/extension/checkers/CloseOpenedFilesChecker.java index a38ef13..5ea8e79 100644 --- a/org.eclipse.cdt.codan.extension/src/org/eclipse/cdt/codan/extension/checkers/CloseOpenedFilesChecker.java +++ b/org.eclipse.cdt.codan.extension/src/org/eclipse/cdt/codan/extension/checkers/CloseOpenedFilesChecker.java @@ -183,8 +183,10 @@ public class CloseOpenedFilesChecker extends AbstractIndexAstChecker { private Set<SymbolicState> flowMerge(IBlock blk, Set<SymbolicState> ss1, Set<SymbolicState> ss2) { - ss1.addAll(ss2); - return group(ss1); + Set<SymbolicState> ret = new HashSet<SymbolicState>(); + ret.addAll(ss1); + ret.addAll(ss2); + return group(ret); } private Set<SymbolicState> flowBranch(IBlock blk, Set<SymbolicState> ss, boolean value) { @@ -328,12 +330,7 @@ public class CloseOpenedFilesChecker extends AbstractIndexAstChecker { Set<SymbolicState> ss) { if (!edgeInfo.get(edge).equals(ss)) { edgeInfo.put(edge, ss); - - // No duplicates - IBlock next = edge.getTo(); - if (!worklist.contains(next)) { - worklist.add(next); - } + worklist.add(edge.getTo()); } } @@ -378,14 +375,12 @@ public class CloseOpenedFilesChecker extends AbstractIndexAstChecker { } protected boolean containsOpen(IASTNode node) { - // TODO Examine more than just name - FunctionNameParser parser = new FunctionNameParser(node, OPEN); + FunctionNameParser parser = new FunctionNameParser(node, OPEN, new String[] { "const char *", "int" }); return parser.matches(); } protected boolean containsClose(IASTNode node) { - // TODO Examine more than just name - FunctionNameParser parser = new FunctionNameParser(node, CLOSE); + FunctionNameParser parser = new FunctionNameParser(node, CLOSE, new String[] { "int" }); return parser.matches(); } |