[ https://issues.apache.org/jira/browse/TUSCANY-1203?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Caroline Maynard updated TUSCANY-1203:
--------------------------------------
Patch Info: [Patch Available]
I'vve added to 1147 a combined patch for 1147, 1202 and 1203, which should be simpler to apply.
> 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
> 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: tuscany-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-dev-help@ws.apache.org
|