diff options
author | Nikos Mavrogiannopoulos <nmav@gnutls.org> | 2011-04-04 21:51:59 +0200 |
---|---|---|
committer | Nikos Mavrogiannopoulos <nmav@gnutls.org> | 2011-04-04 21:51:59 +0200 |
commit | 47279574677fcd1612470604edf3909c7540c668 (patch) | |
tree | 9a634d9cf12c899d40b28c6d41448edaae0b4e21 | |
parent | 28b72bb6d213e5c1f142da713fb9bd5579e493f5 (diff) | |
download | gnutls-47279574677fcd1612470604edf3909c7540c668.tar.gz |
Combined dequeue with remove_front() and pop_first().
-rw-r--r-- | lib/gnutls_mbuffers.c | 35 |
1 files changed, 9 insertions, 26 deletions
diff --git a/lib/gnutls_mbuffers.c b/lib/gnutls_mbuffers.c index 2eff937b37..415658f249 100644 --- a/lib/gnutls_mbuffers.c +++ b/lib/gnutls_mbuffers.c @@ -90,11 +90,11 @@ void _mbuffer_enqueue (mbuffer_head_st * buf, mbuffer_st * bufel) { bufel->next = NULL; + bufel->prev = buf->tail; buf->length++; buf->byte_length += bufel->msg.size - bufel->mark; - bufel->prev = buf->tail; if (buf->tail != NULL) buf->tail->next = bufel; else @@ -122,6 +122,9 @@ mbuffer_st* ret = bufel->next; if (bufel->prev) bufel->prev->next = bufel->next; + if (bufel->next) + bufel->next->prev = NULL; + buf->length--; buf->byte_length -= bufel->msg.size - bufel->mark; @@ -145,15 +148,7 @@ _mbuffer_head_pop_first (mbuffer_head_st * buf) if (buf->head == NULL) return NULL; - buf->head = bufel->next; - if (bufel->next) - bufel->next->prev = NULL; - - buf->byte_length -= (bufel->msg.size - bufel->mark); - buf->length -= 1; - - if (!buf->head) - buf->tail = NULL; + _mbuffer_dequeue(buf, bufel); return bufel; } @@ -222,22 +217,13 @@ _mbuffer_head_get_next (mbuffer_st * cur, gnutls_datum_t * msg) static inline void remove_front (mbuffer_head_st * buf) { - mbuffer_st *bufel; + mbuffer_st *bufel = buf->head; - if (!buf->head) + if (!bufel) return; - bufel = buf->head; - buf->head = bufel->next; - if (bufel->next) - bufel->next->prev = NULL; - - buf->byte_length -= (bufel->msg.size - bufel->mark); - buf->length -= 1; + _mbuffer_dequeue(buf, bufel); gnutls_free (bufel); - - if (!buf->head) - buf->tail = NULL; } /* Remove a specified number of bytes from the start of the buffer. @@ -301,7 +287,7 @@ _mbuffer_alloc (size_t payload_size, size_t maximum_size) { mbuffer_st *st; - st = gnutls_malloc (maximum_size + sizeof (mbuffer_st)); + st = gnutls_calloc (1, maximum_size + sizeof (mbuffer_st)); if (st == NULL) { gnutls_assert (); @@ -311,9 +297,6 @@ _mbuffer_alloc (size_t payload_size, size_t maximum_size) /* payload points after the mbuffer_st structure */ st->msg.data = (opaque *) st + sizeof (mbuffer_st); st->msg.size = payload_size; - st->mark = 0; - st->user_mark = 0; - st->next = NULL; st->maximum_size = maximum_size; return st; |