mirror of
https://forge.fsky.io/lda/Parsee.git
synced 2026-03-13 15:15:10 +00:00
[FIX] (Try to) fix the memory leak
This commit is contained in:
parent
d585134ce1
commit
17474bda0f
2 changed files with 13 additions and 20 deletions
|
|
@ -122,6 +122,7 @@ ParseeMemberHandler(ParseeData *data, HashMap *event)
|
||||||
Free(avatar);
|
Free(avatar);
|
||||||
Free(name);
|
Free(name);
|
||||||
Free(muc);
|
Free(muc);
|
||||||
|
avatar = NULL;
|
||||||
|
|
||||||
/* TODO: XEP-0084 magic to advertise a new avatar if possible. */
|
/* TODO: XEP-0084 magic to advertise a new avatar if possible. */
|
||||||
}
|
}
|
||||||
|
|
@ -185,6 +186,7 @@ ParseeMemberHandler(ParseeData *data, HashMap *event)
|
||||||
Free(full_jid);
|
Free(full_jid);
|
||||||
}
|
}
|
||||||
Free(chat_id);
|
Free(chat_id);
|
||||||
|
Free(avatar);
|
||||||
Free(mime);
|
Free(mime);
|
||||||
Free(sha);
|
Free(sha);
|
||||||
Free(jid);
|
Free(jid);
|
||||||
|
|
@ -424,7 +426,8 @@ ParseeMessageHandler(ParseeData *data, HashMap *event)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
char *name;
|
char *name, *mime = NULL, *sha = NULL;
|
||||||
|
char *avatar;
|
||||||
/* Try to find the chat ID */
|
/* Try to find the chat ID */
|
||||||
muc_id = ParseeGetMUCID(data, chat_id);
|
muc_id = ParseeGetMUCID(data, chat_id);
|
||||||
if (!chat_id)
|
if (!chat_id)
|
||||||
|
|
@ -434,11 +437,16 @@ ParseeMessageHandler(ParseeData *data, HashMap *event)
|
||||||
|
|
||||||
/* TODO: Avoid using the AS endpoints */
|
/* TODO: Avoid using the AS endpoints */
|
||||||
name = ASGetName(data->config, id, m_sender);
|
name = ASGetName(data->config, id, m_sender);
|
||||||
Free(JoinMUC(data, event, encoded_from, muc_id, name, NULL));
|
avatar = ASGetAvatar(data->config, id, sender);
|
||||||
|
ASGetMIMESHA(data->config, avatar, &mime, &sha);
|
||||||
|
Free(JoinMUC(data, event, encoded_from, muc_id, name, sha));
|
||||||
|
|
||||||
to = muc_id;
|
to = muc_id;
|
||||||
|
|
||||||
|
Free(sha);
|
||||||
|
Free(mime);
|
||||||
Free(name);
|
Free(name);
|
||||||
|
Free(avatar);
|
||||||
}
|
}
|
||||||
if (reply_id)
|
if (reply_id)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -49,7 +49,7 @@ TrimBase64(char *b64)
|
||||||
XMLElement *
|
XMLElement *
|
||||||
GenerateAvatarData(ParseeData *data, char *mxid)
|
GenerateAvatarData(ParseeData *data, char *mxid)
|
||||||
{
|
{
|
||||||
char *mxc, *mime = NULL, *out = NULL, *b64 = NULL;
|
char *mxc = NULL, *mime = NULL, *out = NULL, *b64 = NULL;
|
||||||
XMLElement *elem = NULL, *type, *binval;
|
XMLElement *elem = NULL, *type, *binval;
|
||||||
size_t len = 0;
|
size_t len = 0;
|
||||||
if (!data || !mxid)
|
if (!data || !mxid)
|
||||||
|
|
@ -57,9 +57,10 @@ GenerateAvatarData(ParseeData *data, char *mxid)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* TODO: Use the right room */
|
||||||
mxc = ASGetAvatar(data->config, NULL, mxid);
|
mxc = ASGetAvatar(data->config, NULL, mxid);
|
||||||
|
|
||||||
if (!ASGrab(data->config, mxc, &mime, &out, &len))
|
if (!mxc || !ASGrab(data->config, mxc, &mime, &out, &len))
|
||||||
{
|
{
|
||||||
goto end;
|
goto end;
|
||||||
}
|
}
|
||||||
|
|
@ -449,22 +450,6 @@ IQGet(ParseeData *args, XMLElement *stanza, XMPPThread *thr)
|
||||||
char *mto_link = ParseeGenerateMTO(to_matrix);
|
char *mto_link = ParseeGenerateMTO(to_matrix);
|
||||||
XMLAddAttr(vCard, "xmlns", "vcard-temp");
|
XMLAddAttr(vCard, "xmlns", "vcard-temp");
|
||||||
{
|
{
|
||||||
XMLElement *fn = CreateTagWithText(
|
|
||||||
"FN", name ? name : to_matrix
|
|
||||||
);
|
|
||||||
XMLElement *nick = CreateTagWithText(
|
|
||||||
"NICKNAME", to_matrix
|
|
||||||
);
|
|
||||||
XMLElement *url = CreateTagWithText(
|
|
||||||
"URL", mto_link
|
|
||||||
);
|
|
||||||
|
|
||||||
/* TODO: Maybe abstract the vCard code. */
|
|
||||||
/* TODO: Make a function to just get a user's avatar
|
|
||||||
* automatically. */
|
|
||||||
XMLAddChild(vCard, nick);
|
|
||||||
XMLAddChild(vCard, url);
|
|
||||||
XMLAddChild(vCard, fn);
|
|
||||||
XMLAddChild(vCard, GenerateAvatarData(args, to_matrix));
|
XMLAddChild(vCard, GenerateAvatarData(args, to_matrix));
|
||||||
|
|
||||||
Free(mto_link);
|
Free(mto_link);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue