summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBenjamin Peterson <benjamin@python.org>2009-12-13 21:30:54 (GMT)
committerBenjamin Peterson <benjamin@python.org>2009-12-13 21:30:54 (GMT)
commit91d58bd14640caa2aacd9ebc33569d92de448920 (patch)
tree529025110445025e2c44ed9cbc81a10a7c1679ae
parent5f4ec0451cdaf2196f87894df91b50b39e0be05c (diff)
downloadcpython-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.h2
-rw-r--r--Modules/_testcapimodule.c16
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},