Author: jochen
Date: Wed Sep 14 12:14:26 2016
New Revision: 1760691

URL: http://svn.apache.org/viewvc?rev=1760691&view=rev
Log:
PR: CODEC-225

Fix minor resource leaks. GitHub PR

Modified:
    commons/proper/codec/trunk/src/changes/changes.xml
    
commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/DaitchMokotoffSoundex.java
    
commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/Rule.java

Modified: commons/proper/codec/trunk/src/changes/changes.xml
URL: 
http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/changes/changes.xml?rev=1760691&r1=1760690&r2=1760691&view=diff
==============================================================================
--- commons/proper/codec/trunk/src/changes/changes.xml (original)
+++ commons/proper/codec/trunk/src/changes/changes.xml Wed Sep 14 12:14:26 2016
@@ -45,6 +45,7 @@ The <action> type attribute can be add,u
     <release version="1.11" date="2016-MM-DD" description="Feature and fix 
release.">
       <!-- The first attribute below should be the issue id; makes it easier 
to navigate in the IDE outline -->
 
+         <action issue="CODEC-225" dev="jochen" type="fix" due-to="Svetlin 
Zarev">Fix minor resource leaks</action>
       <action issue="CODEC-223" dev="sebb" type="remove">Drop obsolete Ant 
build</action>
       <action issue="CODEC-171" dev="sebb" type="add" due-to="Brett Okken">Add 
support for CRC32-C</action>
       <action issue="CODEC-221" dev="sebb" type="update">HmacUtils.updateHmac 
calls reset() unnecessarily</action>

Modified: 
commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/DaitchMokotoffSoundex.java
URL: 
http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/DaitchMokotoffSoundex.java?rev=1760691&r1=1760690&r2=1760691&view=diff
==============================================================================
--- 
commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/DaitchMokotoffSoundex.java
 (original)
+++ 
commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/DaitchMokotoffSoundex.java
 Wed Sep 14 12:14:26 2016
@@ -232,8 +232,11 @@ public class DaitchMokotoffSoundex imple
         }
 
         final Scanner scanner = new Scanner(rulesIS, CharEncoding.UTF_8);
-        parseRules(scanner, RESOURCE_FILE, RULES, FOLDINGS);
-        scanner.close();
+        try {
+            parseRules(scanner, RESOURCE_FILE, RULES, FOLDINGS);
+        } finally {
+            scanner.close();
+        }
 
         // sort RULES by pattern length in descending order
         for (final Map.Entry<Character, List<Rule>> rule : RULES.entrySet()) {

Modified: 
commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/Rule.java
URL: 
http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/Rule.java?rev=1760691&r1=1760690&r2=1760691&view=diff
==============================================================================
--- 
commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/Rule.java
 (original)
+++ 
commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/Rule.java
 Wed Sep 14 12:14:26 2016
@@ -219,14 +219,22 @@ public class Rule {
 
                 final Languages ls = Languages.getInstance(s);
                 for (final String l : ls.getLanguages()) {
+                    final Scanner scanner = createScanner(s, rt, l);
                     try {
-                        rs.put(l, parseRules(createScanner(s, rt, l), 
createResourceName(s, rt, l)));
+                        rs.put(l, parseRules(scanner, createResourceName(s, 
rt, l)));
                     } catch (final IllegalStateException e) {
                         throw new IllegalStateException("Problem processing " 
+ createResourceName(s, rt, l), e);
+                    } finally {
+                        scanner.close();
                     }
                 }
                 if (!rt.equals(RuleType.RULES)) {
-                    rs.put("common", parseRules(createScanner(s, rt, 
"common"), createResourceName(s, rt, "common")));
+                    final Scanner scanner = createScanner(s, rt, "common");
+                    try {
+                        rs.put("common", parseRules(scanner, 
createResourceName(s, rt, "common")));
+                    } finally {
+                        scanner.close();
+                    }
                 }
 
                 rts.put(rt, Collections.unmodifiableMap(rs));
@@ -435,7 +443,12 @@ public class Rule {
                             throw new IllegalArgumentException("Malformed 
import statement '" + rawLine + "' in " +
                                                                location);
                         }
-                        lines.putAll(parseRules(createScanner(incl), location 
+ "->" + incl));
+                        final Scanner hashIncludeScanner = createScanner(incl);
+                        try {
+                            lines.putAll(parseRules(hashIncludeScanner, 
location + "->" + incl));
+                        } finally {
+                            hashIncludeScanner.close();
+                        }
                     } else {
                         // rule
                         final String[] parts = line.split("\\s+");


Reply via email to