Join GitHub today
GitHub is home to over 40 million developers working together to host and review code, manage projects, and build software together.
Sign upbpo-39068 guard _b85chars2 initialization #17627
Conversation
This comment has been minimized.
This comment has been minimized.
the-knights-who-say-ni
commented
Dec 16, 2019
Hello, and thanks for your contribution! I'm a bot set up to make sure that the project can legally accept this contribution by verifying everyone involved has signed the PSF contributor agreement (CLA). Recognized GitHub usernameWe couldn't find a bugs.python.org (b.p.o) account corresponding to the following GitHub usernames: This might be simply due to a missing "GitHub Name" entry in one's b.p.o account settings. This is necessary for legal reasons before we can look at this contribution. Please follow the steps outlined in the CPython devguide to rectify this issue. You can check yourself to see if the CLA has been received. Thanks again for the contribution, we look forward to reviewing it! |
@@ -430,6 +430,7 @@ def b85encode(b, pad=False): | |||
# if the function is never called | |||
if _b85chars is None: |
This comment has been minimized.
This comment has been minimized.
serhiy-storchaka
Dec 16, 2019
Member
It is enough to check if _b85chars2 is None
here.
These checks are cheap, but they are performed at every b85encode()
call. Lesser checks is better.
a85encode()
should be updated too. And may be other functions if they initialize two or more globals.
This comment has been minimized.
This comment has been minimized.
drmonkeysee
Dec 16, 2019
•
Author
done. visually scanned the file for other cases but only found the additional one in a85encode()
.
drmonkeysee commentedDec 16, 2019
•
edited by bedevere-bot
Under multi-threading scenarios a race condition may occur where a thread sees an initialized
_b85chars
table but an uninitialized_b85chars2
table due to the guard only checking the first table.This causes an exception like:
https://bugs.python.org/issue39068