summaryrefslogtreecommitdiff
path: root/Python/bltinmodule.c
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>1997-08-02 03:10:38 +0000
committerGuido van Rossum <guido@python.org>1997-08-02 03:10:38 +0000
commit25ce566661c1b7446b3ddb4076513a62f93ce08d (patch)
tree39efd7dea3c5cf687c84ec4af49614b725755525 /Python/bltinmodule.c
parent40b33c648a2d777636603356c12b644dd4c92876 (diff)
downloadcpython-git-25ce566661c1b7446b3ddb4076513a62f93ce08d.tar.gz
The last of the mass checkins for separate (sub)interpreters.
Everything should now work again. See the comments for the .h files mass checkin (e.g. pystate.h) for more detail.
Diffstat (limited to 'Python/bltinmodule.c')
-rw-r--r--Python/bltinmodule.c121
1 files changed, 71 insertions, 50 deletions
diff --git a/Python/bltinmodule.c b/Python/bltinmodule.c
index 245d31ead9..439498dc2a 100644
--- a/Python/bltinmodule.c
+++ b/Python/bltinmodule.c
@@ -1668,21 +1668,6 @@ static PyMethodDef builtin_methods[] = {
{NULL, NULL},
};
-static PyObject *builtin_mod;
-static PyObject *builtin_dict;
-
-PyObject *
-PyBuiltin_GetModule()
-{
- return builtin_mod;
-}
-
-PyObject *
-PyBuiltin_GetDict()
-{
- return builtin_dict;
-}
-
/* Predefined exceptions */
PyObject *PyExc_AccessError;
@@ -1707,54 +1692,90 @@ PyObject *PyExc_ValueError;
PyObject *PyExc_ZeroDivisionError;
static PyObject *
-newstdexception(name)
+newstdexception(dict, name)
+ PyObject *dict;
char *name;
{
PyObject *v = PyString_FromString(name);
- if (v == NULL || PyDict_SetItemString(builtin_dict, name, v) != 0)
+ if (v == NULL || PyDict_SetItemString(dict, name, v) != 0)
Py_FatalError("no mem for new standard exception");
return v;
}
static void
-initerrors()
+initerrors(dict)
+ PyObject *dict;
{
- PyExc_AccessError = newstdexception("AccessError");
- PyExc_AssertionError = newstdexception("AssertionError");
- PyExc_AttributeError = newstdexception("AttributeError");
- PyExc_EOFError = newstdexception("EOFError");
- PyExc_FloatingPointError = newstdexception("FloatingPointError");
- PyExc_IOError = newstdexception("IOError");
- PyExc_ImportError = newstdexception("ImportError");
- PyExc_IndexError = newstdexception("IndexError");
- PyExc_KeyError = newstdexception("KeyError");
- PyExc_KeyboardInterrupt = newstdexception("KeyboardInterrupt");
- PyExc_MemoryError = newstdexception("MemoryError");
- PyExc_NameError = newstdexception("NameError");
- PyExc_OverflowError = newstdexception("OverflowError");
- PyExc_RuntimeError = newstdexception("RuntimeError");
- PyExc_SyntaxError = newstdexception("SyntaxError");
- PyExc_SystemError = newstdexception("SystemError");
- PyExc_SystemExit = newstdexception("SystemExit");
- PyExc_TypeError = newstdexception("TypeError");
- PyExc_ValueError = newstdexception("ValueError");
- PyExc_ZeroDivisionError = newstdexception("ZeroDivisionError");
+ PyExc_AccessError = newstdexception(dict, "AccessError");
+ PyExc_AssertionError = newstdexception(dict, "AssertionError");
+ PyExc_AttributeError = newstdexception(dict, "AttributeError");
+ PyExc_EOFError = newstdexception(dict, "EOFError");
+ PyExc_FloatingPointError = newstdexception(dict, "FloatingPointError");
+ PyExc_IOError = newstdexception(dict, "IOError");
+ PyExc_ImportError = newstdexception(dict, "ImportError");
+ PyExc_IndexError = newstdexception(dict, "IndexError");
+ PyExc_KeyError = newstdexception(dict, "KeyError");
+ PyExc_KeyboardInterrupt = newstdexception(dict, "KeyboardInterrupt");
+ PyExc_MemoryError = newstdexception(dict, "MemoryError");
+ PyExc_NameError = newstdexception(dict, "NameError");
+ PyExc_OverflowError = newstdexception(dict, "OverflowError");
+ PyExc_RuntimeError = newstdexception(dict, "RuntimeError");
+ PyExc_SyntaxError = newstdexception(dict, "SyntaxError");
+ PyExc_SystemError = newstdexception(dict, "SystemError");
+ PyExc_SystemExit = newstdexception(dict, "SystemExit");
+ PyExc_TypeError = newstdexception(dict, "TypeError");
+ PyExc_ValueError = newstdexception(dict, "ValueError");
+ PyExc_ZeroDivisionError = newstdexception(dict, "ZeroDivisionError");
+}
+
+static void
+finierrors()
+{
+ Py_XDECREF(PyExc_AccessError); PyExc_AccessError = NULL;
+ Py_XDECREF(PyExc_AssertionError); PyExc_AssertionError = NULL;
+ Py_XDECREF(PyExc_AttributeError); PyExc_AttributeError = NULL;
+ Py_XDECREF(PyExc_EOFError); PyExc_EOFError = NULL;
+ Py_XDECREF(PyExc_FloatingPointError); PyExc_FloatingPointError = NULL;
+ Py_XDECREF(PyExc_IOError); PyExc_IOError = NULL;
+ Py_XDECREF(PyExc_ImportError); PyExc_ImportError = NULL;
+ Py_XDECREF(PyExc_IndexError); PyExc_IndexError = NULL;
+ Py_XDECREF(PyExc_KeyError); PyExc_KeyError = NULL;
+ Py_XDECREF(PyExc_KeyboardInterrupt); PyExc_KeyboardInterrupt = NULL;
+ Py_XDECREF(PyExc_MemoryError); PyExc_MemoryError = NULL;
+ Py_XDECREF(PyExc_NameError); PyExc_NameError = NULL;
+ Py_XDECREF(PyExc_OverflowError); PyExc_OverflowError = NULL;
+ Py_XDECREF(PyExc_RuntimeError); PyExc_RuntimeError = NULL;
+ Py_XDECREF(PyExc_SyntaxError); PyExc_SyntaxError = NULL;
+ Py_XDECREF(PyExc_SystemError); PyExc_SystemError = NULL;
+ Py_XDECREF(PyExc_SystemExit); PyExc_SystemExit = NULL;
+ Py_XDECREF(PyExc_TypeError); PyExc_TypeError = NULL;
+ Py_XDECREF(PyExc_ValueError); PyExc_ValueError = NULL;
+ Py_XDECREF(PyExc_ZeroDivisionError); PyExc_ZeroDivisionError = NULL;
+}
+
+PyObject *
+_PyBuiltin_Init()
+{
+ PyObject *mod, *dict;
+ mod = Py_InitModule("__builtin__", builtin_methods);
+ if (mod == NULL)
+ return NULL;
+ dict = PyModule_GetDict(mod);
+ initerrors(dict);
+ if (PyDict_SetItemString(dict, "None", Py_None) < 0)
+ return NULL;
+ if (PyDict_SetItemString(dict, "Ellipsis", Py_Ellipsis) < 0)
+ return NULL;
+ if (PyDict_SetItemString(dict, "__debug__",
+ PyInt_FromLong(Py_OptimizeFlag == 0)) < 0)
+ return NULL;
+ return mod;
}
void
-PyBuiltin_Init()
+_PyBuiltin_Fini()
{
- builtin_mod = Py_InitModule("__builtin__", builtin_methods);
- builtin_dict = PyModule_GetDict(builtin_mod);
- Py_INCREF(builtin_dict);
- initerrors();
- (void) PyDict_SetItemString(builtin_dict, "None", Py_None);
- (void) PyDict_SetItemString(builtin_dict, "Ellipsis", Py_Ellipsis);
- (void) PyDict_SetItemString(builtin_dict, "__debug__",
- PyInt_FromLong(Py_OptimizeFlag == 0));
- if (PyErr_Occurred())
- Py_FatalError(
- "error creating None/Ellipsis/__debug__ in __builtin__");
+ finierrors();
}