Mercurial > cpython-lru_cache-weakref
diff Python/errors.c @ 6319:b7f0b98f5325 legacy-trunk
New API PyErr_NewException(name, base, dict) to create simple new exceptions.
| author | Guido van Rossum <guido@python.org> |
|---|---|
| date | Tue, 16 Sep 1997 18:43:50 +0000 |
| parents | b5757e87eb32 |
| children | 9e82dd76288e |
line wrap: on
line diff
--- a/Python/errors.c Tue Sep 16 18:43:15 1997 +0000 +++ b/Python/errors.c Tue Sep 16 18:43:50 1997 +0000 @@ -318,3 +318,34 @@ PyErr_SetString(exception, buffer); return NULL; } + + +PyObject * +PyErr_NewException(name, base, dict) + char *name; + PyObject *base; + PyObject *dict; +{ + PyObject *nname = PyString_InternFromString(name); + PyObject *ndict = NULL; + PyObject *nbases = NULL; + PyObject *result = NULL; + if (nname == NULL) + return NULL; + if (dict == NULL) { + dict = ndict = PyDict_New(); + if (dict == NULL) + goto failure; + } + if (base == NULL) + base = PyExc_Exception; + nbases = Py_BuildValue("(O)", base); + if (nbases == NULL) + goto failure; + result = PyClass_New(nbases, dict, nname); + failure: + Py_XDECREF(nbases); + Py_XDECREF(ndict); + Py_XDECREF(nname); + return result; +}
