Skip to content

Commit 01a140e

Browse files
committed
Fixed crash on erasing peer search result with pressed sponsored button.
1 parent 6e0ff9b commit 01a140e

File tree

1 file changed

+22
-5
lines changed

1 file changed

+22
-5
lines changed

Telegram/SourceFiles/dialogs/dialogs_inner_widget.cpp

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3273,6 +3273,18 @@ void InnerWidget::showSponsoredMenu(int peerSearchIndex, QPoint globalPos) {
32733273
const auto peer = entry->peer;
32743274
const auto remove = crl::guard(this, [=] {
32753275
_sponsoredRemoved.emplace(peer);
3276+
if (_pressedRightButtonData) {
3277+
for (const auto &result : _peerSearchResults) {
3278+
if (result->peer == peer
3279+
&& result->sponsored
3280+
&& _pressedRightButtonData
3281+
== &result->sponsored->button) {
3282+
_pressedRightButtonData = nullptr;
3283+
_pressedRightButton = false;
3284+
break;
3285+
}
3286+
}
3287+
}
32763288
_peerSearchResults.erase(
32773289
ranges::remove(
32783290
_peerSearchResults,
@@ -3601,12 +3613,17 @@ void InnerWidget::clearSearchResults(bool alsoPeerSearchResults) {
36013613
}
36023614

36033615
void InnerWidget::clearPeerSearchResults() {
3604-
_peerSearchResults.clear();
3605-
if (_pressedRightButtonSponsored) {
3606-
_pressedRightButtonData = nullptr;
3607-
_pressedRightButtonSponsored = false;
3608-
_pressedRightButton = false;
3616+
if (_pressedRightButtonData) {
3617+
for (const auto &result : _peerSearchResults) {
3618+
if (result->sponsored
3619+
&& _pressedRightButtonData == &result->sponsored->button) {
3620+
_pressedRightButtonData = nullptr;
3621+
_pressedRightButton = false;
3622+
break;
3623+
}
3624+
}
36093625
}
3626+
_peerSearchResults.clear();
36103627
}
36113628

36123629
void InnerWidget::clearPreviewResults() {

0 commit comments

Comments
 (0)