Hi,

This looks like a bug in src/xml/QName.cpp

Notice the code below :-

void
QName::splitQNameString(const XML_Ch* qname, XML_Ch sep)
{
   XML_Ch *p = const_cast<XML_Ch*>(qname);
   while (*p)
   {
       if (*p == sep)
       {
           *p = '\0'; /* put null to separate local name from namespace */
           localname = ++p; /* now p points to localpart */
           uri = qname; /* qname points to uri */
           //  -------------- There should be a return here ???
---------------------------
       }
       p++;
   }
   /* if there is no separator that means there is no uri */
   localname = qname;
   uri = 0; /* no uri */
}

Even if a separator exists, there is no return call from the loop. Hence,
the end result will always set the localname to the URI portion. The URL
will always be NULL.

I am not sure what the mergeQNameString is expected to do in the face of the
current situation.

Since this methods are used in determining the size of array structures -
array data types do not work.

- Chinmoy

Reply via email to