From 47fcfff8a50caebe3cd1f2ee19875a2ca8bbeadc Mon Sep 17 00:00:00 2001 From: Julian Andres Klode Date: Mon, 1 Feb 2016 16:25:03 +0100 Subject: simple_buffer::write: Use free() instead of maxsize - size() We want to check whether the amount of free space is smaller than the requested write size. Checking maxsize - size() is incorrect for bufferstart >= 0, as size() = end - start. Gbp-Dch: ignore --- apt-pkg/contrib/fileutl.cc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/apt-pkg/contrib/fileutl.cc b/apt-pkg/contrib/fileutl.cc index 4347c55ad..004df3fe8 100644 --- a/apt-pkg/contrib/fileutl.cc +++ b/apt-pkg/contrib/fileutl.cc @@ -968,9 +968,9 @@ struct APT_HIDDEN simple_buffer { /*{{{*/ } ssize_t write(const void *from, unsigned long long requested_size) APT_MUSTCHECK { - if (buffersize_max - size() < requested_size) - requested_size = buffersize_max - size(); - memcpy(buffer + bufferend, from, requested_size); + if (free() < requested_size) + requested_size = free(); + memcpy(getend(), from, requested_size); bufferend += requested_size; if (bufferstart == bufferend) bufferstart = bufferend = 0; -- cgit v1.2.3