From 73ccf2216dfe03694f8737bf2ccbc85d0fa179a6 Mon Sep 17 00:00:00 2001 From: Etienne Renault Date: Wed, 28 Mar 2018 16:31:05 +0200 Subject: [PATCH] bloemen: avoid tail-recursive calls * spot/mc/bloemen.hh: here. --- spot/mc/bloemen.hh | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/spot/mc/bloemen.hh b/spot/mc/bloemen.hh index 40b7c2dd7..bfa52f468 100644 --- a/spot/mc/bloemen.hh +++ b/spot/mc/bloemen.hh @@ -161,15 +161,16 @@ namespace spot bool sameset(uf_element* a, uf_element* b) { - uf_element* a_root = find(a); - uf_element* b_root = find(b); - if (a_root == b_root) - return true; + while (true) + { + uf_element* a_root = find(a); + uf_element* b_root = find(b); + if (a_root == b_root) + return true; - if (a_root->parent.load() == a_root) - return false; - - return sameset(a_root, b_root); + if (a_root->parent.load() == a_root) + return false; + } } bool lock_root(uf_element* a)