diff options
author | Anton Luka Šijanec <anton@sijanec.eu> | 2021-09-25 18:29:34 +0200 |
---|---|---|
committer | Anton Luka Šijanec <anton@sijanec.eu> | 2021-09-25 18:29:34 +0200 |
commit | 7877e512c2f228e0e98340d30cfee44e14c29cd6 (patch) | |
tree | b8d47722a7102c1a504f2aae827a271b23d9a1f2 /src/api.c | |
parent | i hope it's fixed now (magic?), though there's still a memory leak (diff) | |
download | discord.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.c | 11 |
1 files changed, 10 insertions, 1 deletions
@@ -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++) { |