From: Jeremias Maerki Date: Mon, 17 Jan 2011 15:08:39 +0000 (+0000) Subject: Bugfix: Extracting the base directory through Configuration.getLocation() didn't... X-Git-Tag: fop-1_1rc1old~359 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=5a367c3b12e19af7a66fc923d7149bf22cdfb596;p=xmlgraphics-fop.git Bugfix: Extracting the base directory through Configuration.getLocation() didn't work for Windows, since Windows paths can contain drive letters that are separated by colons. This lead to FOP scanning the whole drive for fonts starting from the drive root in the auto-detect case. git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@1059945 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/src/java/org/apache/fop/apps/FopFactoryConfigurator.java b/src/java/org/apache/fop/apps/FopFactoryConfigurator.java index 6c1986cb2..9de00cd85 100644 --- a/src/java/org/apache/fop/apps/FopFactoryConfigurator.java +++ b/src/java/org/apache/fop/apps/FopFactoryConfigurator.java @@ -377,11 +377,17 @@ public class FopFactoryConfigurator { } private void setBaseURI() throws FOPException { - String[] locationParts = cfg.getLocation().split(":"); + String loc = cfg.getLocation(); + String[] locationParts = (loc != null ? cfg.getLocation().split(":") : null); try { if (locationParts != null && locationParts.length >= 2 && "file".equals(locationParts[0])) { - baseURI = new URI(locationParts[0], locationParts[1], null); + StringBuilder sb = new StringBuilder(locationParts[1]); + for (int idx = 2; idx < locationParts.length; idx++) { + sb.append(":").append(locationParts[idx]); + } + baseURI = new URI(locationParts[0], sb.toString(), null); + baseURI = baseURI.resolve(".").normalize(); } if (baseURI == null) { baseURI = new File(System.getProperty("user.dir")).toURI();