diff --git a/plugins/FeedReader/services/p3FeedReader.cc b/plugins/FeedReader/services/p3FeedReader.cc index 62944a5da..8129a5f31 100644 --- a/plugins/FeedReader/services/p3FeedReader.cc +++ b/plugins/FeedReader/services/p3FeedReader.cc @@ -1555,26 +1555,39 @@ bool p3FeedReader::loadList(std::list& load) } } - /* now sort msgs into feeds */ RsStackMutex stack(mFeedReaderMtx); /********** STACK LOCKED MTX ******/ - std::map::iterator it1; - for (it1 = msgs.begin(); it1 != msgs.end(); ++it1) { + /* check feeds */ + std::map::iterator feedIt; + for (feedIt = mFeeds.begin(); feedIt != mFeeds.end(); ++feedIt) { + RsFeedReaderFeed *feed = feedIt->second; + if (!feed->parentId.empty()) { + /* check parent */ + if (mFeeds.find(feed->parentId) == mFeeds.end()) { + /* parent not found, clear it */ + feed->parentId.clear(); + } + } + } + + /* now sort msgs into feeds */ + std::map::iterator msgIt; + for (msgIt = msgs.begin(); msgIt != msgs.end(); ++msgIt) { uint32_t msgId = 0; - if (sscanf(it1->first.c_str(), "%u", &msgId) == 1) { - std::map::iterator it2 = mFeeds.find(it1->second->feedId); - if (it2 == mFeeds.end()) { + if (sscanf(msgIt->first.c_str(), "%u", &msgId) == 1) { + feedIt = mFeeds.find(msgIt->second->feedId); + if (feedIt == mFeeds.end()) { /* feed does not exist exists */ - delete it1->second; + delete msgIt->second; continue; } - it2->second->msgs[it1->first] = it1->second; + feedIt->second->msgs[msgIt->first] = msgIt->second; if (msgId + 1 > mNextMsgId) { mNextMsgId = msgId + 1; } } else { /* invalid msg id */ - delete(it1->second); + delete(msgIt->second); } } diff --git a/plugins/FeedReader/services/p3FeedReaderThread.cc b/plugins/FeedReader/services/p3FeedReaderThread.cc index 2a8521f6c..423bc7dd4 100644 --- a/plugins/FeedReader/services/p3FeedReaderThread.cc +++ b/plugins/FeedReader/services/p3FeedReaderThread.cc @@ -70,6 +70,9 @@ void p3FeedReaderThread::run() RsFeedReaderErrorState result = download(feed, content, icon, errorString); if (result == RS_FEED_ERRORSTATE_OK) { + /* trim */ + XMLWrapper::trimString(content); + mFeedReader->onDownloadSuccess(feed.feedId, content, icon); } else { mFeedReader->onDownloadError(feed.feedId, result, errorString);