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));
}
* 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));
* 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));