[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdepim/korganizer
From: Martin Koller <m.koller () surfeu ! at>
Date: 2007-10-28 17:46:25
Message-ID: 1193593585.666941.6271.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 730393 by mkoller:
forwardport of fix for #101696
Break recursive relation to avoid endless loop
M +14 -1 kotodoview.cpp
--- trunk/KDE/kdepim/korganizer/kotodoview.cpp #730392:730393
@@ -813,6 +813,9 @@
// Use dynamic_cast, because in the future the related item might also be an event
Todo *relatedTodo = dynamic_cast<Todo *>(incidence);
+ // just make sure we know we have this item already to avoid endless recursion (Bug 101696)
+ mTodoMap.insert(todo,0);
+
// kDebug(5850) <<" has Related";
QMap<Todo *,KOTodoViewItem *>::ConstIterator itemIterator;
itemIterator = mTodoMap.find(relatedTodo);
@@ -822,7 +825,17 @@
}
// isn't this pretty stupid? We give one Todo to the KOTodoViewItem
// and one into the map. Sure finding is more easy but why? -zecke
- KOTodoViewItem *todoItem = new KOTodoViewItem(*itemIterator,todo,this);
+ KOTodoViewItem *todoItem;
+
+ // in case we found a related parent, which has no KOTodoViewItem yet, this must
+ // be the case where 2 items refer to each other, therefore simply create item as root item
+ if ( *itemIterator == 0 ) {
+ todo->setRelatedTo(0); // break the recursion, else we will have troubles later
+ return insertTodoItem(todo);
+ }
+ else
+ todoItem = new KOTodoViewItem(*itemIterator, todo, this);
+
return mTodoMap.insert(todo,todoItem);
} else {
// kDebug(5850) <<" no Related";
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic