File tree Expand file tree Collapse file tree 2 files changed +30
-2
lines changed
Expand file tree Collapse file tree 2 files changed +30
-2
lines changed Original file line number Diff line number Diff line change @@ -509,7 +509,7 @@ def _load_system_functions():
509509 pass
510510 elif _uuid is not None :
511511 _generate_time_safe = _uuid .generate_time_safe
512- _has_uuid_generate_time_safe = True
512+ _has_uuid_generate_time_safe = _uuid . has_uuid_generate_time_safe
513513 return
514514
515515 try :
Original file line number Diff line number Diff line change 44#include <uuid/uuid.h>
55
66
7+ /* bpo-11063: libuuid on macOS doesn't provide uuid_generate_time_safe(),
8+ only uuid_generate_time(). */
9+ #ifndef __APPLE__
10+ # define HAVE_TIME_SAFE
11+ #endif
12+
13+
714static PyObject *
815py_uuid_generate_time_safe (void )
916{
17+ #ifdef HAVE_TIME_SAFE
1018 uuid_t out ;
1119 int res ;
1220
1321 res = uuid_generate_time_safe (out );
1422 return Py_BuildValue ("y#i" , (const char * ) out , sizeof (out ), res );
23+ #else
24+ uuid_t out ;
25+ uuid_generate_time (out );
26+ return Py_BuildValue ("y#O" , (const char * ) out , sizeof (out ), Py_None );
27+ #endif
1528}
1629
1730
@@ -30,6 +43,21 @@ static struct PyModuleDef uuidmodule = {
3043PyMODINIT_FUNC
3144PyInit__uuid (void )
3245{
46+ PyObject * mod ;
3347 assert (sizeof (uuid_t ) == 16 );
34- return PyModule_Create (& uuidmodule );
48+ #ifdef HAVE_TIME_SAFE
49+ int has_uuid_generate_time_safe = 1 ;
50+ #else
51+ int has_uuid_generate_time_safe = 0 ;
52+ #endif
53+ mod = PyModule_Create (& uuidmodule );
54+ if (mod == NULL ) {
55+ return NULL ;
56+ }
57+ if (PyModule_AddIntConstant (mod , "has_uuid_generate_time_safe" ,
58+ has_uuid_generate_time_safe ) < 0 ) {
59+ return NULL ;
60+ }
61+
62+ return mod ;
3563}
You can’t perform that action at this time.
0 commit comments