[Kst] kdeextragear-2/kst/kst

George Staikos staikos at kde.org
Sat Mar 13 21:48:51 CET 2004


CVS commit by staikos: 

tracking locking bugs


  M +11 -8     kstdataobject.cpp   1.23
  M +1 -1      kstvcurve.cpp   1.28


--- kdeextragear-2/kst/kst/kstdataobject.cpp  #1.22:1.23
@@ -148,14 +148,14 @@ void KstDataObject::readLock() const {
 
 void KstDataObject::readUnlock() const {
-  for (KstScalarMap::ConstIterator i = _inputScalars.begin(); i != _inputScalars.end(); ++i) {
+  for (KstVectorMap::ConstIterator i = _outputVectors.begin(); i != _outputVectors.end(); ++i) {
     (*i)->readUnlock();
   }
-  for (KstScalarMap::ConstIterator i = _outputScalars.begin(); i != _outputScalars.end(); ++i) {
+  for (KstVectorMap::ConstIterator i = _inputVectors.begin(); i != _inputVectors.end(); ++i) {
     (*i)->readUnlock();
   }
-  for (KstVectorMap::ConstIterator i = _inputVectors.begin(); i != _inputVectors.end(); ++i) {
+  for (KstScalarMap::ConstIterator i = _outputScalars.begin(); i != _outputScalars.end(); ++i) {
     (*i)->readUnlock();
   }
-  for (KstVectorMap::ConstIterator i = _outputVectors.begin(); i != _outputVectors.end(); ++i) {
+  for (KstScalarMap::ConstIterator i = _inputScalars.begin(); i != _inputScalars.end(); ++i) {
     (*i)->readUnlock();
   }
@@ -164,4 +164,7 @@ void KstDataObject::readUnlock() const {
 
 
+// Note to self, this is nasty.  Some objects may lock while others don't,
+// leading to very complex deadlocks or loss of consistency.
+// Might want to guard these with another lock yet.
 void KstDataObject::writeLock() const {
   KstObject::writeLock();
@@ -182,14 +185,14 @@ void KstDataObject::writeLock() const {
 
 void KstDataObject::writeUnlock() const {
-  for (KstScalarMap::ConstIterator i = _inputScalars.begin(); i != _inputScalars.end(); ++i) {
+  for (KstVectorMap::ConstIterator i = _outputVectors.begin(); i != _outputVectors.end(); ++i) {
     (*i)->writeUnlock();
   }
-  for (KstScalarMap::ConstIterator i = _outputScalars.begin(); i != _outputScalars.end(); ++i) {
+  for (KstVectorMap::ConstIterator i = _inputVectors.begin(); i != _inputVectors.end(); ++i) {
     (*i)->writeUnlock();
   }
-  for (KstVectorMap::ConstIterator i = _inputVectors.begin(); i != _inputVectors.end(); ++i) {
+  for (KstScalarMap::ConstIterator i = _outputScalars.begin(); i != _outputScalars.end(); ++i) {
     (*i)->writeUnlock();
   }
-  for (KstVectorMap::ConstIterator i = _outputVectors.begin(); i != _outputVectors.end(); ++i) {
+  for (KstScalarMap::ConstIterator i = _inputScalars.begin(); i != _inputScalars.end(); ++i) {
     (*i)->writeUnlock();
   }

--- kdeextragear-2/kst/kst/kstvcurve.cpp  #1.27:1.28
@@ -145,5 +145,5 @@ KstVCurve::~KstVCurve() {
 
 KstObject::UpdateType KstVCurve::update(int update_counter) {
-  if (KstObject::checkUpdateCounter(update_counter))
+  if (!VX || !VY || KstObject::checkUpdateCounter(update_counter))
     return NO_CHANGE;
 





More information about the Kst mailing list