summaryrefslogtreecommitdiffstats
path: root/Modules/parsermodule.c
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>1997-01-23 23:29:44 (GMT)
committerGuido van Rossum <guido@python.org>1997-01-23 23:29:44 (GMT)
commitf2b2dac5eb84fbfb410e5066d24faa2f27423146 (patch)
treea8e4e5433d02481bf32cd2605f526c158ae13a07 /Modules/parsermodule.c
parentca756f2a1d8353812223af380166c826ffefcc2c (diff)
downloadcpython-f2b2dac5eb84fbfb410e5066d24faa2f27423146.zip
cpython-f2b2dac5eb84fbfb410e5066d24faa2f27423146.tar.gz
cpython-f2b2dac5eb84fbfb410e5066d24faa2f27423146.tar.bz2
Initialize the ob_type field of PyAST_Type dynamically (in
initparser()) instead of statically (in the initializer). The static initialization, using the address of an object in a different DLL, is too much for the Microsoft VC++ compiler, and we want to be able to build this module as a separate DLL (it's nice to have but we don't want to increase the core DLL's size by 25K). This same trick has been applied to a number of modules, e.g. NumPy and _tkinter.
Diffstat (limited to 'Modules/parsermodule.c')
-rw-r--r--Modules/parsermodule.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/Modules/parsermodule.c b/Modules/parsermodule.c
index 7a23d8d..4167eb1 100644
--- a/Modules/parsermodule.c
+++ b/Modules/parsermodule.c
@@ -197,7 +197,7 @@ staticforward int parser_compare Py_PROTO((PyAST_Object *left,
/* static */
PyTypeObject PyAST_Type = {
- PyObject_HEAD_INIT(&PyType_Type)
+ PyObject_HEAD_INIT(NULL)
0,
"ast", /* tp_name */
sizeof(PyAST_Object), /* tp_basicsize */
@@ -2593,8 +2593,12 @@ static PyMethodDef parser_functions[] = {
void
initparser()
{
- PyObject* module = Py_InitModule("parser", parser_functions);
- PyObject* dict = PyModule_GetDict(module);
+ PyObject* module;
+ PyObject* dict;
+
+ PyAST_Type.ob_type = &PyType_Type;
+ module = Py_InitModule("parser", parser_functions);
+ dict = PyModule_GetDict(module);
parser_error = PyString_FromString("parser.ParserError");