From: Evan Hunt Date: Sat, 15 Nov 2014 08:56:17 +0000 (-0800) Subject: [master] buffer ATF test was failing X-Git-Tag: v9.11.0a1~1268 X-Git-Url: http://git.ipfire.org/gitweb/?a=commitdiff_plain;h=907e01d6f391eb00f9f923eab1df401ce59278f4;p=thirdparty%2Fbind9.git [master] buffer ATF test was failing --- diff --git a/lib/isc/buffer.c b/lib/isc/buffer.c index 848888ea631..5d2b4fba4c7 100644 --- a/lib/isc/buffer.c +++ b/lib/isc/buffer.c @@ -505,20 +505,21 @@ isc_buffer_reserve(isc_buffer_t **dynbuffer, unsigned int size) { REQUIRE(ISC_BUFFER_VALID(*dynbuffer)); len = (*dynbuffer)->length; - if ((len - (*dynbuffer)->used) > size) + if ((len - (*dynbuffer)->used) >= size) return (ISC_R_SUCCESS); /* Round to nearest buffer size increment */ - len += size; + len = size + (*dynbuffer)->used; len = (len + ISC_BUFFER_INCR - 1 - ((len - 1) % ISC_BUFFER_INCR)); /* Cap at UINT_MAX */ if (len > UINT_MAX) { len = UINT_MAX; - if ((len - (*dynbuffer)->used) < size) - return (ISC_R_NOMEMORY); } + if ((len - (*dynbuffer)->used) < size) + return (ISC_R_NOMEMORY); + return (isc_buffer_reallocate(dynbuffer, (unsigned int) len)); } diff --git a/lib/isc/tests/buffer_test.c b/lib/isc/tests/buffer_test.c index d1b27834d94..b2b267b408c 100644 --- a/lib/isc/tests/buffer_test.c +++ b/lib/isc/tests/buffer_test.c @@ -67,7 +67,7 @@ ATF_TC_BODY(isc_buffer_reserve, tc) { * 2048 bytes should already be available, so this call does * nothing. */ - result = isc_buffer_reserve(&b, 2048); + result = isc_buffer_reserve(&b, 2000); ATF_CHECK_EQ(result, ISC_R_SUCCESS); ATF_CHECK(ISC_BUFFER_VALID(b)); @@ -77,7 +77,7 @@ ATF_TC_BODY(isc_buffer_reserve, tc) { * This call should grow it to 4096 bytes as only 2048 bytes are * available in the buffer. */ - result = isc_buffer_reserve(&b, 2049); + result = isc_buffer_reserve(&b, 3000); ATF_CHECK_EQ(result, ISC_R_SUCCESS); ATF_CHECK(ISC_BUFFER_VALID(b));