[Kst] [Bug 88357] crash when changing curve name while viewing live
data
Andrew Walker
arwalker at sumusltd.com
Mon Aug 30 21:24:41 CEST 2004
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.
http://bugs.kde.org/show_bug.cgi?id=88357
arwalker sumusltd com changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |RESOLVED
Resolution| |FIXED
------- Additional Comments From arwalker sumusltd com 2004-08-30 21:24 -------
CVS commit by arwalker:
This occurs as the data manager may be requested to updateContents( ... ) before update( ... ). If this happens then a crash may result if any object's name in the data manager had been changed in the meantime. If the object name (part of the KstObjectItem) can not be found then the code assert's (and so crashes).
The solution is not to assert, but instead check that the object corresponding to the name was found.
CCMAIL: 88357-done bugs kde org
M +65 -62 kstdatamanager_i.cpp 1.81
--- kdeextragear-2/kst/kst/kstdatamanager_i.cpp #1.80:1.81
@ -93,7 +93,7 @ void KstObjectItem::update(bool recursiv
{
KstVectorPtr px = *KST::vectorList.findTag(_name);
- assert(px.data());
- assert(dynamic_cast<KstRVector*>(px.data()));
+ if (px) {
KstRVectorPtr x = static_cast<KstRVector*>(px.data());
+ if (x) {
x->readLock();
//
@ -110,4 +110,6 @ void KstObjectItem::update(bool recursiv
_removable = x->getUsage() == 2;
x->readUnlock();
+ }
+ }
break;
}
@ -115,5 +117,5 @ void KstObjectItem::update(bool recursiv
{
KstVectorPtr x = *KST::vectorList.findTag(_name);
- assert(x.data());
+ if (x) {
x->readLock();
//
@ -126,4 +128,5 @ void KstObjectItem::update(bool recursiv
x->readUnlock();
_removable = false;
+ }
break;
}
@ -131,5 +134,5 @ void KstObjectItem::update(bool recursiv
{
KstDataObjectPtr x = *KST::dataObjectList.findTag(_name);
- assert(x.data());
+ if (x) {
x->readLock();
//
@ -154,6 +157,5 @ void KstObjectItem::update(bool recursiv
for (KstVectorMap::Iterator p = x->outputVectors().begin();
- p != x->outputVectors().end();
- ++p) {
+ p != x->outputVectors().end(); ++p) {
bool found = false;
for (QListViewItem *i = firstChild(); i; i = i->nextSibling()) {
@ -173,4 +175,5 @ void KstObjectItem::update(bool recursiv
_removable = x->getUsage() == 1;
x->readUnlock();
+ }
break;
}
More information about the Kst
mailing list