Author: niallp
Date: Wed Sep 29 11:28:11 2010
New Revision: 1002582

URL: http://svn.apache.org/viewvc?rev=1002582&view=rev
Log:
IO-246 FilenameUtils - wildcardMatch gives incorrect results - thanks to wa

Modified:
    commons/proper/io/trunk/src/java/org/apache/commons/io/FilenameUtils.java
    
commons/proper/io/trunk/src/test/org/apache/commons/io/FilenameUtilsWildcardTestCase.java

Modified: 
commons/proper/io/trunk/src/java/org/apache/commons/io/FilenameUtils.java
URL: 
http://svn.apache.org/viewvc/commons/proper/io/trunk/src/java/org/apache/commons/io/FilenameUtils.java?rev=1002582&r1=1002581&r2=1002582&view=diff
==============================================================================
--- commons/proper/io/trunk/src/java/org/apache/commons/io/FilenameUtils.java 
(original)
+++ commons/proper/io/trunk/src/java/org/apache/commons/io/FilenameUtils.java 
Wed Sep 29 11:28:11 2010
@@ -1264,6 +1264,9 @@ public class FilenameUtils {
                 if (wcs[wcsIdx].equals("?")) {
                     // ? so move to next text char
                     textIdx++;
+                    if (textIdx > filename.length()) {
+                        break;
+                    }
                     anyChars = false;
                     
                 } else if (wcs[wcsIdx].equals("*")) {

Modified: 
commons/proper/io/trunk/src/test/org/apache/commons/io/FilenameUtilsWildcardTestCase.java
URL: 
http://svn.apache.org/viewvc/commons/proper/io/trunk/src/test/org/apache/commons/io/FilenameUtilsWildcardTestCase.java?rev=1002582&r1=1002581&r2=1002582&view=diff
==============================================================================
--- 
commons/proper/io/trunk/src/test/org/apache/commons/io/FilenameUtilsWildcardTestCase.java
 (original)
+++ 
commons/proper/io/trunk/src/test/org/apache/commons/io/FilenameUtilsWildcardTestCase.java
 Wed Sep 29 11:28:11 2010
@@ -182,6 +182,30 @@ public class FilenameUtilsWildcardTestCa
         assertMatch("log.log.abc.log.abc.d", "*log?abc?d", true);
     }
 
+    /**
+     * See https://issues.apache.org/jira/browse/IO-246
+     */
+    public void test_IO_246() {
+
+        // Tests for "*?"
+        assertMatch("aaa", "*?", false);
+
+        // Tests for "?*"
+        assertMatch("",    "?*",   false);
+        assertMatch("a",   "a?*",  false);
+        assertMatch("aa",  "aa?*", false);
+        assertMatch("a",   "?*",   true);
+        assertMatch("aa",  "?*",   true);
+        assertMatch("aaa", "?*",   true);
+
+        // Test ending on "?"
+        assertMatch("",    "?", false);
+        assertMatch("a",   "a?", false);
+        assertMatch("aa",  "aa?", false);
+        assertMatch("aab", "aa?", true);
+        assertMatch("aaa", "*a", true);
+    }
+
     public void testLocaleIndependence() {
         Locale orig = Locale.getDefault();
 


Reply via email to