Blob Blame History Raw
From 2d3d0aeead0ac1b1f5e9fa5ef351aac8b14b5da9 Mon Sep 17 00:00:00 2001
From: Simon McVittie <smcv@debian.org>
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: