Browse Source

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
debian/1.8.y
Julian Andres Klode 6 years ago
parent
commit
47fcfff8a5
  1. 6
      apt-pkg/contrib/fileutl.cc

6
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;

Loading…
Cancel
Save