[
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]