diff -up urlgrabber-3.0.0/urlgrabber/grabber.py.cleanup urlgrabber-3.0.0/urlgrabber/grabber.py
--- urlgrabber-3.0.0/urlgrabber/grabber.py.cleanup	2007-11-29 10:25:13.000000000 +0000
+++ urlgrabber-3.0.0/urlgrabber/grabber.py	2007-11-29 10:26:15.000000000 +0000
@@ -1204,16 +1204,18 @@ class URLGrabberFileObject:
         bs = 1024*8
         size = 0
 
-        if amount is not None: bs = min(bs, amount - size)
-        block = self.read(bs)
-        size = size + len(block)
-        while block:
-            new_fo.write(block)
+        try:
             if amount is not None: bs = min(bs, amount - size)
             block = self.read(bs)
             size = size + len(block)
+            while block:
+                new_fo.write(block)
+                if amount is not None: bs = min(bs, amount - size)
+                block = self.read(bs)
+                size = size + len(block)
+        finally:
+            new_fo.close()
 
-        new_fo.close()
         try:
             modified_tuple  = self.hdr.getdate_tz('last-modified')
             modified_stamp  = rfc822.mktime_tz(modified_tuple)
