From 64333fe3ae88de3faeb22b419d02d034c4ef2882 Mon Sep 17 00:00:00 2001 From: Samuele Kaplun Date: Tue, 10 Feb 2015 09:38:24 +0100 Subject: [PATCH] BibIndex: infinite loop in beautify_range_list * Fixes infinite loop in beautify_range_list() function that was triggered in particular conditions. Signed-off-by: Samuele Kaplun --- modules/bibindex/lib/bibindex_engine.py | 18 ++++-------------- 1 file changed, 4 insertions(+), 14 deletions(-) diff --git a/modules/bibindex/lib/bibindex_engine.py b/modules/bibindex/lib/bibindex_engine.py index 34a7501f80..0df53eee65 100644 --- a/modules/bibindex/lib/bibindex_engine.py +++ b/modules/bibindex/lib/bibindex_engine.py @@ -394,20 +394,10 @@ def create_range_list(res): def beautify_range_list(range_list): """Returns a non overlapping, maximal range list""" - ret_list = [] - for new in range_list: - found = 0 - for old in ret_list: - if new[0] <= old[0] <= new[1] + 1 or new[0] - 1 <= old[1] <= new[1]: - old[0] = min(old[0], new[0]) - old[1] = max(old[1], new[1]) - found = 1 - break - - if not found: - ret_list.append(new) - - return ret_list + tmp_list = intbitset() + for range in range_list: + tmp_list |= intbitset(xrange(range[0], range[1]+1)) + return create_range_list(tmp_list) def truncate_index_table(index_name):