diff options
author | Martin v. Löwis <martin@v.loewis.de> | 2006-04-16 18:55:50 (GMT) |
---|---|---|
committer | Martin v. Löwis <martin@v.loewis.de> | 2006-04-16 18:55:50 (GMT) |
commit | 19ab6c98cf0525682b74f1f217503c42bacb4916 (patch) | |
tree | 085bf98c3a76a80475ef8864ac329c820286ad04 /Modules | |
parent | d18d5a31535f4162045ce7b7ac8ea320333d24d4 (diff) | |
download | cpython-19ab6c98cf0525682b74f1f217503c42bacb4916.zip cpython-19ab6c98cf0525682b74f1f217503c42bacb4916.tar.gz cpython-19ab6c98cf0525682b74f1f217503c42bacb4916.tar.bz2 |
Initialize structseq types only once.
Diffstat (limited to 'Modules')
-rw-r--r-- | Modules/_lsprof.c | 10 | ||||
-rw-r--r-- | Modules/grpmodule.c | 5 | ||||
-rw-r--r-- | Modules/posixmodule.c | 24 | ||||
-rw-r--r-- | Modules/pwdmodule.c | 6 | ||||
-rw-r--r-- | Modules/resource.c | 7 | ||||
-rw-r--r-- | Modules/spwdmodule.c | 6 | ||||
-rw-r--r-- | Modules/timemodule.c | 7 |
7 files changed, 48 insertions, 17 deletions
diff --git a/Modules/_lsprof.c b/Modules/_lsprof.c index dddab8e..d35c894 100644 --- a/Modules/_lsprof.c +++ b/Modules/_lsprof.c @@ -515,6 +515,7 @@ static PyStructSequence_Desc profiler_subentry_desc = { 5 }; +static int initialized; static PyTypeObject StatsEntryType; static PyTypeObject StatsSubEntryType; @@ -857,8 +858,12 @@ init_lsprof(void) return; PyDict_SetItemString(d, "Profiler", (PyObject *)&PyProfiler_Type); - PyStructSequence_InitType(&StatsEntryType, &profiler_entry_desc); - PyStructSequence_InitType(&StatsSubEntryType, &profiler_subentry_desc); + if (!initialized) { + PyStructSequence_InitType(&StatsEntryType, + &profiler_entry_desc); + PyStructSequence_InitType(&StatsSubEntryType, + &profiler_subentry_desc); + } Py_INCREF((PyObject*) &StatsEntryType); Py_INCREF((PyObject*) &StatsSubEntryType); PyModule_AddObject(module, "profiler_entry", @@ -866,4 +871,5 @@ init_lsprof(void) PyModule_AddObject(module, "profiler_subentry", (PyObject*) &StatsSubEntryType); empty_tuple = PyTuple_New(0); + initialized = 1; } diff --git a/Modules/grpmodule.c b/Modules/grpmodule.c index de849c9..12d33dd 100644 --- a/Modules/grpmodule.c +++ b/Modules/grpmodule.c @@ -29,6 +29,7 @@ static PyStructSequence_Desc struct_group_type_desc = { }; +static int initialized; static PyTypeObject StructGrpType; static PyObject * @@ -174,6 +175,8 @@ initgrp(void) if (m == NULL) return; d = PyModule_GetDict(m); - PyStructSequence_InitType(&StructGrpType, &struct_group_type_desc); + if (!initialized) + PyStructSequence_InitType(&StructGrpType, &struct_group_type_desc); PyDict_SetItemString(d, "struct_group", (PyObject *) &StructGrpType); + initialized = 1; } diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c index e07021a..53f35da 100644 --- a/Modules/posixmodule.c +++ b/Modules/posixmodule.c @@ -981,6 +981,7 @@ static PyStructSequence_Desc statvfs_result_desc = { 10 }; +static int initialized; static PyTypeObject StatResultType; static PyTypeObject StatVFSResultType; static newfunc structseq_new; @@ -8241,21 +8242,24 @@ INITFUNC(void) posix_putenv_garbage = PyDict_New(); #endif - stat_result_desc.name = MODNAME ".stat_result"; - stat_result_desc.fields[7].name = PyStructSequence_UnnamedField; - stat_result_desc.fields[8].name = PyStructSequence_UnnamedField; - stat_result_desc.fields[9].name = PyStructSequence_UnnamedField; - PyStructSequence_InitType(&StatResultType, &stat_result_desc); - structseq_new = StatResultType.tp_new; - StatResultType.tp_new = statresult_new; + if (!initialized) { + stat_result_desc.name = MODNAME ".stat_result"; + stat_result_desc.fields[7].name = PyStructSequence_UnnamedField; + stat_result_desc.fields[8].name = PyStructSequence_UnnamedField; + stat_result_desc.fields[9].name = PyStructSequence_UnnamedField; + PyStructSequence_InitType(&StatResultType, &stat_result_desc); + structseq_new = StatResultType.tp_new; + StatResultType.tp_new = statresult_new; + + statvfs_result_desc.name = MODNAME ".statvfs_result"; + PyStructSequence_InitType(&StatVFSResultType, &statvfs_result_desc); + } Py_INCREF((PyObject*) &StatResultType); PyModule_AddObject(m, "stat_result", (PyObject*) &StatResultType); - - statvfs_result_desc.name = MODNAME ".statvfs_result"; - PyStructSequence_InitType(&StatVFSResultType, &statvfs_result_desc); Py_INCREF((PyObject*) &StatVFSResultType); PyModule_AddObject(m, "statvfs_result", (PyObject*) &StatVFSResultType); + initialized = 1; } #ifdef __cplusplus diff --git a/Modules/pwdmodule.c b/Modules/pwdmodule.c index 9e7b864..9e01f48 100644 --- a/Modules/pwdmodule.c +++ b/Modules/pwdmodule.c @@ -42,6 +42,7 @@ The uid and gid items are integers, all others are strings. An\n\ exception is raised if the entry asked for cannot be found."); +static int initialized; static PyTypeObject StructPwdType; static void @@ -186,9 +187,12 @@ initpwd(void) if (m == NULL) return; - PyStructSequence_InitType(&StructPwdType, &struct_pwd_type_desc); + if (!initialized) + PyStructSequence_InitType(&StructPwdType, + &struct_pwd_type_desc); Py_INCREF((PyObject *) &StructPwdType); PyModule_AddObject(m, "struct_passwd", (PyObject *) &StructPwdType); /* And for b/w compatibility (this was defined by mistake): */ PyModule_AddObject(m, "struct_pwent", (PyObject *) &StructPwdType); + initialized = 1; } diff --git a/Modules/resource.c b/Modules/resource.c index 7cbd2c9..e73c878 100644 --- a/Modules/resource.c +++ b/Modules/resource.c @@ -55,6 +55,7 @@ static PyStructSequence_Desc struct_rusage_desc = { 16 /* n_in_sequence */ }; +static int initialized; static PyTypeObject StructRUsageType; static PyObject * @@ -244,7 +245,10 @@ initresource(void) } Py_INCREF(ResourceError); PyModule_AddObject(m, "error", ResourceError); - PyStructSequence_InitType(&StructRUsageType, &struct_rusage_desc); + if (!initialized) + PyStructSequence_InitType(&StructRUsageType, + &struct_rusage_desc); + Py_INCREF(&StructRUsageType); PyModule_AddObject(m, "struct_rusage", (PyObject*) &StructRUsageType); @@ -320,4 +324,5 @@ initresource(void) if (v) { PyModule_AddObject(m, "RLIM_INFINITY", v); } + initialized = 1; } diff --git a/Modules/spwdmodule.c b/Modules/spwdmodule.c index 7c618e7..b7bf20e 100644 --- a/Modules/spwdmodule.c +++ b/Modules/spwdmodule.c @@ -52,6 +52,7 @@ static PyStructSequence_Desc struct_spwd_type_desc = { 9, }; +static int initialized; static PyTypeObject StructSpwdType; @@ -173,7 +174,10 @@ initspwd(void) m=Py_InitModule3("spwd", spwd_methods, spwd__doc__); if (m == NULL) return; - PyStructSequence_InitType(&StructSpwdType, &struct_spwd_type_desc); + if (!initialized) + PyStructSequence_InitType(&StructSpwdType, + &struct_spwd_type_desc); Py_INCREF((PyObject *) &StructSpwdType); PyModule_AddObject(m, "struct_spwd", (PyObject *) &StructSpwdType); + initialized = 1; } diff --git a/Modules/timemodule.c b/Modules/timemodule.c index 7f762f3..08d28a1 100644 --- a/Modules/timemodule.c +++ b/Modules/timemodule.c @@ -228,6 +228,7 @@ static PyStructSequence_Desc struct_time_type_desc = { 9, }; +static int initialized; static PyTypeObject StructTimeType; static PyObject * @@ -807,9 +808,13 @@ inittime(void) hInterruptEvent = CreateEvent(NULL, TRUE, FALSE, NULL); SetConsoleCtrlHandler( PyCtrlHandler, TRUE); #endif /* MS_WINDOWS */ - PyStructSequence_InitType(&StructTimeType, &struct_time_type_desc); + if (!initialized) { + PyStructSequence_InitType(&StructTimeType, + &struct_time_type_desc); + } Py_INCREF(&StructTimeType); PyModule_AddObject(m, "struct_time", (PyObject*) &StructTimeType); + initialized = 1; } |