diff options
author | Benjamin Peterson <benjamin@python.org> | 2009-12-13 21:30:54 (GMT) |
---|---|---|
committer | Benjamin Peterson <benjamin@python.org> | 2009-12-13 21:30:54 (GMT) |
commit | 91d58bd14640caa2aacd9ebc33569d92de448920 (patch) | |
tree | 529025110445025e2c44ed9cbc81a10a7c1679ae | |
parent | 5f4ec0451cdaf2196f87894df91b50b39e0be05c (diff) | |
download | cpython-91d58bd14640caa2aacd9ebc33569d92de448920.zip cpython-91d58bd14640caa2aacd9ebc33569d92de448920.tar.gz cpython-91d58bd14640caa2aacd9ebc33569d92de448920.tar.bz2 |
Merged revisions 76822,76824 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r76822 | benjamin.peterson | 2009-12-13 15:21:43 -0600 (Sun, 13 Dec 2009) | 1 line
initialize to NULL
........
r76824 | benjamin.peterson | 2009-12-13 15:27:53 -0600 (Sun, 13 Dec 2009) | 1 line
add a test of loading the datetime capi
........
-rw-r--r-- | Include/datetime.h | 2 | ||||
-rw-r--r-- | Modules/_testcapimodule.c | 16 |
2 files changed, 17 insertions, 1 deletions
diff --git a/Include/datetime.h b/Include/datetime.h index 4b506b2..d14ead1 100644 --- a/Include/datetime.h +++ b/Include/datetime.h @@ -182,7 +182,7 @@ typedef struct { #else /* Define global variable for the C API and a macro for setting it. */ -static PyDateTime_CAPI *PyDateTimeAPI; +static PyDateTime_CAPI *PyDateTimeAPI = NULL; #define PyDateTime_IMPORT \ PyDateTimeAPI = (PyDateTime_CAPI *)PyCapsule_Import(PyDateTime_CAPSULE_NAME, 0) diff --git a/Modules/_testcapimodule.c b/Modules/_testcapimodule.c index aca860a..6244f3f 100644 --- a/Modules/_testcapimodule.c +++ b/Modules/_testcapimodule.c @@ -10,6 +10,7 @@ #include "Python.h" #include <float.h> #include "structmember.h" +#include "datetime.h" #ifdef WITH_THREAD #include "pythread.h" @@ -935,6 +936,20 @@ raise_exception(PyObject *self, PyObject *args) #ifdef WITH_THREAD +static PyObject * +test_datetime_capi(PyObject *self, PyObject *args) { + if (PyDateTimeAPI) { + PyErr_SetString(PyExc_AssertionError, + "PyDateTime_CAPI somehow initialized"); + return NULL; + } + PyDateTime_IMPORT; + if (PyDateTimeAPI) + Py_RETURN_NONE; + else + return NULL; +} + /* test_thread_state spawns a thread of its own, and that thread releases * `thread_done` when it's finished. The driver code has to know when the * thread finishes, because the thread uses a PyObject (the callable) that @@ -1531,6 +1546,7 @@ static PyMethodDef TestMethods[] = { {"raise_exception", raise_exception, METH_VARARGS}, {"raise_memoryerror", (PyCFunction)raise_memoryerror, METH_NOARGS}, {"test_config", (PyCFunction)test_config, METH_NOARGS}, + {"test_datetime_capi", test_datetime_capi, METH_NOARGS}, {"test_list_api", (PyCFunction)test_list_api, METH_NOARGS}, {"test_dict_iteration", (PyCFunction)test_dict_iteration,METH_NOARGS}, {"test_lazy_hash_inheritance", (PyCFunction)test_lazy_hash_inheritance,METH_NOARGS}, |