[ 
https://issues.apache.org/jira/browse/TUSCANY-1203?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Caroline Maynard closed TUSCANY-1203.
-------------------------------------

       Resolution: Fixed
    Fix Version/s: Cpp-current

Combined patch committed

> Yet another AccessViolation in DataObjectImpl::~DataObjectImpl
> --------------------------------------------------------------
>
>                 Key: TUSCANY-1203
>                 URL: https://issues.apache.org/jira/browse/TUSCANY-1203
>             Project: Tuscany
>          Issue Type: Bug
>          Components: C++ SDO
>    Affects Versions: Cpp-current
>         Environment: PHP 
>            Reporter: Caroline Maynard
>             Fix For: Cpp-current
>
>         Attachments: Tuscany-1203.patch
>
>
> This one occurs when deleting a DataObject which has several open properties. 
> The logic in the destructor is: 
>   while (i != PropertyValues.end()) 
>         {
>             unsigned int pindx = (*i).first;
>             DataObjectImplPtr dol = (*i).second;
>             unset(pindx);
>             i = PropertyValues.begin();
>             if (i != PropertyValues.end() && (*i).first == pindx )
>             {
>                 // unset has not removed the item from the list - do it 
>                 // here instead
>                 PropertyValues.erase(i);
>                 i = PropertyValues.begin();
>             }
>         }
> However what happens in the unset() method is that if the property is open, 
> undefineProperty() is called. This removes the open property and "shuffles 
> up" the rest, so that a different property is assigned the property index 
> pindx. Which means that even though the unset has removed the item from the 
> list, the test (*).first==pindx  passes, which results in the next property 
> being removed from the list even though it has not yet been unset. 

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


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

Reply via email to