Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Merge branch 'fix_event_query_crash' into 'master'
[nemo-qml-plugin-calendar] Fix invalid pointer reference on event query. Fixes JB#52691

See merge request mer-core/nemo-qml-plugin-calendar!74
  • Loading branch information
pvuorela committed Jan 12, 2021
2 parents dc9e996 + 1002b50 commit 314b49b
Show file tree
Hide file tree
Showing 3 changed files with 7 additions and 16 deletions.
4 changes: 1 addition & 3 deletions src/calendareventquery.cpp
Expand Up @@ -46,13 +46,11 @@ CalendarEventQuery::CalendarEventQuery()

connect(CalendarManager::instance(), SIGNAL(eventUidChanged(QString,QString)),
this, SLOT(eventUidChanged(QString,QString)));

CalendarManager::instance()->registerEventQuery(this);
}

CalendarEventQuery::~CalendarEventQuery()
{
CalendarManager::instance()->unRegisterEventQuery(this);
CalendarManager::instance()->cancelEventQueryRefresh(this);
}

// The uid of the matched event
Expand Down
15 changes: 5 additions & 10 deletions src/calendarmanager.cpp
Expand Up @@ -256,16 +256,6 @@ void CalendarManager::scheduleAgendaRefresh(CalendarAgendaModel *model)
mTimer->start();
}

void CalendarManager::registerEventQuery(CalendarEventQuery *query)
{
mQueryList.append(query);
}

void CalendarManager::unRegisterEventQuery(CalendarEventQuery *query)
{
mQueryList.removeOne(query);
}

void CalendarManager::scheduleEventQueryRefresh(CalendarEventQuery *query)
{
if (mQueryRefreshList.contains(query))
Expand All @@ -277,6 +267,11 @@ void CalendarManager::scheduleEventQueryRefresh(CalendarEventQuery *query)
mTimer->start();
}

void CalendarManager::cancelEventQueryRefresh(CalendarEventQuery *query)
{
mQueryRefreshList.removeOne(query);
}

static QDate agenda_endDate(const CalendarAgendaModel *model)
{
QDate endDate = model->endDate();
Expand Down
4 changes: 1 addition & 3 deletions src/calendarmanager.h
Expand Up @@ -96,9 +96,8 @@ class CalendarManager : public QObject
void scheduleAgendaRefresh(CalendarAgendaModel *model);

// EventQuery
void registerEventQuery(CalendarEventQuery *query);
void unRegisterEventQuery(CalendarEventQuery *query);
void scheduleEventQueryRefresh(CalendarEventQuery *query);
void cancelEventQueryRefresh(CalendarEventQuery *query);

// Invitation event search
void scheduleInvitationQuery(CalendarInvitationQuery *query, const QString &invitationFile);
Expand Down Expand Up @@ -158,7 +157,6 @@ private slots:
QHash<QDate, QStringList> mEventOccurrenceForDates;
QList<CalendarAgendaModel *> mAgendaRefreshList;
QList<CalendarEventQuery *> mQueryRefreshList;
QList<CalendarEventQuery *> mQueryList; // List of all CalendarEventQuery instances
QHash<CalendarInvitationQuery *, QString> mInvitationQueryHash; // value is the invitationFile.
QStringList mExcludedNotebooks;
QHash<QString, CalendarData::Notebook> mNotebooks;
Expand Down

0 comments on commit 314b49b

Please sign in to comment.