From 5a367c3b12e19af7a66fc923d7149bf22cdfb596 Mon Sep 17 00:00:00 2001 From: Jeremias Maerki Date: Mon, 17 Jan 2011 15:08:39 +0000 Subject: [PATCH] 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 --- .../org/apache/fop/apps/FopFactoryConfigurator.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) 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(); -- 2.39.5