From: Duprat Date: Thu, 22 May 2025 16:46:57 +0000 (+0200) Subject: gh-134322: Fix `repr(threading.RLock)` (#134389) X-Git-Tag: v3.15.0a1~1567 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=fade146cfb1616ad7b3b918bedb86756dedf79e6;p=thirdparty%2FPython%2Fcpython.git gh-134322: Fix `repr(threading.RLock)` (#134389) Fix the `__repr__` value of `threading.RLock` from `_thread` module, when just created. --- diff --git a/Lib/test/lock_tests.py b/Lib/test/lock_tests.py index 850450c1e81a..691029a1a54f 100644 --- a/Lib/test/lock_tests.py +++ b/Lib/test/lock_tests.py @@ -337,6 +337,26 @@ class RLockTests(BaseLockTests): """ Tests for recursive locks. """ + def test_repr_count(self): + # see gh-134322: check that count values are correct: + # when a rlock is just created, + # in a second thread when rlock is acquired in the main thread. + lock = self.locktype() + self.assertIn("count=0", repr(lock)) + self.assertIn("lock.thread; int locked = rlock_locked_impl(self); - size_t count = self->lock.level + 1; + size_t count; + if (locked) { + count = self->lock.level + 1; + } + else { + count = 0; + } return PyUnicode_FromFormat( "<%s %s object owner=%" PY_FORMAT_THREAD_IDENT_T " count=%zu at %p>", locked ? "locked" : "unlocked",