From bd2ec3edf5b35bbe48143965b74c0ff6650782a7 Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Fri, 2 Jan 2015 09:16:39 -0800 Subject: [PATCH] Bug fix in LoadPLugin so that it can take paths to dlls that look like this "C:\foo\MyDll.dll:MyType" -- the split on : was messing things up. --- OpenSim/Services/Base/ServiceBase.cs | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/OpenSim/Services/Base/ServiceBase.cs b/OpenSim/Services/Base/ServiceBase.cs index ef30cba6cf..addbe94a00 100644 --- a/OpenSim/Services/Base/ServiceBase.cs +++ b/OpenSim/Services/Base/ServiceBase.cs @@ -27,6 +27,7 @@ using System; using System.Collections.Generic; +using System.IO; using System.Reflection; using log4net; using Nini.Config; @@ -45,9 +46,15 @@ namespace OpenSim.Services.Base public T LoadPlugin(string dllName, Object[] args) where T:class { - string[] parts = dllName.Split(new char[] {':'}); + // The path:type separator : is unfortunate because it collides + // with Windows paths like C:\... + // When the path provided includes the drive, this fails. + // Hence the root/noroot thing going on here. + string pathRoot = Path.GetPathRoot(dllName); + string noRoot = dllName.Substring(pathRoot.Length); + string[] parts = noRoot.Split(new char[] {':'}); - dllName = parts[0]; + dllName = pathRoot + parts[0]; string className = String.Empty;