Backport of 64903.
diff --git a/Lib/dummy_thread.py b/Lib/dummy_thread.py
index a72c927..fac5720 100644
--- a/Lib/dummy_thread.py
+++ b/Lib/dummy_thread.py
@@ -107,18 +107,15 @@
aren't triggered and throw a little fit.
"""
- if waitflag is None:
+ if waitflag is None or waitflag:
self.locked_status = True
- return None
- elif not waitflag:
+ return True
+ else:
if not self.locked_status:
self.locked_status = True
return True
else:
return False
- else:
- self.locked_status = True
- return True
__enter__ = acquire
diff --git a/Lib/test/test_dummy_thread.py b/Lib/test/test_dummy_thread.py
index f274e0a..58faeb4 100644
--- a/Lib/test/test_dummy_thread.py
+++ b/Lib/test/test_dummy_thread.py
@@ -60,6 +60,7 @@
#Make sure that an unconditional locking returns True.
self.failUnless(self.lock.acquire(1) is True,
"Unconditional locking did not return True.")
+ self.failUnless(self.lock.acquire() is True)
def test_uncond_acquire_blocking(self):
#Make sure that unconditional acquiring of a locked lock blocks.
diff --git a/Misc/NEWS b/Misc/NEWS
index c5cf068..fa9c9a6 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -59,6 +59,9 @@
Library
-------
+- Issue #3339: dummy_thread.acquire() could return None which is not a valid
+ return value.
+
- Issue #3116 and #1792: Fix quadratic behavior in marshal.dumps().
- Issue #2682: ctypes callback functions no longer contain a cyclic