Quellcode durchsuchen

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 vor 5 Jahren
Ursprung
Commit
cee597a728
1 geänderte Dateien mit 1 neuen und 1 gelöschten Zeilen
  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();
         m_buffered_data.clear();
     }
     }
 
 
-    while (can_read_from_fd()) {
+    while (true) {
         char read_buffer[4096];
         char read_buffer[4096];
         int nread = ::read(m_fd, read_buffer, sizeof(read_buffer));
         int nread = ::read(m_fd, read_buffer, sizeof(read_buffer));
         if (nread < 0) {
         if (nread < 0) {