Skip to content

Commit

Permalink
Fixes #115: close class file stream when locating bridge methods.
Browse files Browse the repository at this point in the history
  • Loading branch information
raphw committed Dec 5, 2017
1 parent cba70ba commit 3719976
Showing 1 changed file with 16 additions and 7 deletions.
23 changes: 16 additions & 7 deletions cglib/src/main/java/net/sf/cglib/proxy/BridgeMethodResolver.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
package net.sf.cglib.proxy;

import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
Expand Down Expand Up @@ -56,14 +57,22 @@ public BridgeMethodResolver(Map declToBridge, ClassLoader classLoader) {
public Map/*<Signature, Signature>*/resolveAll() {
Map resolved = new HashMap();
for (Iterator entryIter = declToBridge.entrySet().iterator(); entryIter.hasNext(); ) {
Map.Entry entry = (Map.Entry)entryIter.next();
Class owner = (Class)entry.getKey();
Set bridges = (Set)entry.getValue();
Map.Entry entry = (Map.Entry) entryIter.next();
Class owner = (Class) entry.getKey();
Set bridges = (Set) entry.getValue();
try {
new ClassReader(classLoader.getResourceAsStream(owner.getName().replace('.', '/') + ".class"))
.accept(new BridgedFinder(bridges, resolved),
ClassReader.SKIP_FRAMES | ClassReader.SKIP_DEBUG);
} catch(IOException ignored) {}
InputStream is = classLoader.getResourceAsStream(owner.getName().replace('.', '/') + ".class");
if (is == null) {
return resolved;
}
try {
new ClassReader(is)
.accept(new BridgedFinder(bridges, resolved),
ClassReader.SKIP_FRAMES | ClassReader.SKIP_DEBUG);
} finally {
is.close();
}
} catch (IOException ignored) {}
}
return resolved;
}
Expand Down

0 comments on commit 3719976

Please sign in to comment.