From 7877e512c2f228e0e98340d30cfee44e14c29cd6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anton=20Luka=20=C5=A0ijanec?= Date: Sat, 25 Sep 2021 18:29:34 +0200 Subject: fixed roles --- src/api.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'src/api.c') 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++) { -- cgit v1.2.3