summaryrefslogtreecommitdiff
path: root/plugins/NewStory/src/history_array.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/NewStory/src/history_array.cpp')
-rw-r--r--plugins/NewStory/src/history_array.cpp41
1 files changed, 20 insertions, 21 deletions
diff --git a/plugins/NewStory/src/history_array.cpp b/plugins/NewStory/src/history_array.cpp
index 7c55e309e9..33724bdff5 100644
--- a/plugins/NewStory/src/history_array.cpp
+++ b/plugins/NewStory/src/history_array.cpp
@@ -76,29 +76,30 @@ void ItemData::load(bool bFullLoad)
return;
dbe.cbBlob = db_event_getBlobSize(hEvent);
- dbe.pBlob = (PBYTE)mir_calloc(dbe.cbBlob + 1);
- if (db_event_get(hEvent, &dbe))
- return;
-
- bLoaded = true;
+ mir_ptr<BYTE> pData((BYTE *)mir_calloc(dbe.cbBlob + 1));
+ dbe.pBlob = pData;
+ if (!db_event_get(hEvent, &dbe)) {
+ bLoaded = true;
- switch (dbe.eventType) {
- case EVENTTYPE_MESSAGE:
- if (!(dbe.flags & DBEF_SENT)) {
- if (!dbe.markedRead())
- db_event_markRead(hContact, hEvent);
- g_clistApi.pfnRemoveEvent(hContact, hEvent);
- }
- __fallthrough;
+ switch (dbe.eventType) {
+ case EVENTTYPE_MESSAGE:
+ if (!(dbe.flags & DBEF_SENT)) {
+ if (!dbe.markedRead())
+ db_event_markRead(hContact, hEvent);
+ g_clistApi.pfnRemoveEvent(hContact, hEvent);
+ }
+ __fallthrough;
- case EVENTTYPE_STATUSCHANGE:
- wtext = mir_utf8decodeW((char *)dbe.pBlob);
- break;
+ case EVENTTYPE_STATUSCHANGE:
+ wtext = mir_utf8decodeW((char *)dbe.pBlob);
+ break;
- default:
- wtext = DbEvent_GetTextW(&dbe, CP_ACP);
- break;
+ default:
+ wtext = DbEvent_GetTextW(&dbe, CP_ACP);
+ break;
+ }
}
+ dbe.pBlob = nullptr;
}
bool ItemData::isGrouped() const
@@ -115,8 +116,6 @@ bool ItemData::isGrouped() const
ItemData::~ItemData()
{
- if (bLoaded)
- mir_free(dbe.pBlob);
mir_free(wtext);
if (data)
MTextDestroy(data);