OSDN Git Service

2008-01-21 Luciano Chavez <lnx1138@us.ibm.com>
authortromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 21 Jan 2008 20:08:38 +0000 (20:08 +0000)
committertromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 21 Jan 2008 20:08:38 +0000 (20:08 +0000)
PR libgcj/34369:
* java/net/URI.java (relativize): Check initial segment for
trailing "/".

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@131701 138bc75d-0d04-0410-961f-82ee72b054a4

libjava/classpath/ChangeLog
libjava/classpath/java/net/URI.java
libjava/classpath/lib/java/net/URI.class

index 4086a23..fbeb438 100644 (file)
@@ -1,3 +1,9 @@
+2008-01-21  Luciano Chavez  <lnx1138@us.ibm.com>
+
+       PR libgcj/34369:
+       * java/net/URI.java (relativize): Check initial segment for
+       trailing "/".
+
 2007-12-05  Thomas Fitzsimmons  <fitzsim@redhat.com>
 
        * gnu/java/awt/peer/gtk/GdkGraphicsEnvironment.java,
index 43b10fc..4bf4db9 100644 (file)
@@ -1,5 +1,5 @@
 /* URI.java -- An URI class
-   Copyright (C) 2002, 2004, 2005, 2006  Free Software Foundation, Inc.
+   Copyright (C) 2002, 2004, 2005, 2006, 2008  Free Software Foundation, Inc.
 
 This file is part of GNU Classpath.
 
@@ -968,12 +968,18 @@ public final class URI
       return uri;
     if (rawAuthority != null && !(rawAuthority.equals(uri.getRawAuthority())))
       return uri;
-    if (!(uri.getRawPath().startsWith(rawPath)))
-      return uri;
+    String basePath = rawPath;
+    if (!(uri.getRawPath().equals(rawPath)))
+      {
+       if (!(basePath.endsWith("/")))
+         basePath = basePath.concat("/");
+       if (!(uri.getRawPath().startsWith(basePath)))
+         return uri;
+      }
     try
       {
        return new URI(null, null, 
-                      uri.getRawPath().substring(rawPath.length()),
+                      uri.getRawPath().substring(basePath.length()),
                       uri.getRawQuery(), uri.getRawFragment());
       }
     catch (URISyntaxException e)
index 760c952..be72cf4 100644 (file)
Binary files a/libjava/classpath/lib/java/net/URI.class and b/libjava/classpath/lib/java/net/URI.class differ