summaryrefslogtreecommitdiffstats
path: root/src/api.c
diff options
context:
space:
mode:
authorAnton Luka Šijanec <anton@sijanec.eu>2021-09-25 18:29:34 +0200
committerAnton Luka Šijanec <anton@sijanec.eu>2021-09-25 18:29:34 +0200
commit7877e512c2f228e0e98340d30cfee44e14c29cd6 (patch)
treeb8d47722a7102c1a504f2aae827a271b23d9a1f2 /src/api.c
parenti hope it's fixed now (magic?), though there's still a memory leak (diff)
downloaddiscord.c-7877e512c2f228e0e98340d30cfee44e14c29cd6.tar
discord.c-7877e512c2f228e0e98340d30cfee44e14c29cd6.tar.gz
discord.c-7877e512c2f228e0e98340d30cfee44e14c29cd6.tar.bz2
discord.c-7877e512c2f228e0e98340d30cfee44e14c29cd6.tar.lz
discord.c-7877e512c2f228e0e98340d30cfee44e14c29cd6.tar.xz
discord.c-7877e512c2f228e0e98340d30cfee44e14c29cd6.tar.zst
discord.c-7877e512c2f228e0e98340d30cfee44e14c29cd6.zip
Diffstat (limited to 'src/api.c')
-rw-r--r--src/api.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/api.c b/src/api.c
index c405cff..7171e3a 100644
--- a/src/api.c
+++ b/src/api.c
@@ -238,7 +238,11 @@ signed char dc_json_cb (struct lejp_ctx * ctx, char reason) { /* to prevent warn
role = &pass->api_io.guild->role;
while (*role)
role = &(*role)->next;
- *role = pass->api_io.guild->role;
+ if (!dc_find_ll_role(pass->api_io.guild->role, pass->api_io.role->id)) {
+ fprintf(stderr, "new role id=%lld (:\n", pass->api_io.role->id);
+ pass->api_io.role->next = NULL;
+ *role = pass->api_io.role;
+ }
pass->api_io.role->guild = pass->api_io.guild;
if (pass->api_io.role->name && !strncmp(pass->api_io.role->name, "@everyone", strlen(pass->api_io.role->name)))
pass->api_io.role->status |= DC_EVERYONE;
@@ -681,6 +685,11 @@ void dc_api_i (struct dc_api_io i) { /* this function does not call attached fun
}
}
struct dc_api_io dc_api_o (struct dc_api_io i /* for ->program */) {
+ if (!i.program) {
+ i.type = DC_API_STATUS;
+ i.status = DC_USER_ERROR;
+ return i;
+ }
if (i.program->lws_context)
lws_service(i.program->lws_context, 0);
for (size_t x = 0; x < i.program->clients_length; x++) {