summaryrefslogtreecommitdiffstats
path: root/org.eclipse.cdt.codan.extension/src/org/eclipse/cdt/codan/extension/checkers/CloseOpenedFilesChecker.java
diff options
context:
space:
mode:
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.java19
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();
}