dbertoni    01/11/26 15:10:12

  Modified:    c/src/PlatformSupport URISupport.cpp
  Log:
  Fix for bug 4765.
  
  Revision  Changes    Path
  1.15      +28 -14    xml-xalan/c/src/PlatformSupport/URISupport.cpp
  
  Index: URISupport.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/PlatformSupport/URISupport.cpp,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- URISupport.cpp    2001/09/25 21:12:51     1.14
  +++ URISupport.cpp    2001/11/26 23:10:12     1.15
  @@ -146,7 +146,7 @@
        {
                const XalanDOMString::size_type         index = 
indexOf(theNormalizedURI, XalanUnicode::charColon);
   
  -             bool                            protocolPresent = false;
  +             bool    protocolPresent = false;
   
                if (index != len)
                {
  @@ -167,7 +167,7 @@
                else
                {
                        // Assume it's a file specification...
  -                     XalanArrayAutoPtr<XalanDOMChar>         
theFullPath(XMLPlatformUtils::getFullPath(c_wstr(urlString)));
  +                     const XalanArrayAutoPtr<XalanDOMChar>   
theFullPath(XMLPlatformUtils::getFullPath(c_wstr(urlString)));
                        assert(theFullPath.get() != 0);
   
                        theNormalizedURI = theFullPath.get();
  @@ -279,23 +279,37 @@
                else
                {
                        // It's a protocol...
  -                     if (startsWith(context, theProtocolString) == true)
  +                     if (startsWith(context, theProtocolString) == false)
                        {
  +                             // OK, not the same protocol, so what can we 
do???
  +                             context = urlString;
  +                     }
  +                     else
  +                     {
                                // They share the same protocol...
  +
  +                             // Check if this is an absolute URI (starts 
with a leading '//')
  +                             const XalanDOMString::size_type         
protoLength = length(theProtocolString);
   
  -                             // Strip off file name from context...
  -                             if (indexOfSlash < theContextLength)
  +                             if (protoLength + 3 <= theURLStringLength &&
  +                                     urlString[protoLength + 1] == 
XalanUnicode::charSolidus &&
  +                                     urlString[protoLength + 2] == 
XalanUnicode::charSolidus)
                                {
  -                                     context = substring(context, 0, 
indexOfSlash + 1);
  +                                     // It's an absolute URI -- use it in 
full...
  +                                     context = urlString;
                                }
  -
  -                             // OK, everything looks good, so strip off the 
protocol and colon...
  -                             context += substring(urlString, theColonIndex + 
1, theURLStringLength);
  -                     }
  -                     else
  -                     {
  -                             // OK, not the same protocol, so what can we 
do???
  -                             context = urlString;
  +                             else
  +                             {
  +                                     // Strip off file name from context...
  +                                     if (indexOfSlash < theContextLength)
  +                                     {
  +                                             context = substring(context, 0, 
indexOfSlash + 1);
  +                                     }
  +
  +                                     // OK, everything looks good, so strip 
off the protocol 
  +                                     // and colon...
  +                                     context += substring(urlString, 
theColonIndex + 1, theURLStringLength);
  +                             }
                        }
                }
        }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to