Преглед изворни кода

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
Julian Andres Klode пре 10 година
родитељ
комит
47fcfff8a5
1 измењених фајлова са 3 додато и 3 уклоњено
  1. 3 3
      apt-pkg/contrib/fileutl.cc

+ 3 - 3
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;