From e089a84b306ef09667752b910d87538043140042 Mon Sep 17 00:00:00 2001 From: Ratchanan Srirattanamet Date: Tue, 6 Jun 2023 15:54:11 +0700 Subject: engine-eds: fix retrieving custom alarm sound path ECal 2.0 returns the list of attachments as a GSList (a singly linked list). I'm not sure why, but the logic for iterating the list is completely incorrect. Fixing that fixes custom alarm sound. A test is added to catch this case. Bug-UBports: https://gitlab.com/ubports/development/apps/lomiri-clock-app/-/issues/183 --- src/engine-eds.cpp | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/engine-eds.cpp b/src/engine-eds.cpp index b7f4682..2748fc1 100644 --- a/src/engine-eds.cpp +++ b/src/engine-eds.cpp @@ -635,19 +635,18 @@ private: auto action = e_cal_component_alarm_get_action(alarm); if (action == E_CAL_COMPONENT_ALARM_AUDIO) { - ICalAttach *attach = nullptr; auto attachments = e_cal_component_alarm_get_attachments(alarm); - if (attachments != nullptr && attachments->next != nullptr) - attach = I_CAL_ATTACH (attachments->data); + for (; attachments != nullptr; attachments = attachments->next) { + ICalAttach *attach = I_CAL_ATTACH (attachments->data); - if (attach != nullptr) - { - if (i_cal_attach_get_is_url (attach)) + if (attach != nullptr && i_cal_attach_get_is_url (attach)) { const char* url = i_cal_attach_get_url(attach); - if (url != nullptr) + if (url != nullptr) { ret = url; + break; + } } } if (ret.empty()) -- cgit v1.2.3