From c08346000b2dc8d9130353d5a1b0982f2529e77d Mon Sep 17 00:00:00 2001 From: ZyX Date: Sun, 23 Feb 2014 15:37:13 +0400 Subject: [PATCH] Add after_update argument to prevent infinite recursion Just in case. --- powerline/lib/threaded.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/powerline/lib/threaded.py b/powerline/lib/threaded.py index d8f47e71..cae9c991 100644 --- a/powerline/lib/threaded.py +++ b/powerline/lib/threaded.py @@ -157,7 +157,7 @@ class KwThreadedSegment(ThreadedSegment): def key(**kwargs): return frozenset(kwargs.items()) - def render(self, update_value, update_first, key=None, **kwargs): + def render(self, update_value, update_first, key=None, after_update=False, **kwargs): queries, crashed = update_value if key is None: key = self.key(**kwargs) @@ -170,7 +170,17 @@ class KwThreadedSegment(ThreadedSegment): with self.write_lock: self.new_queries.append(key) if self.do_update_first or self.run_once: - return self.render(update_value=self.get_update_value(True), update_first=False, key=key, **kwargs) + if after_update: + self.error('internal error: value was not computed even though update_first was set') + update_state = None + else: + return self.render( + update_value=self.get_update_value(True), + update_first=False, + key=key, + after_update=True, + **kwargs + ) else: update_state = None