Просмотр исходного кода

Fix PackData resource leaks in BundleClient and test_pack

Jelmer Vernooij 3 недель назад
Родитель
Сommit
b43813734f
2 измененных файлов с 6 добавлено и 2 удалено
  1. 4 1
      dulwich/client.py
  2. 2 1
      tests/test_pack.py

+ 4 - 1
dulwich/client.py

@@ -2924,7 +2924,10 @@ class BundleClient(GitClient):
 
         pack_io = BytesIO(pack_bytes)
         pack_data = PackData.from_file(pack_io, object_format=DEFAULT_OBJECT_FORMAT)
-        target.object_store.add_pack_data(len(pack_data), pack_data.iter_unpacked())
+        try:
+            target.object_store.add_pack_data(len(pack_data), pack_data.iter_unpacked())
+        finally:
+            pack_data.close()
 
         # Apply ref filtering if specified
         if ref_prefix:

+ 2 - 1
tests/test_pack.py

@@ -478,7 +478,8 @@ class TestPackData(PackTests):
             self.datadir, "pack-{}.pack".format(pack1_sha.decode("ascii"))
         )
         with open(path, "rb") as f:
-            PackData.from_file(f, DEFAULT_OBJECT_FORMAT, os.path.getsize(path))
+            pack_data = PackData.from_file(f, DEFAULT_OBJECT_FORMAT, os.path.getsize(path))
+            pack_data.close()
 
     def test_pack_len(self) -> None:
         with self.get_pack_data(pack1_sha) as p: