Index: Orthanc-0.5.2/OrthancServer/OrthancInitialization.cpp
===================================================================
--- Orthanc-0.5.2.orig/OrthancServer/OrthancInitialization.cpp	2013-05-07 13:54:58.000000000 +0200
+++ Orthanc-0.5.2/OrthancServer/OrthancInitialization.cpp	2013-05-08 15:32:29.588225296 +0200
@@ -280,10 +280,38 @@
   }
 
 
+
+  std::string InterpretRelativePath(const std::string& baseDirectory,
+                                    const std::string& relativePath)
+  {
+    boost::filesystem::path base(baseDirectory);
+    boost::filesystem::path relative(relativePath);
+
+    /**
+       The following lines should be equivalent to this one:
+
+       return (base / relative).string();
+
+       However, for some unknown reason, some versions of Boost do not
+       make the proper path resolution when "baseDirectory" is an
+       absolute path. So, a hack is used below.
+     **/
+
+    if (relative.is_absolute())
+    {
+      return relative.string();
+    }
+    else
+    {
+      return (base / relative).string();
+    }
+  }
+
+
   std::string InterpretStringParameterAsPath(const std::string& parameter)
   {
     boost::mutex::scoped_lock lock(globalMutex_);
-    return (defaultDirectory_ / parameter).string();
+    return InterpretRelativePath(defaultDirectory_.string(), parameter);
   }
 
 
Index: Orthanc-0.5.2/OrthancServer/OrthancInitialization.h
===================================================================
--- Orthanc-0.5.2.orig/OrthancServer/OrthancInitialization.h	2013-05-07 13:54:58.000000000 +0200
+++ Orthanc-0.5.2/OrthancServer/OrthancInitialization.h	2013-05-08 15:30:56.605394409 +0200
@@ -62,6 +62,9 @@
 
   void SetupRegisteredUsers(MongooseServer& httpServer);
 
+  std::string InterpretRelativePath(const std::string& baseDirectory,
+                                    const std::string& relativePath);
+
   std::string InterpretStringParameterAsPath(const std::string& parameter);
 
   void GetGlobalListOfStringsParameter(std::list<std::string>& target,
Index: Orthanc-0.5.2/UnitTests/main.cpp
===================================================================
--- Orthanc-0.5.2.orig/UnitTests/main.cpp	2013-05-08 15:27:47.591770425 +0200
+++ Orthanc-0.5.2/UnitTests/main.cpp	2013-05-08 15:28:21.895338746 +0200
@@ -334,6 +334,11 @@
   ASSERT_EQ("(2000,00A4) Other", s);
 }
 
+TEST(OrthancInitialization, AbsoluteDirectory)
+{
+  ASSERT_EQ("/tmp/hello", InterpretRelativePath("/tmp", "hello"));
+  ASSERT_EQ("/tmp", InterpretRelativePath("/tmp", "/tmp"));
+}
 
 int main(int argc, char **argv)
 {
