You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by gi...@apache.org on 2006/06/23 13:26:21 UTC

svn commit: r416672 - /cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/util/WildcardMatcherHelper.java

Author: giacomo
Date: Fri Jun 23 04:26:10 2006
New Revision: 416672

URL: http://svn.apache.org/viewvc?rev=416672&view=rev
Log:
fixed an AOOBE

Modified:
    cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/util/WildcardMatcherHelper.java

Modified: cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/util/WildcardMatcherHelper.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/util/WildcardMatcherHelper.java?rev=416672&r1=416671&r2=416672&view=diff
==============================================================================
--- cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/util/WildcardMatcherHelper.java (original)
+++ cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/util/WildcardMatcherHelper.java Fri Jun 23 04:26:10 2006
@@ -218,8 +218,10 @@
                 if(ipat >= lpat) {
                     // if the remaining length of the string isn't the same as that found in the pattern 
                     // we do not match
-                    if(strncmp(apat, sipat, astr, lstr - (lpat - sipat), lpat - sipat)) {
-                        add(new String(astr, istr, lstr - (lpat - sipat) - istr));
+                    final int l = lpat - sipat; // calculate length of comparison
+                    final int ostr = lstr - l; // calculate offset into string
+                    if(ostr >= 0 && strncmp(apat, sipat, astr, ostr, l)) {
+                        add(new String(astr, istr, ostr - istr));
 
                         return true;
                     }
@@ -239,8 +241,7 @@
 
                 add(new String(astr, sistr, istr - sistr));
                 istr += l;
-            } else // if it is a single star pattern
-             {
+            } else {// if it is a single star pattern
                 // skip the star
                 ++ipat;
 
@@ -274,8 +275,10 @@
                 // if we reached the end of the pattern just do a String compare with the corresponding part from 
                 // the end of the string
                 if(ipat >= lpat) {
-                    if(strncmp(apat, sipat, astr, lstr - (ipat - sipat), ipat - sipat)) {
-                        add(new String(astr, istr, lstr - (ipat - sipat) - istr)); // TODO: this is wrong
+                    final int l = ipat - sipat; // calculate length of comparison
+                    final int ostr = lstr - l; // calculate offset into string
+                    if(ostr >= 0 && strncmp(apat, sipat, astr, ostr, l)) {
+                        add(new String(astr, istr, ostr - istr));
 
                         return true;
                     }
@@ -341,7 +344,7 @@
             }
             int i = 0;
 
-            for(i = 0; i < l && o1 + i < a1.length && o2 + i < a2.length && a1[o1 + i] == a2[o2 + i]; i++);
+            while(i < l && o1 + i < a1.length && o2 + i < a2.length && a1[o1 + i] == a2[o2 + i]) i++;
 
             return i == l;
         }