#1389051, #1092502: fix excessively large allocations when using read() on a socket
diff --git a/Lib/socket.py b/Lib/socket.py
index 6b4b743..2ca8ff6 100644
--- a/Lib/socket.py
+++ b/Lib/socket.py
@@ -328,7 +328,7 @@
             self._rbuf = ""
             while True:
                 left = size - buf_len
-                recv_size = max(self._rbufsize, left)
+                recv_size = min(self._rbufsize, left)
                 data = self._sock.recv(recv_size)
                 if not data:
                     break