You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by br...@apache.org on 2014/01/31 15:53:18 UTC
svn commit: r1563140 -
/subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/RevisionRange.java
Author: brane
Date: Fri Jan 31 14:53:18 2014
New Revision: 1563140
URL: http://svn.apache.org/r1563140
Log:
Fix a nasty bug in JavaHL's mergeinfo parser; it would parse a single
revision R in a range list into a range [R,R] instead of [R-1,R], which
later triggered an abort in libsvn_subr/mergeinfo.c.
[in subversion/bindings/javahl]
* src/org/apache/subversion/javahl/types/RevisionRange.java
(RevisionRange.RevisionRange): When parsing a string representation,
convert a single revision "R" to a range [R-1,R], not to [R,R].
(RevisionRange.toString): Collapse [R-1,R] ranges back to "R".
Modified:
subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/RevisionRange.java
Modified: subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/RevisionRange.java
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/RevisionRange.java?rev=1563140&r1=1563139&r2=1563140&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/RevisionRange.java (original)
+++ subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/RevisionRange.java Fri Jan 31 14:53:18 2014
@@ -104,8 +104,10 @@ public class RevisionRange implements Co
try
{
long revNum = Long.parseLong(revisionElement.trim());
- this.from = new Revision.Number(revNum);
- this.to = this.from;
+ if (revNum <= 0)
+ return;
+ this.to = new Revision.Number(revNum);
+ this.from = new Revision.Number(revNum - 1);
}
catch (NumberFormatException e)
{
@@ -133,8 +135,17 @@ public class RevisionRange implements Co
{
if (from != null && to != null)
{
- String rep = (from.equals(to) ? from.toString()
- : from.toString() + '-' + to.toString());
+ String rep;
+
+ if (from.getKind() == Revision.Kind.number
+ && to.getKind() == Revision.Kind.number
+ && (((Revision.Number)from).getNumber() + 1
+ == ((Revision.Number)to).getNumber()))
+ rep = to.toString();
+ else if (from.equals(to)) // Such ranges should never happen
+ rep = from.toString();
+ else
+ rep = from.toString() + '-' + to.toString();
if (!inheritable)
return rep + '*';
return rep;