--- a/src/pycurl.c	
+++ a/src/pycurl.c	
@@ -1452,6 +1452,7 @@ do_curl_reset(CurlObject *self)
         }
     }
 
+    Py_INCREF(Py_None);
     return Py_None;
 }
 
--- a/tests/test_internals.py	
+++ a/tests/test_internals.py	
@@ -245,6 +245,11 @@ if 1 and gc:
     if opts.verbose >= 1:
         print "Tracked objects:", len(gc.get_objects())
 
+if 1:
+    # Ensure that the refcounting error in "reset" is fixed:
+    for i in xrange(100000):
+        c = Curl()
+        c.reset()
 
 # /***********************************************************************
 # // done
