[ http://issues.apache.org/jira/browse/XERCESC-1455?page=all ]

David Bertoni updated XERCESC-1455:
-----------------------------------

    Attachment: patch.txt

This patch prohibits instantiating ValueVectorOf with a non-POD type, since the 
implementation does not support proper semantics for types with constructors, 
destructors, etc.  There is very little change to the parser code itself, since 
the parser only stores POD-types in ValueVectorOf.

> Template ValueVectorOf does not call destructors for removing objects. A 
> memory leak could result from this.
> ------------------------------------------------------------------------------------------------------------
>
>          Key: XERCESC-1455
>          URL: http://issues.apache.org/jira/browse/XERCESC-1455
>      Project: Xerces-C++
>         Type: Bug
>   Components: Utilities
>     Versions: 2.3.0
>  Environment: Solaris
>     Reporter: Alex Akula
>     Assignee: David Bertoni
>  Attachments: patch.txt
>
> When objects get removed from ValueVectorOf < object type> container no 
> destructors are called for the objects. Amemory leak could result from this.
> This could be fixed by changing the code:
> template <class TElem> void ValueVectorOf<TElem>::
> removeElementAt(const unsigned int removeAt)
> {
>     if (removeAt >= fCurCount)
>         ThrowXML(ArrayIndexOutOfBoundsException, XMLExcepts::Vector_BadIndex);
>       fElemList[removeAt] = 0; // akula --  this is the fix for classes in 
> which assign operator is overloaded appropriate way.
>     if (removeAt == fCurCount-1)
>     {
>         fCurCount--;
>         return;
>     }
>     // Copy down every element above remove point
>     for (unsigned int index = removeAt; index < fCurCount-1; index++)
>         fElemList[index] = fElemList[index+1];
>     // And bump down count
>     fCurCount--;
> }

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira


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

Reply via email to