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