introduce auto_jid and refcounting in Jid

This also fixes a memory leak from within `_handle_groupchat()` in [0].

[0] src/xmpp/message.c

Signed-off-by: Steffen Jaeckel <jaeckel-floss@eyet-services.de>
This commit is contained in:
Steffen Jaeckel
2023-01-09 18:00:47 +01:00
parent 1a85448bf2
commit b535921484
3 changed files with 36 additions and 26 deletions

View File

@@ -40,6 +40,7 @@
struct jid_t
{
unsigned int refcnt;
char* str;
char* localpart;
char* domainpart;
@@ -53,6 +54,10 @@ typedef struct jid_t Jid;
Jid* jid_create(const gchar* const str);
Jid* jid_create_from_bare_and_resource(const char* const barejid, const char* const resource);
void jid_destroy(Jid* jid);
void jid_ref(Jid* jid);
void jid_auto_destroy(Jid** str);
#define auto_jid __attribute__((__cleanup__(jid_auto_destroy)))
gboolean jid_is_valid_room_form(Jid* jid);
char* create_fulljid(const char* const barejid, const char* const resource);