From: Kovid Goyal <kovid@kovidgoyal.net>
Date: Mon, 25 Apr 2022 08:12:00 +0530
Subject: Fix an error on pypy3

Fix #72
---
 mechanize/_urllib2_fork.py | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/mechanize/_urllib2_fork.py b/mechanize/_urllib2_fork.py
index df6bef2..f14f7fc 100644
--- a/mechanize/_urllib2_fork.py
+++ b/mechanize/_urllib2_fork.py
@@ -75,10 +75,16 @@ def md5_digest(data):
 if platform.python_implementation() == 'PyPy':
     def create_readline_wrapper(fh):
         fh.recv = fh.read
-        if not hasattr(fh, '_drop'):
-            fh._drop = lambda: None
-            fh._reuse = lambda: None
-        return socket._fileobject(fh, close=True)
+        if is_py2:
+            if not hasattr(fh, '_drop'):
+                fh._drop = lambda: None
+                fh._reuse = lambda: None
+            ans = socket._fileobject(fh, close=True)
+        else:
+            fh.recv_into = fh.readinto
+            fh._decref_socketios = lambda: None
+            ans = BufferedReader(socket.SocketIO(fh, 'r'))
+        return ans
 else:
     def create_readline_wrapper(fh):
         fh.recv = fh.read
