Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 37410aa

Browse files
committed
Make uuid.py thread-safe. Fix by Yuri Ginsburg.
1 parent fd53fd6 commit 37410aa

1 file changed

Lines changed: 4 additions & 1 deletion

File tree

Lib/uuid.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -414,7 +414,6 @@ def _netbios_getnode():
414414
_uuid_generate_random = _uuid_generate_time = _UuidCreate = None
415415
try:
416416
import ctypes, ctypes.util
417-
_buffer = ctypes.create_string_buffer(16)
418417

419418
# The uuid_generate_* routines are provided by libuuid on at least
420419
# Linux and FreeBSD, and provided by libc on Mac OS X.
@@ -447,11 +446,13 @@ def _netbios_getnode():
447446

448447
def _unixdll_getnode():
449448
"""Get the hardware address on Unix using ctypes."""
449+
_buffer = ctypes.create_string_buffer(16)
450450
_uuid_generate_time(_buffer)
451451
return UUID(bytes=bytes_(_buffer.raw)).node
452452

453453
def _windll_getnode():
454454
"""Get the hardware address on Windows using ctypes."""
455+
_buffer = ctypes.create_string_buffer(16)
455456
if _UuidCreate(_buffer) == 0:
456457
return UUID(bytes=bytes_(_buffer.raw)).node
457458

@@ -499,6 +500,7 @@ def uuid1(node=None, clock_seq=None):
499500

500501
# When the system provides a version-1 UUID generator, use it (but don't
501502
# use UuidCreate here because its UUIDs don't conform to RFC 4122).
503+
_buffer = ctypes.create_string_buffer(16)
502504
if _uuid_generate_time and node is clock_seq is None:
503505
_uuid_generate_time(_buffer)
504506
return UUID(bytes=bytes_(_buffer.raw))
@@ -535,6 +537,7 @@ def uuid4():
535537
"""Generate a random UUID."""
536538

537539
# When the system provides a version-4 UUID generator, use it.
540+
_buffer = ctypes.create_string_buffer(16)
538541
if _uuid_generate_random:
539542
_uuid_generate_random(_buffer)
540543
return UUID(bytes=bytes_(_buffer.raw))

0 commit comments

Comments
 (0)