MINOR: buffers: make buffer_pointer() support negative pointers too

It's more handy if the buffer_pointer() function also handles negative pointers.
This commit is contained in:
Willy Tarreau 2011-11-28 16:04:29 +01:00
parent fe4b1f9dc0
commit 71730256a3
1 changed files with 4 additions and 2 deletions

View File

@ -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;
}