diff --git a/src/message_queue.c b/src/message_queue.c index 9617763..ae3ce62 100644 --- a/src/message_queue.c +++ b/src/message_queue.c @@ -109,8 +109,9 @@ void cqueue_remove(ToxWindow *self, struct chat_queue *q, uint32_t receipt) free(msg); q->root = next; } else { - msg->prev->next = next; + struct cqueue_msg *prev = msg->prev; free(msg); + prev->next = next; } return; diff --git a/src/message_queue.h b/src/message_queue.h index 7b92c8d..28adb9b 100644 --- a/src/message_queue.h +++ b/src/message_queue.h @@ -41,9 +41,8 @@ struct chat_queue { void cqueue_cleanup(struct chat_queue *q); void cqueue_add(struct chat_queue *q, const char *msg, int len, uint8_t type, uint32_t line_id); -/* Tries to send oldest message in queue. If fails, tries again in CQUEUE_TRY_SEND_INTERVAL seconds */ +/* Tries to send the oldest unsent message in queue. */ void cqueue_try_send(ToxWindow *self, Tox *m, int32_t friendnum); -/* removes root from queue and updates line to show the message was received. - receipt should always be equal to queue root's receipt */ +/* removes message with matching receipt from queue and updates line to show the message was received. */ void cqueue_remove(ToxWindow *self, struct chat_queue *q, uint32_t receipt);