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

Change InternalReadLine to always use buffer.read() return value

This is mostly a documentation issue, as the size we want to
read is always less than or equal to the size of the buffer,
so the return value will be the same as the size argument.

Nonetheless, people wondered about it, and it seems clearer
to just always use the return value.
Julian Andres Klode пре 10 година
родитељ
комит
a9024b1be2
1 измењених фајлова са 8 додато и 12 уклоњено
  1. 8 12
      apt-pkg/contrib/fileutl.cc

+ 8 - 12
apt-pkg/contrib/fileutl.cc

@@ -932,7 +932,7 @@ protected:
 	 bool empty() { return bufferend <= bufferstart; }
 	 bool empty() { return bufferend <= bufferstart; }
 	 unsigned long long size() { return bufferend-bufferstart; }
 	 unsigned long long size() { return bufferend-bufferstart; }
 	 void reset() { bufferend = bufferstart = 0; }
 	 void reset() { bufferend = bufferstart = 0; }
-	 ssize_t read(void *to, unsigned long long requested_size)
+	 ssize_t read(void *to, unsigned long long requested_size) APT_MUSTCHECK
 	 {
 	 {
 	    if (size() < requested_size)
 	    if (size() < requested_size)
 	       requested_size = size();
 	       requested_size = size();
@@ -995,19 +995,15 @@ public:
 
 
 	 unsigned long long const OutputSize = std::min(Size, buffer.size());
 	 unsigned long long const OutputSize = std::min(Size, buffer.size());
 	 char const * const newline = static_cast<char const * const>(memchr(buffer.get(), '\n', OutputSize));
 	 char const * const newline = static_cast<char const * const>(memchr(buffer.get(), '\n', OutputSize));
+	 // Read until end of line or up to Size bytes from the buffer.
+	 unsigned long long actualread = buffer.read(To,
+						     (newline != nullptr)
+						     ? (newline - buffer.get()) + 1
+						     : OutputSize);
+	 To += actualread;
+	 Size -= actualread;
 	 if (newline != nullptr)
 	 if (newline != nullptr)
-	 {
-	    size_t length = (newline - buffer.get()) + 1;
-	    buffer.read(To, length);
-	    To += length;
 	    break;
 	    break;
-	 }
-	 else
-	 {
-	    buffer.read(To, OutputSize);
-	    To += OutputSize;
-	    Size -= OutputSize;
-	 }
       } while (Size > 0);
       } while (Size > 0);
       *To = '\0';
       *To = '\0';
       return InitialTo;
       return InitialTo;