From 2d3d0aeead0ac1b1f5e9fa5ef351aac8b14b5da9 Mon Sep 17 00:00:00 2001 From: Simon McVittie Date: Mon, 10 Dec 2018 15:23:47 +0000 Subject: [PATCH] Filemap: catch StopIteration from next(iterator) In Python >= 3.7, if code in a generator raises StopIteration, it is transformed into a RuntimeError instead of terminating the generator gracefully. Closes: https://github.com/intel/bmap-tools/issues/57 Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=915686 --- bmaptools/Filemap.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/bmaptools/Filemap.py b/bmaptools/Filemap.py index 3e56798..e06e654 100644 --- a/bmaptools/Filemap.py +++ b/bmaptools/Filemap.py @@ -476,7 +476,11 @@ def get_mapped_ranges(self, start, count): _log.debug("FilemapFiemap: get_mapped_ranges(%d, %d(%d))" % (start, count, start + count - 1)) iterator = self._do_get_mapped_ranges(start, count) - first_prev, last_prev = next(iterator) + + try: + first_prev, last_prev = next(iterator) + except StopIteration: + return for first, last in iterator: if last_prev == first - 1: