diff --git a/src/xercesc/util/NetAccessors/Socket/UnixHTTPURLInputStream.cpp b/src/xercesc/util/NetAccessors/Socket/UnixHTTPURLInputStream.cpp
index 2defbaf19be0758414767041e6711df1e409a16d..623cf309bcb52f67ebf4dfa4938075cc8aed1f7a 100644
--- a/src/xercesc/util/NetAccessors/Socket/UnixHTTPURLInputStream.cpp
+++ b/src/xercesc/util/NetAccessors/Socket/UnixHTTPURLInputStream.cpp
@@ -56,6 +56,9 @@
 
 /*
  * $Log$
+ * Revision 1.16  2004/02/11 12:42:22  cargilld
+ * Fix for bug 25541.
+ *
  * Revision 1.15  2004/01/29 11:51:20  cargilld
  * Code cleanup changes to get rid of various compiler diagnostic messages.
  *
@@ -251,15 +254,20 @@ UnixHTTPURLInputStream::UnixHTTPURLInputStream(const XMLURL& urlSource)
     XMLTranscoder* trans = XMLPlatformUtils::fgTransService->makeNewTranscoderFor("ISO8859-1", failReason, blockSize, fMemoryManager);
     trans->transcodeTo(hostName, transSize, (unsigned char *) hostNameAsASCII, transSize, charsEaten, XMLTranscoder::UnRep_Throw);
 
-    transSize = XMLString::stringLen(path)+1;
-    char*               pathAsASCII = (char*) fMemoryManager->allocate
-    (
-        (transSize+1) * sizeof(char)
-    );//new char[transSize+1];
-    ArrayJanitor<char>     janBuf3(pathAsASCII, fMemoryManager);
-    trans->transcodeTo(path, transSize, (unsigned char *) pathAsASCII, transSize, charsEaten, XMLTranscoder::UnRep_Throw);
+    char*               pathAsASCII = 0;
+    ArrayJanitor<char>  janBuf3(pathAsASCII, fMemoryManager);
+    if (path)
+    {
+        transSize = XMLString::stringLen(path)+1;
+        pathAsASCII = (char*) fMemoryManager->allocate
+        (
+            (transSize+1) * sizeof(char)
+        );//new char[transSize+1];        
+        trans->transcodeTo(path, transSize, (unsigned char *) pathAsASCII, transSize, charsEaten, XMLTranscoder::UnRep_Throw);
+    }
 
     char*               fragmentAsASCII = 0;
+    ArrayJanitor<char>  janBuf4(fragmentAsASCII, fMemoryManager);
     if (fragment)
     {
         transSize = XMLString::stringLen(fragment)+1;
@@ -267,7 +275,6 @@ UnixHTTPURLInputStream::UnixHTTPURLInputStream(const XMLURL& urlSource)
         (
             (transSize+1) * sizeof(char)
         );//new char[transSize+1];
-        ArrayJanitor<char>  janBuf4(fragmentAsASCII, fMemoryManager);
         trans->transcodeTo(fragment, transSize, (unsigned char *) fragmentAsASCII, transSize, charsEaten, XMLTranscoder::UnRep_Throw);
     }
 
@@ -347,7 +354,10 @@ UnixHTTPURLInputStream::UnixHTTPURLInputStream(const XMLURL& urlSource)
     // To do:  We should really support http 1.1.  This implementation
     //         is weak.
     strcpy(fBuffer, GET);
-    strcat(fBuffer, pathAsASCII);
+    if (pathAsASCII != 0)
+    {
+         strcat(fBuffer, pathAsASCII);
+    }
 
     if (queryAsASCII != 0)
     {