diff options
Diffstat (limited to 'Modules/_uuidmodule.c')
-rw-r--r-- | Modules/_uuidmodule.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/Modules/_uuidmodule.c b/Modules/_uuidmodule.c index 3a0c057382..0b7f2a2545 100644 --- a/Modules/_uuidmodule.c +++ b/Modules/_uuidmodule.c @@ -19,10 +19,16 @@ py_uuid_generate_time_safe(PyObject *Py_UNUSED(context), res = uuid_generate_time_safe(uuid); return Py_BuildValue("y#i", (const char *) uuid, sizeof(uuid), res); -#elif HAVE_UUID_CREATE +#elif defined(HAVE_UUID_CREATE) uint32_t status; uuid_create(&uuid, &status); +# if defined(HAVE_UUID_ENC_BE) + unsigned char buf[sizeof(uuid)]; + uuid_enc_be(buf, &uuid); + return Py_BuildValue("y#i", buf, sizeof(uuid), (int) status); +# else return Py_BuildValue("y#i", (const char *) &uuid, sizeof(uuid), (int) status); +# endif #else uuid_generate_time(uuid); return Py_BuildValue("y#O", (const char *) uuid, sizeof(uuid), Py_None); @@ -58,6 +64,7 @@ PyInit__uuid(void) } if (PyModule_AddIntConstant(mod, "has_uuid_generate_time_safe", has_uuid_generate_time_safe) < 0) { + Py_DECREF(mod); return NULL; } |