Fix yield in try/finally for python2.4 compatibility.
authorDave Borowitz <dborowitz@google.com>
Mon, 22 Mar 2010 21:59:48 +0000 (14:59 -0700)
committerDave Borowitz <dborowitz@google.com>
Fri, 30 Apr 2010 16:42:54 +0000 (09:42 -0700)
A yield statement in a try block with a finally clause was not supported
prior to python2.5; the same effect can be achieved with either a bare
except clause or an additional level of nesting.

Change-Id: Ib13a9f492feb69184a48e1013b6461ea643f0ebd

dulwich/file.py
dulwich/web.py

index 5545dd4c394656a8f3e3d326d28432de4ceffd4a..9bd4892f3aa2f6d63e61943554e46d1534091c68 100644 (file)
@@ -160,12 +160,13 @@ class _GitFile(object):
             return
         self._file.close()
         try:
-            os.rename(self._lockfilename, self._filename)
-        except OSError, e:
-            # Windows versions prior to Vista don't support atomic renames
-            if e.errno != errno.EEXIST:
-                raise
-            fancy_rename(self._lockfilename, self._filename)
+            try:
+                os.rename(self._lockfilename, self._filename)
+            except OSError, e:
+                # Windows versions prior to Vista don't support atomic renames
+                if e.errno != errno.EEXIST:
+                    raise
+                fancy_rename(self._lockfilename, self._filename)
         finally:
             self.abort()
 
index ee753b315052014f6b01733248b58e3128d6fa58..9e8ed224ebed5fde3d2415c705eaafa090b19e1c 100644 (file)
@@ -80,17 +80,19 @@ def send_file(req, f, content_type):
         yield req.not_found('File not found')
         return
     try:
-        try:
-            req.respond(HTTP_OK, content_type)
-            while True:
-                data = f.read(10240)
-                if not data:
-                    break
-                yield data
-        except IOError:
-            yield req.not_found('Error reading file')
-    finally:
+        req.respond(HTTP_OK, content_type)
+        while True:
+            data = f.read(10240)
+            if not data:
+                break
+            yield data
+        f.close()
+    except IOError:
+        f.close()
+        yield req.not_found('Error reading file')
+    except:
         f.close()
+        raise
 
 
 def get_text_file(req, backend, mat):