Return-Path: Delivered-To: apmail-jakarta-regexp-dev-archive@www.apache.org Received: (qmail 98862 invoked from network); 14 Mar 2007 01:42:00 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 14 Mar 2007 01:42:00 -0000 Received: (qmail 15410 invoked by uid 500); 14 Mar 2007 01:42:09 -0000 Delivered-To: apmail-jakarta-regexp-dev-archive@jakarta.apache.org Received: (qmail 15390 invoked by uid 500); 14 Mar 2007 01:42:09 -0000 Mailing-List: contact regexp-dev-help@jakarta.apache.org; run by ezmlm Precedence: bulk List-Unsubscribe: List-Help: List-Post: List-Id: "Regexp Developers List" Reply-To: "Regexp Developers List" Delivered-To: mailing list regexp-dev@jakarta.apache.org Received: (qmail 15379 invoked by uid 500); 14 Mar 2007 01:42:09 -0000 Received: (qmail 15376 invoked by uid 99); 14 Mar 2007 01:42:09 -0000 Received: from herse.apache.org (HELO herse.apache.org) (140.211.11.133) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 13 Mar 2007 18:42:09 -0700 X-ASF-Spam-Status: No, hits=-99.5 required=10.0 tests=ALL_TRUSTED,NO_REAL_NAME X-Spam-Check-By: apache.org Received: from [140.211.11.3] (HELO eris.apache.org) (140.211.11.3) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 13 Mar 2007 18:41:59 -0700 Received: by eris.apache.org (Postfix, from userid 65534) id B6F0F1A9838; Tue, 13 Mar 2007 18:41:39 -0700 (PDT) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit 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 -0000 To: regexp-cvs@jakarta.apache.org From: vgritsenko@apache.org X-Mailer: svnmailer-1.1.0 Message-Id: <20070314014139.B6F0F1A9838@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org 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 @@

Version 1.5-dev

    +
  • Fixed Bug + 36405: + Referencing an optional backreference returns null (VG)
  • Implemented optimization: RE compiler omits branch instruction if only one branch is present (VG)
  • 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 @@

    Version 1.5-dev

      +
    • Fixed Bug + 36405: + Referencing an optional backreference returns null (VG)
    • Implemented optimization: RE compiler omits branch instruction if only one branch is present (VG)
    • Fixed Bug --------------------------------------------------------------------- To unsubscribe, e-mail: regexp-dev-unsubscribe@jakarta.apache.org For additional commands, e-mail: regexp-dev-help@jakarta.apache.org