diff --git a/libc3/facts.c b/libc3/facts.c
index 74f553d..a008ea9 100644
--- a/libc3/facts.c
+++ b/libc3/facts.c
@@ -356,6 +356,8 @@ void facts_lock_r (s_facts *facts)
pthread_t thread;
assert(facts);
thread = pthread_self();
+ if (facts->rwlock_thread == thread)
+ return;
if (pthread_rwlock_rdlock(&facts->rwlock))
errx(1, "facts_lock_r: pthread_rwlock_rdlock");
}