diff options
author | Guido van Rossum <guido@python.org> | 1997-01-23 23:29:44 (GMT) |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 1997-01-23 23:29:44 (GMT) |
commit | f2b2dac5eb84fbfb410e5066d24faa2f27423146 (patch) | |
tree | a8e4e5433d02481bf32cd2605f526c158ae13a07 /Modules | |
parent | ca756f2a1d8353812223af380166c826ffefcc2c (diff) | |
download | cpython-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')
-rw-r--r-- | Modules/parsermodule.c | 10 |
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"); |