Browse Source

LibCore: Make CIODevice::read_all() actually read all data

It used to only read the data it could get without blocking. Andreas says this
was intentional, but it's counterintuitive and no code that uses read_all()
actually expects it to return only a part of the data. So change it to always
read data until an EOF (or an error) is received.
Sergey Bugaev 5 years ago
parent
commit
cee597a728
1 changed files with 1 additions and 1 deletions
  1. 1 1
      Libraries/LibCore/CIODevice.cpp

+ 1 - 1
Libraries/LibCore/CIODevice.cpp

@@ -124,7 +124,7 @@ ByteBuffer CIODevice::read_all()
         m_buffered_data.clear();
     }
 
-    while (can_read_from_fd()) {
+    while (true) {
         char read_buffer[4096];
         int nread = ::read(m_fd, read_buffer, sizeof(read_buffer));
         if (nread < 0) {