fix: segfault
authorpavelpa <pavelpa@localhost>
Mon, 18 Jan 2010 08:49:50 +0000 (08:49 +0000)
committerpavelpa <pavelpa@localhost>
Mon, 18 Jan 2010 08:49:50 +0000 (08:49 +0000)
 - fixes segfault when switching days in "Day View"
 - TODO: needs to be verified, 'cause it looks like
         it shouldn't work, but it does
   - when calling 'QAbstractItemModel::removeRows()' it returns false,
     but it prevents application from crash(segfault)
     - possible explanation is that the timing has changed and so the
       conditions for the segfault

src/mvc/eventmodel.cpp

index 41fae85..25729de 100644 (file)
@@ -119,6 +119,16 @@ int EventModel::rowCount (const QModelIndex & parent) const
 
 void EventModel::loadEvents(const QDate &aDate, int aConferenceId)
 {
+    for(int i=0; i<mGroups.count(); i++)
+    {
+        QModelIndex idx = index(i,0);
+        Group group = mGroups[i];
+        beginRemoveRows(idx,0,group.mChildCount-1);
+        bool ok = removeRows(0,group.mChildCount,idx);
+        endRemoveRows();
+        //qDebug() << "removing " << group.mChildCount << " events from group:" << i << idx.data() << ":" << ok;
+    }
+
     mEvents.clear();
 
     // check for existence of the conference in the DB
@@ -132,6 +142,16 @@ void EventModel::loadEvents(const QDate &aDate, int aConferenceId)
 
 void EventModel::loadFavEvents(const QDate &aDate, int aConferenceId)
 {
+    for(int i=0; i<mGroups.count(); i++)
+    {
+        QModelIndex idx = index(i,0);
+        Group group = mGroups[i];
+        beginRemoveRows(idx,0,group.mChildCount-1);
+        bool ok = removeRows(0,group.mChildCount,idx);
+        endRemoveRows();
+        //qDebug() << "removing " << group.mChildCount << " events from group:" << i << idx.data() << ":" << ok;
+    }
+
     mEvents.clear();
 
     // check for existence of the conference in the DB