#1389051, #1092502: fix excessively large allocations when using read() on a socket
diff --git a/Lib/socket.py b/Lib/socket.py
index 0082e76..f79b282 100644
--- a/Lib/socket.py
+++ b/Lib/socket.py
@@ -305,7 +305,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
diff --git a/Misc/NEWS b/Misc/NEWS
index 0926e7f..e04cb3c 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -18,6 +18,9 @@
 - Bug #1389051: imaplib causes excessive memory fragmentation when reading
   large messages.
 
+- Bug #1389051, 1092502: fix excessively large memory allocations when
+  calling .read() on a socket object wrapped with makefile(). 
+
 - Bug #1433694: minidom's .normalize() failed to set .nextSibling for
   last child element.