dbertoni    2004/12/09 23:06:16

  Modified:    c/src/xalanc/PlatformSupport XalanParsedURI.cpp
  Log:
  Avoid trying to resolve against a base URI which is relative.
  
  Revision  Changes    Path
  1.8       +9 -6      xml-xalan/c/src/xalanc/PlatformSupport/XalanParsedURI.cpp
  
  Index: XalanParsedURI.cpp
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/c/src/xalanc/PlatformSupport/XalanParsedURI.cpp,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- XalanParsedURI.cpp        8 Nov 2004 18:11:05 -0000       1.7
  +++ XalanParsedURI.cpp        10 Dec 2004 07:06:15 -0000      1.8
  @@ -172,8 +172,13 @@
        const XalanParsedURI &base
   )
   {
  +    if (base.isSchemeDefined() == false)
  +    {
  +        // Protect against a base URI that is relative...
  +        // This might become an assert or an exception.
  +    }
        // Handle references to the current document (step 2)
  -     if ((m_defined & (d_scheme | d_authority | d_query)) == 0 &&
  +     else if ((m_defined & (d_scheme | d_authority | d_query)) == 0 &&
                m_path.empty())
        {
                m_scheme        = base.m_scheme;
  @@ -190,26 +195,24 @@
                }
   
                m_defined |= base.m_defined;
  -             return;
        }
  -
        // A defined scheme component implies that this is an absolute URI 
(step 3)
        // Also allow a scheme without authority that matches the base scheme 
to be 
        // interpreted as a relative URI
  -     if (!(m_defined & d_scheme) || ( 
  +     else if (!(m_defined & d_scheme) || ( 
                        (base.m_defined & d_scheme) && !(m_defined & 
d_authority) 
                        && equalsIgnoreCaseASCII(m_scheme, base.m_scheme)))
        {
                // Inherit the base scheme
                m_scheme = base.m_scheme;
  -             m_defined |= d_scheme;
  +         m_defined |= d_scheme;
   
                // Step 4: If the authority is unm_defined then inherit it, 
otherwise skip to step 7
                if (!(m_defined & d_authority))
                {
                        // Inherit the base authority
                        m_authority = base.m_authority;
  -                     m_defined |= d_authority;
  +            m_defined |= d_authority;
   
                        // Step 5: if the path starts with a / then it is 
absolute
                        if (!(m_path.length() > 0 && m_path[0] == 
XalanUnicode::charSolidus))
  
  
  

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

Reply via email to