From 02f3daebbe966644cc848a4c8d7c0cf78373285d Mon Sep 17 00:00:00 2001 From: Thomas Waldmann Date: Sun, 6 Jan 2019 02:11:36 +0100 Subject: [PATCH] use a contextmanager to ensure correct memoryview release see #4243. --- src/borg/repository.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/borg/repository.py b/src/borg/repository.py index f83e6bedd..e04c0b8cb 100644 --- a/src/borg/repository.py +++ b/src/borg/repository.py @@ -1395,8 +1395,7 @@ class LoggedIO: with open(backup_filename, 'rb') as backup_fd: # note: file must not be 0 size (windows can't create 0 size mapping) with mmap.mmap(backup_fd.fileno(), 0, access=mmap.ACCESS_READ) as mm: - data = memoryview(mm) - with open(filename, 'wb') as fd: + with memoryview(mm) as data, open(filename, 'wb') as fd: fd.write(MAGIC) while len(data) >= self.header_fmt.size: crc, size, tag = self.header_fmt.unpack(data[:self.header_fmt.size]) @@ -1408,7 +1407,6 @@ class LoggedIO: continue fd.write(data[:size]) data = data[size:] - data.release() def read(self, segment, offset, id, read_data=True): """