fixup: invert nesting of context managers

cleaner teardown of contexts:

close mmap, close src_fd (reading), close dst_fd (and rename)

maybe it was not a real problem to rename a still open-for-reading / mmapped file,
but in any case it is cleaner like now.
This commit is contained in:
Thomas Waldmann 2020-09-06 12:33:14 +02:00
parent b198160257
commit bf8706b741
1 changed files with 11 additions and 11 deletions

View File

@ -1492,14 +1492,14 @@ class LoggedIO:
with SaveFile(filename, binary=True) as fd:
fd.write(MAGIC)
return
with open(filename, 'rb') as src_fd:
# note: file must not be 0 size or mmap() will crash.
with mmap.mmap(src_fd.fileno(), 0, access=mmap.ACCESS_READ) as mm:
# memoryview context manager is problematic, see https://bugs.python.org/issue35686
data = memoryview(mm)
d = data
try:
with SaveFile(filename, binary=True) as dst_fd:
with SaveFile(filename, binary=True) as dst_fd:
with open(filename, 'rb') as src_fd:
# note: file must not be 0 size or mmap() will crash.
with mmap.mmap(src_fd.fileno(), 0, access=mmap.ACCESS_READ) as mm:
# memoryview context manager is problematic, see https://bugs.python.org/issue35686
data = memoryview(mm)
d = data
try:
dst_fd.write(MAGIC)
while len(d) >= self.header_fmt.size:
crc, size, tag = self.header_fmt.unpack(d[:self.header_fmt.size])
@ -1511,9 +1511,9 @@ class LoggedIO:
continue
dst_fd.write(d[:size])
d = d[size:]
finally:
del d
data.release()
finally:
del d
data.release()
def read(self, segment, offset, id, read_data=True):
"""