summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorge Hazan <george.hazan@gmail.com>2023-12-10 18:52:02 +0300
committerGeorge Hazan <george.hazan@gmail.com>2023-12-10 18:52:06 +0300
commit07feb451bf28c855a383b395d1d27eb6e2558b66 (patch)
tree2c4ab0997d23d0ee91e25bd38dea3fb49b159209
parent83d9bcd403cc96cd82059d0e990d207f795343a7 (diff)
fixes #4039 (NewStory: Forward из чата с пустым журналом приводит к падению)
-rw-r--r--plugins/NewStory/src/history_svc.cpp9
-rw-r--r--protocols/VKontakte/src/vk_proto.cpp8
2 files changed, 10 insertions, 7 deletions
diff --git a/plugins/NewStory/src/history_svc.cpp b/plugins/NewStory/src/history_svc.cpp
index e8dc1a154f..ad3d508df6 100644
--- a/plugins/NewStory/src/history_svc.cpp
+++ b/plugins/NewStory/src/history_svc.cpp
@@ -38,11 +38,10 @@ static INT_PTR SvcGetSelection(WPARAM wParam, LPARAM lParam)
auto *pData = (NewstoryListData *)wParam;
auto *pRet = (std::vector<MEVENT>*)lParam;
if (pData && pRet) {
- for (int i = pData->totalCount; i >= 0; i--) {
- auto *p = pData->items.get(i);
- if (p->m_bSelected)
- pRet->push_back(p->hEvent);
- }
+ for (int i = pData->totalCount; i >= 0; i--)
+ if (auto *p = pData->items.get(i))
+ if (p->m_bSelected)
+ pRet->push_back(p->hEvent);
if (pRet->empty() && pData->caret != -1)
if (auto *p = pData->GetItem(pData->caret))
diff --git a/protocols/VKontakte/src/vk_proto.cpp b/protocols/VKontakte/src/vk_proto.cpp
index ca6df00340..372e8690a8 100644
--- a/protocols/VKontakte/src/vk_proto.cpp
+++ b/protocols/VKontakte/src/vk_proto.cpp
@@ -415,9 +415,10 @@ int CVkProto::OnPreBuildContactMenu(WPARAM hContact, LPARAM)
return 0;
}
-int CVkProto::OnPrebuildNSMenu(WPARAM, LPARAM)
+int CVkProto::OnPrebuildNSMenu(WPARAM hContact, LPARAM lParam)
{
- Menu_ShowItem(m_hNewStoryMenuItems[NSMI_FORWARD], true);
+ auto &dbei = *(DB::EventInfo *)lParam;
+ Menu_ShowItem(m_hNewStoryMenuItems[NSMI_FORWARD], hContact != 0 && dbei);
return 0;
}
@@ -431,6 +432,9 @@ INT_PTR CVkProto::SvcNSExecMenu(WPARAM iCommand, LPARAM pHandle)
case NSMI_FORWARD:
{
std::vector<MEVENT> vIds = NS_GetSelection(HANDLE(pHandle));
+ if (vIds.empty())
+ break;
+
wchar_t wszMsg[2048] = L"";
if (auto *pDlg = NS_GetSrmm((HANDLE)pHandle))
GetWindowText(pDlg->GetInput(), wszMsg, 2048);