From: Willy Tarreau Date: Mon, 28 Nov 2011 15:04:29 +0000 (+0100) Subject: MINOR: buffers: make buffer_pointer() support negative pointers too X-Git-Tag: v1.5-dev8~75 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=71730256a3a50ecc2557a857e7801e53226da6ea;p=thirdparty%2Fhaproxy.git MINOR: buffers: make buffer_pointer() support negative pointers too It's more handy if the buffer_pointer() function also handles negative pointers. --- diff --git a/include/proto/buffers.h b/include/proto/buffers.h index 0a2da34984..0d395a0773 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; }