From: Luciano Chavez Date: Mon, 21 Jan 2008 20:08:38 +0000 (+0000) Subject: re PR libgcj/34369 (java.net.URI.relativize(URI) method returns incorrect results) X-Git-Tag: releases/gcc-4.3.0~499 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e0c604077e768a96985f4848b756d708564b22eb;p=thirdparty%2Fgcc.git re PR libgcj/34369 (java.net.URI.relativize(URI) method returns incorrect results) 2008-01-21 Luciano Chavez PR libgcj/34369: * java/net/URI.java (relativize): Check initial segment for trailing "/". From-SVN: r131701 --- diff --git a/libjava/classpath/ChangeLog b/libjava/classpath/ChangeLog index 4086a236ceac..fbeb438713c5 100644 --- a/libjava/classpath/ChangeLog +++ b/libjava/classpath/ChangeLog @@ -1,3 +1,9 @@ +2008-01-21 Luciano Chavez + + PR libgcj/34369: + * java/net/URI.java (relativize): Check initial segment for + trailing "/". + 2007-12-05 Thomas Fitzsimmons * gnu/java/awt/peer/gtk/GdkGraphicsEnvironment.java, diff --git a/libjava/classpath/java/net/URI.java b/libjava/classpath/java/net/URI.java index 43b10fc41955..4bf4db9856c0 100644 --- a/libjava/classpath/java/net/URI.java +++ b/libjava/classpath/java/net/URI.java @@ -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) diff --git a/libjava/classpath/lib/java/net/URI.class b/libjava/classpath/lib/java/net/URI.class index 760c952f1925..be72cf438de1 100644 Binary files a/libjava/classpath/lib/java/net/URI.class and b/libjava/classpath/lib/java/net/URI.class differ