]> granicus.if.org Git - python/commitdiff
uuid creation is now threadsafe, backport from py3k rev. 57375.
authorGeorg Brandl <georg@python.org>
Fri, 24 Aug 2007 06:10:01 +0000 (06:10 +0000)
committerGeorg Brandl <georg@python.org>
Fri, 24 Aug 2007 06:10:01 +0000 (06:10 +0000)
Lib/uuid.py
Misc/NEWS

index e21b0700757b345c4310b2c34dbb72103859564a..e1b2f4b881f8144dd80a65a0df4c60df1d28ba75 100644 (file)
@@ -393,7 +393,6 @@ def _netbios_getnode():
 _uuid_generate_random = _uuid_generate_time = _UuidCreate = None
 try:
     import ctypes, ctypes.util
-    _buffer = ctypes.create_string_buffer(16)
 
     # The uuid_generate_* routines are provided by libuuid on at least
     # Linux and FreeBSD, and provided by libc on Mac OS X.
@@ -426,11 +425,13 @@ except:
 
 def _unixdll_getnode():
     """Get the hardware address on Unix using ctypes."""
+    _buffer = ctypes.create_string_buffer(16)
     _uuid_generate_time(_buffer)
     return UUID(bytes=_buffer.raw).node
 
 def _windll_getnode():
     """Get the hardware address on Windows using ctypes."""
+    _buffer = ctypes.create_string_buffer(16)
     if _UuidCreate(_buffer) == 0:
         return UUID(bytes=_buffer.raw).node
 
@@ -478,6 +479,7 @@ def uuid1(node=None, clock_seq=None):
 
     # When the system provides a version-1 UUID generator, use it (but don't
     # use UuidCreate here because its UUIDs don't conform to RFC 4122).
+    _buffer = ctypes.create_string_buffer(16)
     if _uuid_generate_time and node is clock_seq is None:
         _uuid_generate_time(_buffer)
         return UUID(bytes=_buffer.raw)
@@ -514,6 +516,7 @@ def uuid4():
     """Generate a random UUID."""
 
     # When the system provides a version-4 UUID generator, use it.
+    _buffer = ctypes.create_string_buffer(16)
     if _uuid_generate_random:
         _uuid_generate_random(_buffer)
         return UUID(bytes=_buffer.raw)
index 228256e915a9da8572024a8d2a219421955fa45d..b92d9b0906567b182701922444b4e3c1fb1fd198 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -240,6 +240,8 @@ Core and builtins
 Library
 -------
 
+- uuid creation is now threadsafe.
+
 - EUC-KR codec now handles the cheot-ga-keut composed make-up hangul
   syllables.