From 71730256a3a50ecc2557a857e7801e53226da6ea Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Mon, 28 Nov 2011 16:04:29 +0100 Subject: MINOR: buffers: make buffer_pointer() support negative pointers too It's more handy if the buffer_pointer() function also handles negative pointers. --- include/proto/buffers.h | 6 ++++-- 1 files changed, 4 insertions(+), 2 deletions(-) diff --git a/include/proto/buffers.h b/include/proto/buffers.h index 0a2da34..0d395a0 100644 --- a/include/proto/buffers.h +++ b/include/proto/buffers.h @@ -186,12 +186,14 @@ static inline int buffer_contig_space_with_res(struct buffer *buf, int res) /* Normalizes a pointer which is supposed to be relative to the beginning of a * buffer, so that wrapping is correctly handled. The intent is to use this * when increasing a pointer. Note that the wrapping test is only performed - * once, so the original pointer must be between ->data and ->data+2*size - 1, + * once, so the original pointer must be between ->data-size and ->data+2*size-1, * otherwise an invalid pointer might be returned. */ static inline char *buffer_pointer(const struct buffer *buf, char *ptr) { - if (ptr - buf->size >= buf->data) + if (ptr < buf->data) + ptr += buf->size; + else if (ptr - buf->size >= buf->data) ptr -= buf->size; return ptr; } -- 1.7.2.3