jakarta-regexp-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From vgritse...@apache.org
Subject svn commit: r517970 - in /jakarta/regexp/trunk: docs/changes.html src/java/org/apache/regexp/RE.java src/java/org/apache/regexp/RETest.java xdocs/changes.xml
Date Wed, 14 Mar 2007 01:41:39 GMT
Author: vgritsenko
Date: Tue Mar 13 18:41:38 2007
New Revision: 517970

URL: http://svn.apache.org/viewvc?view=rev&rev=517970
Log:
fix bug 36405

Modified:
    jakarta/regexp/trunk/docs/changes.html
    jakarta/regexp/trunk/src/java/org/apache/regexp/RE.java
    jakarta/regexp/trunk/src/java/org/apache/regexp/RETest.java
    jakarta/regexp/trunk/xdocs/changes.xml

Modified: jakarta/regexp/trunk/docs/changes.html
URL: http://svn.apache.org/viewvc/jakarta/regexp/trunk/docs/changes.html?view=diff&rev=517970&r1=517969&r2=517970
==============================================================================
--- jakarta/regexp/trunk/docs/changes.html (original)
+++ jakarta/regexp/trunk/docs/changes.html Tue Mar 13 18:41:38 2007
@@ -91,6 +91,9 @@
 
 <h3>Version 1.5-dev</h3>
 <ul>
+<li>Fixed Bug
+    <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=36405">36405</a>:
+    Referencing an optional backreference returns null (VG)</li>
 <li>Implemented optimization: RE compiler omits branch instruction if only one
     branch is present (VG)</li>
 <li>Fixed Bug

Modified: jakarta/regexp/trunk/src/java/org/apache/regexp/RE.java
URL: http://svn.apache.org/viewvc/jakarta/regexp/trunk/src/java/org/apache/regexp/RE.java?view=diff&rev=517970&r1=517969&r2=517970
==============================================================================
--- jakarta/regexp/trunk/src/java/org/apache/regexp/RE.java (original)
+++ jakarta/regexp/trunk/src/java/org/apache/regexp/RE.java Tue Mar 13 18:41:38 2007
@@ -1674,33 +1674,23 @@
                 int lCurrentPosition = 0;
                 int lLastPosition = -2;
                 int lLength = substitution.length();
-                boolean bAddedPrefix = false;
 
                 while ((lCurrentPosition = substitution.indexOf("$", lCurrentPosition)) >=
0)
                 {
                     if ((lCurrentPosition == 0 || substitution.charAt(lCurrentPosition -
1) != '\\')
-                        && lCurrentPosition+1 < lLength)
+                        && lCurrentPosition + 1 < lLength)
                     {
                         char c = substitution.charAt(lCurrentPosition + 1);
                         if (c >= '0' && c <= '9')
                         {
-                            if (!bAddedPrefix)
-                            {
-                                // Append everything between the beginning of the
-                                // substitution string and the current $ sign
-                                ret.append(substitution.substring(0, lCurrentPosition));
-                                bAddedPrefix = true;
-                            }
-                            else
-                            {
-                                // Append everything between the last and the current $ sign
-                                ret.append(substitution.substring(lLastPosition + 2, lCurrentPosition));
-                            }
+                            // Append everything between the last and the current $ sign
+                            ret.append(substitution.substring(lLastPosition + 2, lCurrentPosition));
 
-                            // Append the parenthesized expression
-                            // Note: if a parenthesized expression of the requested
-                            // index is not available "null" is added to the string
-                            ret.append(getParen(c - '0'));
+                            // Append the parenthesized expression, if present
+                            String val = getParen(c - '0');
+                            if (val != null) {
+                                ret.append(val);
+                            }
                             lLastPosition = lCurrentPosition;
                         }
                     }

Modified: jakarta/regexp/trunk/src/java/org/apache/regexp/RETest.java
URL: http://svn.apache.org/viewvc/jakarta/regexp/trunk/src/java/org/apache/regexp/RETest.java?view=diff&rev=517970&r1=517969&r2=517970
==============================================================================
--- jakarta/regexp/trunk/src/java/org/apache/regexp/RETest.java (original)
+++ jakarta/regexp/trunk/src/java/org/apache/regexp/RETest.java Tue Mar 13 18:41:38 2007
@@ -535,8 +535,25 @@
 
         // Test for Bug #36106
         r = new RE("fo(o)");
-        actual = r.subst("foo", "$1", RE.REPLACE_BACKREFERENCES);
+        actual = r.subst("foo",
+                         "$1", RE.REPLACE_BACKREFERENCES);
         assertEquals("Wrong subst() result", "o", actual);
+
+        // Test for Bug #36405
+        r = new RE("^(.*?)(x)?$");
+        actual = r.subst("abc",
+                         "$1-$2", RE.REPLACE_BACKREFERENCES);
+        assertEquals("Wrong subst() result", "abc-", actual);
+
+        r = new RE("^(.*?)(x)?$");
+        actual = r.subst("abcx",
+                         "$1-$2", RE.REPLACE_BACKREFERENCES);
+        assertEquals("Wrong subst() result", "abc-x", actual);
+
+        r = new RE("([a-b]+?)([c-d]+)");
+        actual = r.subst("zzabcdzz",
+                         "$1-$2", RE.REPLACE_BACKREFERENCES);
+        assertEquals("Wrong subst() result", "zzab-cdzz", actual);
     }
 
     public void assertEquals(String message, String expected, String actual)

Modified: jakarta/regexp/trunk/xdocs/changes.xml
URL: http://svn.apache.org/viewvc/jakarta/regexp/trunk/xdocs/changes.xml?view=diff&rev=517970&r1=517969&r2=517970
==============================================================================
--- jakarta/regexp/trunk/xdocs/changes.xml (original)
+++ jakarta/regexp/trunk/xdocs/changes.xml Tue Mar 13 18:41:38 2007
@@ -34,6 +34,9 @@
 
 <h3>Version 1.5-dev</h3>
 <ul>
+<li>Fixed Bug
+    <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=36405">36405</a>:
+    Referencing an optional backreference returns null (VG)</li>
 <li>Implemented optimization: RE compiler omits branch instruction if only one
     branch is present (VG)</li>
 <li>Fixed Bug



---------------------------------------------------------------------
To unsubscribe, e-mail: regexp-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: regexp-dev-help@jakarta.apache.org


Mime
View raw message