You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by sa...@apache.org on 2004/10/13 06:51:54 UTC

cvs commit: ws-axis/c/src/xml/xerces XercesHandler.cpp

samisa      2004/10/12 21:51:54

  Modified:    c/src/xml/xerces XercesHandler.cpp
  Log:
  Included logic to handle '>' and '<' in strings.
  Fix for Jira AXISCPP-184
  
  Revision  Changes    Path
  1.7       +21 -1     ws-axis/c/src/xml/xerces/XercesHandler.cpp
  
  Index: XercesHandler.cpp
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/src/xml/xerces/XercesHandler.cpp,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- XercesHandler.cpp	28 Jun 2004 07:26:40 -0000	1.6
  +++ XercesHandler.cpp	13 Oct 2004 04:51:54 -0000	1.7
  @@ -100,9 +100,29 @@
   void XercesHandler::characters(const XMLCh* const chars, 
                                  const unsigned int length)
   {
  +    const char* cp_PreviousNameOrValue = NULL;
  +    if( m_pCurrElement && m_pCurrElement->m_pchNameOrValue)
  +    {
  +        if (m_pCurrElement->m_type == CHARACTER_ELEMENT)
  +            cp_PreviousNameOrValue = m_pCurrElement->m_pchNameOrValue;
  +    }
       m_pCurrElement = m_pNextElement;
       m_pNextElement->m_type = CHARACTER_ELEMENT;
  -    m_pNextElement->m_pchNameOrValue = XMLString::transcode(chars);
  +    
  +    if (cp_PreviousNameOrValue)
  +    {
  +        char* cp_CurrentNameOrValue = XMLString::transcode(chars);
  +        char* cp_FullNameOrValue  = (char*) malloc(strlen(cp_PreviousNameOrValue) + strlen(cp_CurrentNameOrValue) + 1);
  +        cp_FullNameOrValue[0] = '\0'; 
  +        strcat(cp_FullNameOrValue, cp_PreviousNameOrValue);
  +        strcat(cp_FullNameOrValue, cp_CurrentNameOrValue);
  +        m_pNextElement->m_pchNameOrValue = (const char*)cp_FullNameOrValue;
  +        free(const_cast <char*> (cp_PreviousNameOrValue));
  +        free(cp_CurrentNameOrValue);
  +    }
  +    else
  +        m_pNextElement->m_pchNameOrValue = XMLString::transcode(chars);
  +    
   }
   void XercesHandler::ignorableWhitespace(const XMLCh* const chars, 
                                           const unsigned int length)