[Python-checkins] r46301 - in python/branches/sreifschneider-newnewexcept: Lib/warnings.py Objects/exceptions.c
richard.jones
python-checkins at python.org
Fri May 26 14:07:42 CEST 2006
Author: richard.jones
Date: Fri May 26 14:07:41 2006
New Revision: 46301
Modified:
python/branches/sreifschneider-newnewexcept/Lib/warnings.py
python/branches/sreifschneider-newnewexcept/Objects/exceptions.c
Log:
fold in changes suggested by Georg
Modified: python/branches/sreifschneider-newnewexcept/Lib/warnings.py
==============================================================================
--- python/branches/sreifschneider-newnewexcept/Lib/warnings.py (original)
+++ python/branches/sreifschneider-newnewexcept/Lib/warnings.py Fri May 26 14:07:41 2006
@@ -261,6 +261,4 @@
# Module initialization
_processoptions(sys.warnoptions)
-# XXX OverflowWarning should go away for Python 2.5.
-simplefilter("ignore", category=OverflowWarning, append=1)
simplefilter("ignore", category=PendingDeprecationWarning, append=1)
Modified: python/branches/sreifschneider-newnewexcept/Objects/exceptions.c
==============================================================================
--- python/branches/sreifschneider-newnewexcept/Objects/exceptions.c (original)
+++ python/branches/sreifschneider-newnewexcept/Objects/exceptions.c Fri May 26 14:07:41 2006
@@ -12,47 +12,15 @@
PyObject *message;
} BaseExceptionObject;
-/* GB: - PyTuple_* would be faster than PySequence_*
- - should use PyDoc_STR() macros for docstrings
- - I don't know, but it may be that the exceptions
+/* GB: - I don't know, but it may be that the exceptions
have to be GC objects
- If you want to allow normal attribute access,
I think you can use PyObject_GenericGetAttr etc.
in the tp_getattr... slots.
*/
-static PyObject *
-BaseException_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
- BaseExceptionObject *self;
-
- self = (BaseExceptionObject *)type->tp_alloc(type, 0);
-
- self->args = self->message = NULL;
-
- if (!args) {
- self->args = PyTuple_New(0);
- if (!self->args) {
- Py_DECREF(self);
- return NULL;
- }
- }
- else
- self->args = args;
- /* GB: Isn't the tuple INCREFd twice? */
- Py_INCREF(self->args);
-
- if (PySequence_Length(self->args) == 1)
- self->message = PySequence_GetItem(self->args, 0);
- else
- self->message = PyString_FromString("");
- /* GB: error check */
-
- return (PyObject *)self;
-}
-
static int
-BaseException_init(BaseExceptionObject *self, PyObject *args, PyObject *kwds)
+_BaseException_init(BaseExceptionObject *self, PyObject *args, PyObject *kwds)
{
if (!args) {
self->args = PyTuple_New(0);
@@ -60,29 +28,51 @@
return -1;
}
}
- else
+ else {
self->args = args;
- /* GB: tuple/INCREF */
- Py_INCREF(self->args);
+ Py_INCREF(self->args);
+ }
if (PySequence_Length(self->args) == 1)
self->message = PySequence_GetItem(self->args, 0);
else
self->message = PyString_FromString("");
if (!self->message) {
- Py_DECREF(self->args);
return -1;
}
return 0;
}
+static PyObject *
+BaseException_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
+{
+ BaseExceptionObject *self;
+
+ self = (BaseExceptionObject *)type->tp_alloc(type, 0);
+
+ self->args = self->message = NULL;
+
+ if (_BaseException_init(self, args, kwds) == -1) {
+ Py_DECREF(self);
+ return NULL;
+ }
+
+ return (PyObject *)self;
+}
+
+static int
+BaseException_init(BaseExceptionObject *self, PyObject *args, PyObject *kwds)
+{
+ return _BaseException_init(self, args, kwds);
+}
+
static void
BaseException_dealloc(BaseExceptionObject *self)
{
- Py_XDECREF(self->args);
- Py_XDECREF(self->message);
- /* GB: call tp_free? */
+ Py_CLEAR(self->args);
+ Py_CLEAR(self->message);
+ self->ob_type->tp_free((PyObject *)self);
}
@@ -91,20 +81,20 @@
{
PyObject *out;
- switch (PySequence_Size(self->args)) {
+ switch (PySequence_Length(self->args)) {
case 0:
out = PyString_FromString("");
break;
case 1:
{
- PyObject *tmp = PySequence_GetItem(self->args, 0);
- if (tmp) {
- out = PyObject_Str(tmp);
- Py_DECREF(tmp);
- }
- else
- out = NULL;
- break;
+ PyObject *tmp = PySequence_GetItem(self->args, 0);
+ if (tmp) {
+ out = PyObject_Str(tmp);
+ Py_DECREF(tmp);
+ }
+ else
+ out = NULL;
+ break;
}
case -1:
PyErr_Clear();
@@ -118,54 +108,46 @@
}
-/* GB: does _unicode have/need an argument? */
#ifdef Py_USING_UNICODE
static PyObject *
-BaseException_unicode(BaseExceptionObject *self, PyObject *args)
+BaseException_unicode(BaseExceptionObject *self)
{
- PyObject *temp = PySequence_GetItem(self->args, 0);
- PyObject *unicode_obj;
- if (!temp) {
- return NULL;
- }
- unicode_obj = PyObject_Unicode(temp);
- Py_DECREF(temp);
- return unicode_obj;
+ return PyObject_Unicode(self->args);
}
#endif /* Py_USING_UNICODE */
static PyObject *
BaseException_repr(BaseExceptionObject *self)
{
- Py_ssize_t args_len;
- PyObject *repr_suffix;
- PyObject *repr;
-
- args_len = PySequence_Length(self->args);
- if (args_len < 0) {
- return NULL;
- }
-
- if (args_len == 0) {
- repr_suffix = PyString_FromString("()");
- if (!repr_suffix)
- return NULL;
- }
- else {
- PyObject *args_repr = PyObject_Repr(self->args);
- if (!args_repr)
- return NULL;
- repr_suffix = args_repr;
- }
-
- repr = PyString_FromString(self->ob_type->tp_name);
- if (!repr) {
- Py_DECREF(repr_suffix);
- return NULL;
- }
+ Py_ssize_t args_len;
+ PyObject *repr_suffix;
+ PyObject *repr;
- PyString_ConcatAndDel(&repr, repr_suffix);
- return repr;
+ args_len = PySequence_Length(self->args);
+ if (args_len < 0) {
+ return NULL;
+ }
+
+ if (args_len == 0) {
+ repr_suffix = PyString_FromString("()");
+ if (!repr_suffix)
+ return NULL;
+ }
+ else {
+ PyObject *args_repr = PyObject_Repr(self->args);
+ if (!args_repr)
+ return NULL;
+ repr_suffix = args_repr;
+ }
+
+ repr = PyString_FromString(self->ob_type->tp_name);
+ if (!repr) {
+ Py_DECREF(repr_suffix);
+ return NULL;
+ }
+
+ PyString_ConcatAndDel(&repr, repr_suffix);
+ return repr;
}
static PyObject *
@@ -175,22 +157,24 @@
}
static PySequenceMethods BaseException_as_sequence = {
- 0, /* sq_length; */
- 0, /* sq_concat; */
- 0, /* sq_repeat; */
- (ssizeargfunc)BaseException_getitem, /* sq_item; */
- 0, /* sq_slice; */
- 0, /* sq_ass_item; */
- 0, /* sq_ass_slice; */
- 0, /* sq_contains; */
- 0, /* sq_inplace_concat; */
- 0 /* sq_inplace_repeat; */
+ 0, /* sq_length; */
+ 0, /* sq_concat; */
+ 0, /* sq_repeat; */
+ (ssizeargfunc)BaseException_getitem, /* sq_item; */
+ 0, /* sq_slice; */
+ 0, /* sq_ass_item; */
+ 0, /* sq_ass_slice; */
+ 0, /* sq_contains; */
+ 0, /* sq_inplace_concat; */
+ 0 /* sq_inplace_repeat; */
};
static PyMemberDef BaseException_members[] = {
- {"args", T_OBJECT, offsetof(BaseExceptionObject, args), 0, "exception arguments"},
- {"message", T_OBJECT, offsetof(BaseExceptionObject, message), 0, "exception message"},
- {NULL} /* Sentinel */
+ {"args", T_OBJECT, offsetof(BaseExceptionObject, args), 0,
+ PyDoc_STR("exception arguments")},
+ {"message", T_OBJECT, offsetof(BaseExceptionObject, message), 0,
+ PyDoc_STR("exception message")},
+ {NULL} /* Sentinel */
};
static PyMethodDef BaseException_methods[] = {
@@ -222,13 +206,13 @@
0, /*tp_setattro*/
0, /*tp_as_buffer*/
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /*tp_flags*/
- "Common base class for all exceptions", /* tp_doc */
- 0, /* tp_traverse */
- 0, /* tp_clear */
- 0, /* tp_richcompare */
- 0, /* tp_weaklistoffset */
- 0, /* tp_iter */
- 0, /* tp_iternext */
+ PyDoc_STR("Common base class for all exceptions"), /* tp_doc */
+ 0, /* tp_traverse */
+ 0, /* tp_clear */
+ 0, /* tp_richcompare */
+ 0, /* tp_weaklistoffset */
+ 0, /* tp_iter */
+ 0, /* tp_iternext */
BaseException_methods, /* tp_methods */
BaseException_members, /* tp_members */
0, /* tp_getset */
@@ -254,7 +238,7 @@
sizeof(BaseExceptionObject), \
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, \
- EXCDOC, \
+ PyDoc_STR(EXCDOC), \
0, 0, 0, 0, 0, 0, 0, 0, 0, &_ ## EXCBASE, \
0, 0, 0, 0, (initproc)BaseException_init, 0, BaseException_new,\
}; \
@@ -268,7 +252,7 @@
sizeof(EXCSTORE ## Object), \
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, \
- EXCDOC, \
+ PyDoc_STR(EXCDOC), \
0, 0, 0, 0, 0, 0, 0, 0, 0, &_ ## EXCBASE, \
0, 0, 0, 0, (initproc)EXCSTORE ## _init, 0, EXCSTORE ## _new,\
}; \
@@ -283,7 +267,7 @@
(destructor)EXCDEALLOC, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
(reprfunc)EXCSTR, 0, 0, 0, \
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, \
- EXCDOC, \
+ PyDoc_STR(EXCDOC), \
0, 0, 0, 0, 0, 0, EXCMETHODS, EXCMEMBERS, 0, &_ ## EXCBASE, \
0, 0, 0, 0, (initproc)EXCSTORE ## _init, 0, EXCSTORE ## _new,\
}; \
@@ -326,12 +310,30 @@
* SystemExit extends BaseException
*/
typedef struct {
- PyObject_HEAD
- PyObject *args;
- PyObject *message;
- PyObject *code;
+ PyObject_HEAD
+ PyObject *args;
+ PyObject *message;
+ PyObject *code;
} SystemExitObject;
+static int
+_SystemExit_init(SystemExitObject *self, PyObject *args, PyObject *kwds)
+{
+ Py_ssize_t size = PySequence_Length(args);
+
+ if (size == 1)
+ self->code = PySequence_GetItem(args, 0);
+ else if (size > 1) {
+ self->code = args;
+ Py_INCREF(Py_None);
+ }
+ else {
+ self->code = Py_None;
+ Py_INCREF(Py_None);
+ }
+ return 0;
+}
+
static PyObject *
SystemExit_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
{
@@ -341,11 +343,9 @@
if (!self)
return NULL;
- if (PySequence_Length(args) == 1)
- self->code = PySequence_GetItem(args, 0);
- else {
- self->code = Py_None;
- Py_INCREF(Py_None);
+ if (_SystemExit_init(self, args, kwds) == -1) {
+ Py_DECREF(self);
+ return NULL;
}
return (PyObject *)self;
@@ -354,29 +354,24 @@
static int
SystemExit_init(SystemExitObject *self, PyObject *args, PyObject *kwds)
{
- if (PySequence_Length(args) == 1)
- self->code = PySequence_GetItem(args, 0);
- else {
- self->code = Py_None;
- Py_INCREF(Py_None);
- }
-
- return 0;
+ return _SystemExit_init(self, args, kwds);
}
static void
SystemExit_dealloc(SystemExitObject *self)
{
- /* GB: shouldn't the decref come first? */
+ Py_CLEAR(self->code);
BaseException_dealloc((BaseExceptionObject *)self);
- Py_DECREF(self->code);
}
static PyMemberDef SystemExit_members[] = {
- {"args", T_OBJECT, offsetof(SystemExitObject, args), 0, "exception arguments"},
- {"message", T_OBJECT, offsetof(SystemExitObject, message), 0, "exception message"},
- {"code", T_OBJECT, offsetof(SystemExitObject, code), 0, "exception code"},
- {NULL} /* Sentinel */
+ {"args", T_OBJECT, offsetof(SystemExitObject, args), 0,
+ PyDoc_STR("exception arguments")},
+ {"message", T_OBJECT, offsetof(SystemExitObject, message), 0,
+ PyDoc_STR("exception message")},
+ {"code", T_OBJECT, offsetof(SystemExitObject, code), 0,
+ PyDoc_STR("exception code")},
+ {NULL} /* Sentinel */
};
ComplexExtendsException(PyExc_BaseException, SystemExit, SystemExit, SystemExit_dealloc, 0, SystemExit_members, 0, "Request to exit from the interpreter.");
@@ -397,63 +392,56 @@
* EnvironmentError extends StandardError
*/
typedef struct {
- PyObject_HEAD
- PyObject *args;
- PyObject *message;
- PyObject *myerrno;
- PyObject *strerror;
- PyObject *filename;
+ PyObject_HEAD
+ PyObject *args;
+ PyObject *message;
+ PyObject *myerrno;
+ PyObject *strerror;
+ PyObject *filename;
} EnvironmentErrorObject;
+/* Where a function has a single filename, such as open() or some
+ * of the os module functions, PyErr_SetFromErrnoWithFilename() is
+ * called, giving a third argument which is the filename. But, so
+ * that old code using in-place unpacking doesn't break, e.g.:
+ *
+ * except IOError, (errno, strerror):
+ *
+ * we hack args so that it only contains two items. This also
+ * means we need our own __str__() which prints out the filename
+ * when it was supplied.
+ */
static int
_EnvironmentError_init(EnvironmentErrorObject *self, PyObject *args,
PyObject *kwds)
{
+ PyObject *myerrno, *strerror, *filename;
PyObject *subslice = NULL;
+
+ if (!PyArg_ParseTuple(args, "OO|O", &myerrno, &strerror, &filename)) {
+ return -1;
+ }
- switch (PySequence_Size(args)) {
- case 3:
- /* Where a function has a single filename, such as open() or some
- * of the os module functions, PyErr_SetFromErrnoWithFilename() is
- * called, giving a third argument which is the filename. But, so
- * that old code using in-place unpacking doesn't break, e.g.:
- *
- * except IOError, (errno, strerror):
- *
- * we hack args so that it only contains two items. This also
- * means we need our own __str__() which prints out the filename
- * when it was supplied.
- */
- self->myerrno = PySequence_GetItem(args, 0);
- if (!self->myerrno) return -1;
- self->strerror = PySequence_GetItem(args, 1);
- /* GB: in error cases, you're leaking refs to myerrno etc.
- and perhaps you should be clearing self->... too on error */
- if (!self->strerror) return -1;
- self->filename = PySequence_GetItem(args, 2);
- if (!self->filename) return -1;
+ Py_DECREF(self->myerrno); /* replacing */
+ self->myerrno = myerrno;
+ Py_INCREF(self->myerrno);
+
+ Py_DECREF(self->strerror); /* replacing */
+ self->strerror = strerror;
+ Py_INCREF(self->strerror);
+
+ /* self->filename will remain Py_None otherwise */
+ if (filename != NULL) {
+ Py_DECREF(self->filename); /* replacing */
+ self->filename = filename;
+ Py_INCREF(self->filename);
- subslice = PySequence_GetSlice(args, 0, 2);
- if (!subslice)
- return -1;
+ subslice = PyTuple_GetSlice(args, 0, 2);
+ if (!subslice)
+ return -1;
- /* GB: can it be that self->args is NULL? */
Py_DECREF(self->args); /* replacing args */
self->args = subslice;
- return 0;
-
- case 2:
- /* Used when PyErr_SetFromErrno() is called and no filename
- * argument is given.
- */
- self->myerrno = PySequence_GetItem(args, 0);
- if (!self->myerrno) return -1;
- self->strerror = PySequence_GetItem(args, 1);
- if (!self->strerror) return -1;
- return 0;
-
- case -1:
- PyErr_Clear();
}
return 0;
}
@@ -475,13 +463,11 @@
Py_INCREF(Py_None);
if (_EnvironmentError_init(self, args, kwds) == -1) {
- /* GB: why clear the error? */
- PyErr_Clear();
+ return NULL;
}
return (PyObject *)self;
}
-/* GB: what's that function doing? */
static int
EnvironmentError_init(EnvironmentErrorObject *self, PyObject *args,
PyObject *kwds)
@@ -492,10 +478,10 @@
static void
EnvironmentError_dealloc(EnvironmentErrorObject *self)
{
+ Py_CLEAR(self->myerrno);
+ Py_CLEAR(self->strerror);
+ Py_CLEAR(self->filename);
BaseException_dealloc((BaseExceptionObject *)self);
- Py_DECREF(self->myerrno);
- Py_DECREF(self->strerror);
- Py_DECREF(self->filename);
}
static PyObject *
@@ -504,57 +490,66 @@
PyObject *rtnval = NULL;
if (self->filename != Py_None) {
- PyObject *fmt = PyString_FromString("[Errno %s] %s: %s");
- PyObject *repr = PyObject_Repr(self->filename);
- PyObject *tuple = PyTuple_New(3);
-
- if (!fmt || !repr || !tuple) {
- Py_XDECREF(fmt);
- Py_XDECREF(repr);
- Py_XDECREF(tuple);
- return NULL;
- }
-/* GB: PyTuple_SET_ITEM steals references, so you may need to INCREF first */
- PyTuple_SET_ITEM(tuple, 0, self->myerrno);
- PyTuple_SET_ITEM(tuple, 1, self->strerror);
- PyTuple_SET_ITEM(tuple, 2, repr);
-
- rtnval = PyString_Format(fmt, tuple);
-
- Py_DECREF(fmt);
- Py_DECREF(tuple);
- }
- else if (PyObject_IsTrue(self->myerrno) && PyObject_IsTrue(self->strerror)) {
- PyObject *fmt = PyString_FromString("[Errno %s] %s");
- PyObject *tuple = PyTuple_New(2);
-
- if (!fmt || !tuple) {
- Py_XDECREF(fmt);
- Py_XDECREF(tuple);
- return NULL;
- }
-/* GB: same here */
- PyTuple_SET_ITEM(tuple, 0, self->myerrno);
- PyTuple_SET_ITEM(tuple, 1, self->strerror);
+ PyObject *fmt = PyString_FromString("[Errno %s] %s: %s");
+ PyObject *repr = PyObject_Repr(self->filename);
+ PyObject *tuple = PyTuple_New(3);
+
+ if (!fmt || !repr || !tuple) {
+ Py_XDECREF(fmt);
+ Py_XDECREF(repr);
+ Py_XDECREF(tuple);
+ return NULL;
+ }
+ Py_INCREF(self->myerrno);
+ PyTuple_SET_ITEM(tuple, 0, self->myerrno);
+ Py_INCREF(self->strerror);
+ PyTuple_SET_ITEM(tuple, 1, self->strerror);
+ Py_INCREF(repr);
+ PyTuple_SET_ITEM(tuple, 2, repr);
+
+ rtnval = PyString_Format(fmt, tuple);
+
+ Py_DECREF(fmt);
+ Py_DECREF(tuple);
+ }
+ else if (PyObject_IsTrue(self->myerrno) &&
+ PyObject_IsTrue(self->strerror)) {
+ PyObject *fmt = PyString_FromString("[Errno %s] %s");
+ PyObject *tuple = PyTuple_New(2);
+
+ if (!fmt || !tuple) {
+ Py_XDECREF(fmt);
+ Py_XDECREF(tuple);
+ return NULL;
+ }
+ Py_INCREF(self->myerrno);
+ PyTuple_SET_ITEM(tuple, 0, self->myerrno);
+ Py_INCREF(self->strerror);
+ PyTuple_SET_ITEM(tuple, 1, self->strerror);
- rtnval = PyString_Format(fmt, tuple);
+ rtnval = PyString_Format(fmt, tuple);
- Py_DECREF(fmt);
- Py_DECREF(tuple);
+ Py_DECREF(fmt);
+ Py_DECREF(tuple);
}
else
- rtnval = BaseException_str((BaseExceptionObject *)self);
+ rtnval = BaseException_str((BaseExceptionObject *)self);
return rtnval;
}
static PyMemberDef EnvironmentError_members[] = {
- {"args", T_OBJECT, offsetof(EnvironmentErrorObject, args), 0, "exception arguments"},
- {"message", T_OBJECT, offsetof(EnvironmentErrorObject, message), 0, "exception message"},
- {"errno", T_OBJECT, offsetof(EnvironmentErrorObject, myerrno), 0, "exception code"},
- {"strerror", T_OBJECT, offsetof(EnvironmentErrorObject, strerror), 0, "exception code"},
- {"filename", T_OBJECT, offsetof(EnvironmentErrorObject, filename), 0, "exception code"},
- {NULL} /* Sentinel */
+ {"args", T_OBJECT, offsetof(EnvironmentErrorObject, args), 0,
+ PyDoc_STR("exception arguments")},
+ {"message", T_OBJECT, offsetof(EnvironmentErrorObject, message), 0,
+ PyDoc_STR("exception message")},
+ {"errno", T_OBJECT, offsetof(EnvironmentErrorObject, myerrno), 0,
+ PyDoc_STR("exception code")},
+ {"strerror", T_OBJECT, offsetof(EnvironmentErrorObject, strerror), 0,
+ PyDoc_STR("exception code")},
+ {"filename", T_OBJECT, offsetof(EnvironmentErrorObject, filename), 0,
+ PyDoc_STR("exception code")},
+ {NULL} /* Sentinel */
};
ComplexExtendsException(PyExc_StandardError, EnvironmentError, EnvironmentError, EnvironmentError_dealloc, 0, EnvironmentError_members, EnvironmentError_str, "Base class for I/O related errors.");
@@ -579,75 +574,78 @@
#include "errmap.h"
typedef struct {
- PyObject_HEAD
- PyObject *args;
- PyObject *message;
- PyObject *myerrno;
- PyObject *strerror;
- PyObject *filename;
- PyObject *winerror;
+ PyObject_HEAD
+ PyObject *args;
+ PyObject *message;
+ PyObject *myerrno;
+ PyObject *strerror;
+ PyObject *filename;
+ PyObject *winerror;
} WindowsErrorObject;
static PyObject *
WindowsError_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
{
- PyObject *o_errcode = NULL;
- WindowsErrorObject *self = NULL;
- long posix_errno;
+ PyObject *o_errcode = NULL;
+ PyObject *errcode = NULL;
+ WindowsErrorObject *self = NULL;
+ long posix_errno;
- self = (WindowsErrorObject *)EnvironmentError_new(type, args, kwds);
- if (!self)
- return NULL;
+ self = (WindowsErrorObject *)EnvironmentError_new(type, args, kwds);
+ if (!self)
+ return NULL;
+
+ /* Set errno to the POSIX errno, and winerror to the Win32
+ error code. */
+ errcode = PyInt_AsLong(self->myerrno);
+ if (!errcode == -1 && PyErr_Occurred())
+ return NULL;
+ posix_errno = winerror_to_errno(errcode);
- /* Set errno to the POSIX errno, and winerror to the Win32
- error code. */
- /* GB: where is errcode declared? */
- errcode = PyInt_AsLong(self->myerrno);
- if (!errcode == -1 && PyErr_Occurred())
- goto failed;
- posix_errno = winerror_to_errno(errcode);
-
- /* INCREF? */
- self->winerror = self->myerrno;
-
- o_errcode = PyInt_FromLong(posix_errno);
- if (!o_errcode)
- goto failed;
+ self->winerror = self->myerrno;
- self->myerrno = o_errcode;
+ o_errcode = PyInt_FromLong(posix_errno);
+ if (!o_errcode)
+ goto failed;
- return self;
+ self->myerrno = o_errcode;
+
+ return self;
failed:
- /* Could not set errno. */
- Py_XDECREF(o_errcode);
- Py_XDECREF(self);
- return NULL;
+ /* Could not set errno. */
+ Py_XDECREF(o_errcode);
+ Py_XDECREF(self);
+ return NULL;
}
static int
WindowsError_init(WindowsErrorObject *self, PyObject *args, PyObject *kwds)
{
- /* GB: same: errcode */
- if (EnvironmentError_init((EnvironmentErrorObject *)self, args,
- kwds) == -1)
- return -1;
+ PyObject *o_errcode = NULL;
+ PyObject *errcode = NULL;
+
+ if (EnvironmentError_init((EnvironmentErrorObject *)self, args, kwds) == -1)
+ return -1;
- /* Set errno to the POSIX errno, and winerror to the Win32
- error code. */
- errcode = PyInt_AsLong(self->myerrno);
- if (!errcode == -1 && PyErr_Occurred())
- return -1;
- posix_errno = winerror_to_errno(errcode);
-
- self->winerror = self->myerrno;
-
- o_errcode = PyInt_FromLong(posix_errno);
- if (!o_errcode)
- return -1;
+ /* Set errno to the POSIX errno, and winerror to the Win32
+ error code. */
+ errcode = PyInt_AsLong(self->myerrno);
+ if (!errcode == -1 && PyErr_Occurred())
+ return -1;
+ posix_errno = winerror_to_errno(errcode);
- self->myerrno = o_errcode;
+ self->winerror = self->myerrno;
- return 0;
+ o_errcode = PyInt_FromLong(posix_errno);
+ if (!o_errcode) {
+ Py_DECREF(errcode);
+ return -1;
+ }
+
+ self->myerrno = o_errcode;
+
+ Py_DECREF(errcode);
+ return 0;
}
@@ -660,32 +658,33 @@
PyObject *rtnval = NULL;
if (self->filename != Py_None) {
- fmt = PyString_FromString("[Error %s] %s: %s");
- repr = PyObject_Repr(self->filename);
- if (!fmt || !repr)
- goto finally;
-
- tuple = PyTuple_Pack(3, self->myerrno, self->strerror, repr);
- if (!tuple)
- goto finally;
-
- rtnval = PyString_Format(fmt, tuple);
- /* GB: tuple must be DECREFd */
- }
- else if (PyObject_IsTrue(self->myerrno) && PyObject_IsTrue(self->strerror)) {
- fmt = PyString_FromString("[Error %s] %s");
- if (!fmt)
- goto finally;
-
- tuple = PyTuple_Pack(2, self->myerrno, self->strerror);
- if (!tuple)
- goto finally;
+ fmt = PyString_FromString("[Error %s] %s: %s");
+ repr = PyObject_Repr(self->filename);
+ if (!fmt || !repr)
+ goto finally;
+
+ tuple = PyTuple_Pack(3, self->myerrno, self->strerror, repr);
+ if (!tuple)
+ goto finally;
+
+ rtnval = PyString_Format(fmt, tuple);
+ Py_DECREF(tuple);
+ }
+ else if (PyObject_IsTrue(self->myerrno) &&
+ PyObject_IsTrue(self->strerror)) {
+ fmt = PyString_FromString("[Error %s] %s");
+ if (!fmt)
+ goto finally;
+
+ tuple = PyTuple_Pack(2, self->myerrno, self->strerror);
+ if (!tuple)
+ goto finally;
- rtnval = PyString_Format(fmt, tuple);
- /* GB: tuple must be DECREFd */
+ rtnval = PyString_Format(fmt, tuple);
+ Py_DECREF(tuple);
}
else
- rtnval = EnvironmentError_str(self);
+ rtnval = EnvironmentError_str(self);
finally:
/* GB: where is filename, serrno and strerror declared? */
@@ -699,13 +698,19 @@
}
static PyMemberDef WindowsError_members[] = {
- {"args", T_OBJECT, offsetof(WindowsErrorObject, args), 0, "exception arguments"},
- {"message", T_OBJECT, offsetof(WindowsErrorObject, message), 0, "exception message"},
- {"errno", T_OBJECT, offsetof(WindowsErrorObject, myerrno), 0, "exception code"},
- {"strerror", T_OBJECT, offsetof(WindowsErrorObject, strerror), 0, "exception code"},
- {"filename", T_OBJECT, offsetof(WindowsErrorObject, filename), 0, "exception code"},
- {"winerror", T_OBJECT, offsetof(WindowsErrorObject, winerror), 0, "windows exception code"},
- {NULL} /* Sentinel */
+ {"args", T_OBJECT, offsetof(WindowsErrorObject, args), 0,
+ PyDoc_STR("exception arguments")},
+ {"message", T_OBJECT, offsetof(WindowsErrorObject, message), 0,
+ PyDoc_STR("exception message")},
+ {"errno", T_OBJECT, offsetof(WindowsErrorObject, myerrno), 0,
+ PyDoc_STR("exception code")},
+ {"strerror", T_OBJECT, offsetof(WindowsErrorObject, strerror), 0,
+ PyDoc_STR("exception code")},
+ {"filename", T_OBJECT, offsetof(WindowsErrorObject, filename), 0,
+ PyDoc_STR("exception code")},
+ {"winerror", T_OBJECT, offsetof(WindowsErrorObject, winerror), 0,
+ PyDoc_STR("windows exception code")},
+ {NULL} /* Sentinel */
};
ComplexExtendsException(PyExc_OSError, WindowsError, WindowsError, EnvironmentError_dealloc, 0, WindowsError_members, WindowsError_str, "MS-Windows OS system call failed.");
@@ -758,38 +763,41 @@
* SyntaxError extends StandardError
*/
typedef struct {
- PyObject_HEAD
- PyObject *args;
- PyObject *message;
- PyObject *msg;
- PyObject *filename;
- PyObject *lineno;
- PyObject *offset;
- PyObject *text;
- PyObject *print_file_and_line;
+ PyObject_HEAD
+ PyObject *args;
+ PyObject *message;
+ PyObject *msg;
+ PyObject *filename;
+ PyObject *lineno;
+ PyObject *offset;
+ PyObject *text;
+ PyObject *print_file_and_line;
} SyntaxErrorObject;
static int
_SyntaxError_init(SyntaxErrorObject *self, PyObject *args, PyObject *kwds)
{
PyObject *info = NULL;
- Py_ssize_t lenargs;
+ Py_ssize_t lenargs = PySequence_Length(args);
- lenargs = PySequence_Size(args);
if (lenargs >= 1) {
- PyObject *item0 = PySequence_GetItem(args, 0);
- if (!item0) return -1;
- self->msg = item0;
+ PyObject *item0 = PySequence_GetItem(args, 0);
+ if (!item0) return -1;
+ self->msg = item0;
}
if (lenargs == 2) {
info = PySequence_GetItem(args, 1);
- if (!info) return -1;
- self->filename = PySequence_GetItem(info, 0);
+ if (!info) return -1;
+
+ self->filename = PySequence_GetItem(info, 0);
if (!self->filename) return -1;
+
self->lineno = PySequence_GetItem(info, 1);
if (!self->lineno) return -1;
+
self->offset = PySequence_GetItem(info, 2);
if (!self->offset) return -1;
+
self->text = PySequence_GetItem(info, 3);
if (!self->text) return -1;
}
@@ -813,9 +821,8 @@
self->print_file_and_line = Py_None;
Py_INCREF(Py_None);
- /* GB: why clear the error? some fields can still be NULL */
if (_SyntaxError_init(self, args, kwds) == -1)
- PyErr_Clear();
+ return NULL;
return (PyObject *)self;
}
@@ -829,13 +836,13 @@
static void
SyntaxError_dealloc(SyntaxErrorObject *self)
{
+ Py_CLEAR(self->msg);
+ Py_CLEAR(self->filename);
+ Py_CLEAR(self->lineno);
+ Py_CLEAR(self->offset);
+ Py_CLEAR(self->text);
+ Py_CLEAR(self->print_file_and_line);
BaseException_dealloc((BaseExceptionObject *)self);
- Py_XDECREF(self->msg);
- Py_XDECREF(self->filename);
- Py_XDECREF(self->lineno);
- Py_XDECREF(self->offset);
- Py_XDECREF(self->text);
- Py_XDECREF(self->print_file_and_line);
}
/* This is called "my_basename" instead of just "basename" to avoid name
@@ -844,17 +851,17 @@
static char *
my_basename(char *name)
{
- char *cp = name;
- char *result = name;
+ char *cp = name;
+ char *result = name;
- if (name == NULL)
- return "???";
- while (*cp != '\0') {
- if (*cp == SEP)
- result = cp + 1;
- ++cp;
- }
- return result;
+ if (name == NULL)
+ return "???";
+ while (*cp != '\0') {
+ if (*cp == SEP)
+ result = cp + 1;
+ ++cp;
+ }
+ return result;
}
@@ -888,17 +895,17 @@
if (buffer != NULL) {
if (have_filename && have_lineno)
PyOS_snprintf(buffer, bufsize, "%s (%s, line %ld)",
- PyString_AS_STRING(str),
- my_basename(PyString_AS_STRING(self->filename)),
- PyInt_AsLong(self->lineno));
+ PyString_AS_STRING(str),
+ my_basename(PyString_AS_STRING(self->filename)),
+ PyInt_AsLong(self->lineno));
else if (have_filename)
PyOS_snprintf(buffer, bufsize, "%s (%s)",
- PyString_AS_STRING(str),
- my_basename(PyString_AS_STRING(self->filename)));
+ PyString_AS_STRING(str),
+ my_basename(PyString_AS_STRING(self->filename)));
else if (have_lineno)
PyOS_snprintf(buffer, bufsize, "%s (line %ld)",
- PyString_AS_STRING(str),
- PyInt_AsLong(self->lineno));
+ PyString_AS_STRING(str),
+ PyInt_AsLong(self->lineno));
result = PyString_FromString(buffer);
PyMem_FREE(buffer);
@@ -914,15 +921,24 @@
}
static PyMemberDef SyntaxError_members[] = {
- {"args", T_OBJECT, offsetof(SyntaxErrorObject, args), 0, "exception arguments"},
- {"message", T_OBJECT, offsetof(SyntaxErrorObject, message), 0, "exception message"},
- {"msg", T_OBJECT, offsetof(SyntaxErrorObject, msg), 0, "exception msg"},
- {"filename", T_OBJECT, offsetof(SyntaxErrorObject, filename), 0, "exception filename"},
- {"lineno", T_OBJECT, offsetof(SyntaxErrorObject, lineno), 0, "exception lineno"},
- {"offset", T_OBJECT, offsetof(SyntaxErrorObject, offset), 0, "exception offset"},
- {"text", T_OBJECT, offsetof(SyntaxErrorObject, text), 0, "exception text"},
- {"print_file_and_line", T_OBJECT, offsetof(SyntaxErrorObject, print_file_and_line), 0, "exception print_file_and_line"},
- {NULL} /* Sentinel */
+ {"args", T_OBJECT, offsetof(SyntaxErrorObject, args), 0,
+ PyDoc_STR("exception arguments")},
+ {"message", T_OBJECT, offsetof(SyntaxErrorObject, message), 0,
+ PyDoc_STR("exception message")},
+ {"msg", T_OBJECT, offsetof(SyntaxErrorObject, msg), 0,
+ PyDoc_STR("exception msg")},
+ {"filename", T_OBJECT, offsetof(SyntaxErrorObject, filename), 0,
+ PyDoc_STR("exception filename")},
+ {"lineno", T_OBJECT, offsetof(SyntaxErrorObject, lineno), 0,
+ PyDoc_STR("exception lineno")},
+ {"offset", T_OBJECT, offsetof(SyntaxErrorObject, offset), 0,
+ PyDoc_STR("exception offset")},
+ {"text", T_OBJECT, offsetof(SyntaxErrorObject, text), 0,
+ PyDoc_STR("exception text")},
+ {"print_file_and_line", T_OBJECT,
+ offsetof(SyntaxErrorObject, print_file_and_line), 0,
+ PyDoc_STR("exception print_file_and_line")},
+ {NULL} /* Sentinel */
};
ComplexExtendsException(PyExc_StandardError, SyntaxError, SyntaxError, SyntaxError_dealloc, 0, SyntaxError_members, SyntaxError_str, "Invalid syntax.");
@@ -1004,21 +1020,19 @@
int get_int(PyObject *attr, Py_ssize_t *value, const char *name)
{
if (!attr) {
- PyErr_Format(PyExc_TypeError, "%.200s attribute not set", name);
+ PyErr_Format(PyExc_TypeError, "%.200s attribute not set", name);
return -1;
}
if (PyInt_Check(attr)) {
*value = PyInt_AS_LONG(attr);
} else if (PyLong_Check(attr)) {
- /* GB: why not casting to Py_ssize_t? Can we be sure that LongLong
- isn't larger than Py_ssize_t? */
- *value = (size_t)PyLong_AsLongLong(attr);
- if (*value == -1)
- return -1;
+ *value = PyLong_AsLongLong(attr);
+ if (*value == -1)
+ return -1;
} else {
- PyErr_Format(PyExc_TypeError, "%.200s attribute must be int", name);
- return -1;
+ PyErr_Format(PyExc_TypeError, "%.200s attribute must be int", name);
+ return -1;
}
return 0;
}
@@ -1028,7 +1042,7 @@
{
PyObject *obj = PyInt_FromSsize_t(value);
if (!obj)
- return -1;
+ return -1;
Py_XDECREF(*attr);
*attr = obj;
return 0;
@@ -1038,13 +1052,13 @@
PyObject *get_string(PyObject *attr, const char *name)
{
if (!attr) {
- PyErr_Format(PyExc_TypeError, "%.200s attribute not set", name);
+ PyErr_Format(PyExc_TypeError, "%.200s attribute not set", name);
return NULL;
}
if (!PyString_Check(attr)) {
- PyErr_Format(PyExc_TypeError, "%.200s attribute must be str", name);
- return NULL;
+ PyErr_Format(PyExc_TypeError, "%.200s attribute must be str", name);
+ return NULL;
}
Py_INCREF(attr);
return attr;
@@ -1056,7 +1070,7 @@
{
PyObject *obj = PyString_FromString(value);
if (!obj)
- return -1;
+ return -1;
Py_XDECREF(*attr);
*attr = obj;
return 0;
@@ -1067,19 +1081,18 @@
PyObject *get_unicode(PyObject *attr, const char *name)
{
if (!attr) {
- PyErr_Format(PyExc_TypeError, "%.200s attribute not set", name);
+ PyErr_Format(PyExc_TypeError, "%.200s attribute not set", name);
return NULL;
}
if (!PyUnicode_Check(attr)) {
- PyErr_Format(PyExc_TypeError, "%.200s attribute must be unicode", name);
- return NULL;
+ PyErr_Format(PyExc_TypeError, "%.200s attribute must be unicode", name);
+ return NULL;
}
Py_INCREF(attr);
return attr;
}
-/* GB: Can't this be done more easily with a PyMemberDef? */
PyObject * PyUnicodeEncodeError_GetEncoding(PyObject *exc)
{
return get_string(((UnicodeErrorObject *)exc)->encoding, "encoding");
@@ -1108,13 +1121,13 @@
int PyUnicodeEncodeError_GetStart(PyObject *exc, Py_ssize_t *start)
{
if (!get_int(((UnicodeErrorObject *)exc)->start, start, "start")) {
- Py_ssize_t size;
- size = PyUnicode_GET_SIZE(((UnicodeErrorObject *)exc)->object);
- if (*start<0)
- *start = 0; /*XXX check for values <0*/
- if (*start>=size)
- *start = size-1;
- return 0;
+ Py_ssize_t size;
+ size = PyUnicode_GET_SIZE(((UnicodeErrorObject *)exc)->object);
+ if (*start<0)
+ *start = 0; /*XXX check for values <0*/
+ if (*start>=size)
+ *start = size-1;
+ return 0;
}
return -1;
}
@@ -1123,13 +1136,13 @@
int PyUnicodeDecodeError_GetStart(PyObject *exc, Py_ssize_t *start)
{
if (!get_int(((UnicodeErrorObject *)exc)->start, start, "start")) {
- Py_ssize_t size;
- size = PyString_GET_SIZE(((UnicodeErrorObject *)exc)->object);
- if (*start<0)
- *start = 0;
- if (*start>=size)
- *start = size-1;
- return 0;
+ Py_ssize_t size;
+ size = PyString_GET_SIZE(((UnicodeErrorObject *)exc)->object);
+ if (*start<0)
+ *start = 0;
+ if (*start>=size)
+ *start = size-1;
+ return 0;
}
return -1;
}
@@ -1162,13 +1175,13 @@
int PyUnicodeEncodeError_GetEnd(PyObject *exc, Py_ssize_t *end)
{
if (!get_int(((UnicodeErrorObject *)exc)->end, end, "end")) {
- Py_ssize_t size;
- size = PyUnicode_GET_SIZE(((UnicodeErrorObject *)exc)->object);
- if (*end<1)
- *end = 1;
- if (*end>size)
- *end = size;
- return 0;
+ Py_ssize_t size;
+ size = PyUnicode_GET_SIZE(((UnicodeErrorObject *)exc)->object);
+ if (*end<1)
+ *end = 1;
+ if (*end>size)
+ *end = size;
+ return 0;
}
return -1;
}
@@ -1177,13 +1190,13 @@
int PyUnicodeDecodeError_GetEnd(PyObject *exc, Py_ssize_t *end)
{
if (!get_int(((UnicodeErrorObject *)exc)->end, end, "end")) {
- Py_ssize_t size;
- size = PyString_GET_SIZE(((UnicodeErrorObject *)exc)->object);
- if (*end<1)
- *end = 1;
- if (*end>size)
- *end = size;
- return 0;
+ Py_ssize_t size;
+ size = PyString_GET_SIZE(((UnicodeErrorObject *)exc)->object);
+ if (*end<1)
+ *end = 1;
+ if (*end>size)
+ *end = size;
+ return 0;
}
return -1;
}
@@ -1261,7 +1274,7 @@
self->encoding = self->object = self->start = self->end =
self->reason = NULL;
- n = PySequence_Size(args);
+ n = PySequence_Length(args);
if (n == -1 && PyErr_Occurred()) {
Py_DECREF(self);
return NULL;
@@ -1270,15 +1283,15 @@
return (PyObject *)self;
if (!PyArg_ParseTuple(args, "O!O!O!O!O!",
- &PyString_Type, &self->encoding,
- objecttype, &self->object,
- &PyInt_Type, &self->start,
- &PyInt_Type, &self->end,
- &PyString_Type, &self->reason)) {
+ &PyString_Type, &self->encoding,
+ objecttype, &self->object,
+ &PyInt_Type, &self->start,
+ &PyInt_Type, &self->end,
+ &PyString_Type, &self->reason)) {
self->encoding = self->object = self->start = self->end =
self->reason = NULL;
Py_DECREF(self);
- return NULL;
+ return NULL;
}
Py_INCREF(self->encoding);
@@ -1294,14 +1307,14 @@
UnicodeError_init(UnicodeErrorObject *self, PyObject *args, PyObject *kwds, PyTypeObject *objecttype)
{
if (!PyArg_ParseTuple(args, "O!O!O!O!O!",
- &PyString_Type, &self->encoding,
- objecttype, &self->object,
- &PyInt_Type, &self->start,
- &PyInt_Type, &self->end,
- &PyString_Type, &self->reason)) {
+ &PyString_Type, &self->encoding,
+ objecttype, &self->object,
+ &PyInt_Type, &self->start,
+ &PyInt_Type, &self->end,
+ &PyString_Type, &self->reason)) {
self->encoding = self->object = self->start = self->end =
self->reason = NULL;
- return -1;
+ return -1;
}
Py_INCREF(self->encoding);
@@ -1316,23 +1329,30 @@
static void
UnicodeError_dealloc(UnicodeErrorObject *self)
{
+ Py_CLEAR(self->encoding);
+ Py_CLEAR(self->object);
+ Py_CLEAR(self->start);
+ Py_CLEAR(self->end);
+ Py_CLEAR(self->reason);
BaseException_dealloc((BaseExceptionObject *)self);
- Py_XDECREF(self->encoding);
- Py_XDECREF(self->object);
- Py_XDECREF(self->start);
- Py_XDECREF(self->end);
- Py_XDECREF(self->reason);
}
static PyMemberDef UnicodeError_members[] = {
- {"args", T_OBJECT, offsetof(UnicodeErrorObject, args), 0, "exception arguments"},
- {"message", T_OBJECT, offsetof(UnicodeErrorObject, message), 0, "exception message"},
- {"encoding", T_OBJECT, offsetof(UnicodeErrorObject, encoding), 0, "exception encoding"},
- {"object", T_OBJECT, offsetof(UnicodeErrorObject, object), 0, "exception object"},
- {"start", T_OBJECT, offsetof(UnicodeErrorObject, start), 0, "exception start"},
- {"end", T_OBJECT, offsetof(UnicodeErrorObject, end), 0, "exception end"},
- {"reason", T_OBJECT, offsetof(UnicodeErrorObject, reason), 0, "exception reason"},
- {NULL} /* Sentinel */
+ {"args", T_OBJECT, offsetof(UnicodeErrorObject, args), 0,
+ PyDoc_STR("exception arguments")},
+ {"message", T_OBJECT, offsetof(UnicodeErrorObject, message), 0,
+ PyDoc_STR("exception message")},
+ {"encoding", T_OBJECT, offsetof(UnicodeErrorObject, encoding), 0,
+ PyDoc_STR("exception encoding")},
+ {"object", T_OBJECT, offsetof(UnicodeErrorObject, object), 0,
+ PyDoc_STR("exception object")},
+ {"start", T_OBJECT, offsetof(UnicodeErrorObject, start), 0,
+ PyDoc_STR("exception start")},
+ {"end", T_OBJECT, offsetof(UnicodeErrorObject, end), 0,
+ PyDoc_STR("exception end")},
+ {"reason", T_OBJECT, offsetof(UnicodeErrorObject, reason), 0,
+ PyDoc_STR("exception reason")},
+ {NULL} /* Sentinel */
};
@@ -1358,27 +1378,27 @@
Py_ssize_t end;
if (PyUnicodeEncodeError_GetStart(self, &start))
- return NULL;
+ return NULL;
if (PyUnicodeEncodeError_GetEnd(self, &end))
- return NULL;
+ return NULL;
if (end==start+1) {
- int badchar = (int)PyUnicode_AS_UNICODE(((UnicodeErrorObject *)self)->object)[start];
- char badchar_str[20];
- if (badchar <= 0xff)
- PyOS_snprintf(badchar_str, sizeof(badchar_str), "x%02x", badchar);
- else if (badchar <= 0xffff)
- PyOS_snprintf(badchar_str, sizeof(badchar_str), "u%04x", badchar);
- else
- PyOS_snprintf(badchar_str, sizeof(badchar_str), "U%08x", badchar);
- return PyString_FromFormat(
- "'%.400s' codec can't encode character u'\\%s' in position %zd: %.400s",
- PyString_AS_STRING(((UnicodeErrorObject *)self)->encoding),
- badchar_str,
- start,
- PyString_AS_STRING(((UnicodeErrorObject *)self)->reason)
- );
+ int badchar = (int)PyUnicode_AS_UNICODE(((UnicodeErrorObject *)self)->object)[start];
+ char badchar_str[20];
+ if (badchar <= 0xff)
+ PyOS_snprintf(badchar_str, sizeof(badchar_str), "x%02x", badchar);
+ else if (badchar <= 0xffff)
+ PyOS_snprintf(badchar_str, sizeof(badchar_str), "u%04x", badchar);
+ else
+ PyOS_snprintf(badchar_str, sizeof(badchar_str), "U%08x", badchar);
+ return PyString_FromFormat(
+ "'%.400s' codec can't encode character u'\\%s' in position %zd: %.400s",
+ PyString_AS_STRING(((UnicodeErrorObject *)self)->encoding),
+ badchar_str,
+ start,
+ PyString_AS_STRING(((UnicodeErrorObject *)self)->reason)
+ );
}
return PyString_FromFormat(
"'%.400s' codec can't encode characters in position %zd-%zd: %.400s",
@@ -1397,18 +1417,18 @@
(destructor)UnicodeError_dealloc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
(reprfunc)UnicodeEncodeError_str, 0, 0, 0,
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
- "Unicode encoding error.",
+ PyDoc_STR("Unicode encoding error."),
0, 0, 0, 0, 0, 0, 0, UnicodeError_members, 0, &_PyExc_UnicodeError,
0, 0, 0, 0, (initproc)UnicodeEncodeError_init, 0, UnicodeEncodeError_new,
};
PyObject *PyExc_UnicodeEncodeError = (PyObject *)&_PyExc_UnicodeEncodeError;
PyObject * PyUnicodeEncodeError_Create(
- const char *encoding, const Py_UNICODE *object, Py_ssize_t length,
- Py_ssize_t start, Py_ssize_t end, const char *reason)
+ const char *encoding, const Py_UNICODE *object, Py_ssize_t length,
+ Py_ssize_t start, Py_ssize_t end, const char *reason)
{
return PyObject_CallFunction(PyExc_UnicodeEncodeError, "su#nns",
- encoding, object, length, start, end, reason);
+ encoding, object, length, start, end, reason);
}
@@ -1434,30 +1454,30 @@
Py_ssize_t end;
if (PyUnicodeDecodeError_GetStart(self, &start))
- return NULL;
+ return NULL;
if (PyUnicodeDecodeError_GetEnd(self, &end))
- return NULL;
+ return NULL;
if (end==start+1) {
- /* FromFormat does not support %02x, so format that separately */
- char byte[4];
- PyOS_snprintf(byte, sizeof(byte), "%02x",
- ((int)PyString_AS_STRING(((UnicodeErrorObject *)self)->object)[start])&0xff);
- return PyString_FromFormat(
- "'%.400s' codec can't decode byte 0x%s in position %zd: %.400s",
- PyString_AS_STRING(((UnicodeErrorObject *)self)->encoding),
- byte,
- start,
- PyString_AS_STRING(((UnicodeErrorObject *)self)->reason)
- );
+ /* FromFormat does not support %02x, so format that separately */
+ char byte[4];
+ PyOS_snprintf(byte, sizeof(byte), "%02x",
+ ((int)PyString_AS_STRING(((UnicodeErrorObject *)self)->object)[start])&0xff);
+ return PyString_FromFormat(
+ "'%.400s' codec can't decode byte 0x%s in position %zd: %.400s",
+ PyString_AS_STRING(((UnicodeErrorObject *)self)->encoding),
+ byte,
+ start,
+ PyString_AS_STRING(((UnicodeErrorObject *)self)->reason)
+ );
}
return PyString_FromFormat(
- "'%.400s' codec can't decode bytes in position %zd-%zd: %.400s",
- PyString_AS_STRING(((UnicodeErrorObject *)self)->encoding),
- start,
- (end-1),
- PyString_AS_STRING(((UnicodeErrorObject *)self)->reason)
+ "'%.400s' codec can't decode bytes in position %zd-%zd: %.400s",
+ PyString_AS_STRING(((UnicodeErrorObject *)self)->encoding),
+ start,
+ (end-1),
+ PyString_AS_STRING(((UnicodeErrorObject *)self)->reason)
);
}
@@ -1469,21 +1489,21 @@
(destructor)UnicodeError_dealloc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
(reprfunc)UnicodeDecodeError_str, 0, 0, 0,
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
- "Unicode decoding error.",
+ PyDoc_STR("Unicode decoding error."),
0, 0, 0, 0, 0, 0, 0, UnicodeError_members, 0, &_PyExc_UnicodeError,
0, 0, 0, 0, (initproc)UnicodeDecodeError_init, 0, UnicodeDecodeError_new,
};
PyObject *PyExc_UnicodeDecodeError = (PyObject *)&_PyExc_UnicodeDecodeError;
PyObject * PyUnicodeDecodeError_Create(
- const char *encoding, const char *object, Py_ssize_t length,
- Py_ssize_t start, Py_ssize_t end, const char *reason)
+ const char *encoding, const char *object, Py_ssize_t length,
+ Py_ssize_t start, Py_ssize_t end, const char *reason)
{
- assert(length < INT_MAX);
- assert(start < INT_MAX);
- assert(end < INT_MAX);
+ assert(length < INT_MAX);
+ assert(start < INT_MAX);
+ assert(end < INT_MAX);
return PyObject_CallFunction(PyExc_UnicodeDecodeError, "ss#nns",
- encoding, object, length, start, end, reason);
+ encoding, object, length, start, end, reason);
}
@@ -1503,7 +1523,7 @@
self->encoding = self->object = self->start = self->end =
self->reason = NULL;
- n = PySequence_Size(args);
+ n = PySequence_Length(args);
if (n == -1 && PyErr_Occurred()) {
Py_DECREF(self);
return NULL;
@@ -1512,13 +1532,13 @@
return (PyObject *)self;
if (!PyArg_ParseTuple(args, "O!O!O!O!",
- &PyUnicode_Type, &self->object,
- &PyInt_Type, &self->start,
- &PyInt_Type, &self->end,
- &PyString_Type, &self->reason)) {
+ &PyUnicode_Type, &self->object,
+ &PyInt_Type, &self->start,
+ &PyInt_Type, &self->end,
+ &PyString_Type, &self->reason)) {
self->object = self->start = self->end = self->reason = NULL;
Py_DECREF(self);
- return NULL;
+ return NULL;
}
self->encoding = Py_None;
@@ -1535,12 +1555,12 @@
UnicodeTranslateError_init(UnicodeErrorObject *self, PyObject *args, PyObject *kwds)
{
if (!PyArg_ParseTuple(args, "O!O!O!O!",
- &PyUnicode_Type, &self->object,
- &PyInt_Type, &self->start,
- &PyInt_Type, &self->end,
- &PyString_Type, &self->reason)) {
+ &PyUnicode_Type, &self->object,
+ &PyInt_Type, &self->start,
+ &PyInt_Type, &self->end,
+ &PyString_Type, &self->reason)) {
self->object = self->start = self->end = self->reason = NULL;
- return -1;
+ return -1;
}
self->encoding = Py_None;
@@ -1561,32 +1581,32 @@
Py_ssize_t end;
if (PyUnicodeTranslateError_GetStart(self, &start))
- return NULL;
+ return NULL;
if (PyUnicodeTranslateError_GetEnd(self, &end))
- return NULL;
+ return NULL;
if (end==start+1) {
- int badchar = (int)PyUnicode_AS_UNICODE(((UnicodeErrorObject *)self)->object)[start];
- char badchar_str[20];
- if (badchar <= 0xff)
- PyOS_snprintf(badchar_str, sizeof(badchar_str), "x%02x", badchar);
- else if (badchar <= 0xffff)
- PyOS_snprintf(badchar_str, sizeof(badchar_str), "u%04x", badchar);
- else
- PyOS_snprintf(badchar_str, sizeof(badchar_str), "U%08x", badchar);
- return PyString_FromFormat(
+ int badchar = (int)PyUnicode_AS_UNICODE(((UnicodeErrorObject *)self)->object)[start];
+ char badchar_str[20];
+ if (badchar <= 0xff)
+ PyOS_snprintf(badchar_str, sizeof(badchar_str), "x%02x", badchar);
+ else if (badchar <= 0xffff)
+ PyOS_snprintf(badchar_str, sizeof(badchar_str), "u%04x", badchar);
+ else
+ PyOS_snprintf(badchar_str, sizeof(badchar_str), "U%08x", badchar);
+ return PyString_FromFormat(
"can't translate character u'\\%s' in position %zd: %.400s",
- badchar_str,
- start,
- PyString_AS_STRING(((UnicodeErrorObject *)self)->reason)
- );
+ badchar_str,
+ start,
+ PyString_AS_STRING(((UnicodeErrorObject *)self)->reason)
+ );
}
return PyString_FromFormat(
- "can't translate characters in position %zd-%zd: %.400s",
- start,
- (end-1),
- PyString_AS_STRING(((UnicodeErrorObject *)self)->reason)
+ "can't translate characters in position %zd-%zd: %.400s",
+ start,
+ (end-1),
+ PyString_AS_STRING(((UnicodeErrorObject *)self)->reason)
);
}
@@ -1598,18 +1618,18 @@
(destructor)UnicodeError_dealloc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
(reprfunc)UnicodeTranslateError_str, 0, 0, 0,
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
- "Unicode decoding error.",
+ PyDoc_STR("Unicode decoding error."),
0, 0, 0, 0, 0, 0, 0, UnicodeError_members, 0, &_PyExc_UnicodeError,
0, 0, 0, 0, (initproc)UnicodeTranslateError_init, 0, UnicodeTranslateError_new,
};
PyObject *PyExc_UnicodeTranslateError = (PyObject *)&_PyExc_UnicodeTranslateError;
PyObject * PyUnicodeTranslateError_Create(
- const Py_UNICODE *object, Py_ssize_t length,
- Py_ssize_t start, Py_ssize_t end, const char *reason)
+ const Py_UNICODE *object, Py_ssize_t length,
+ Py_ssize_t start, Py_ssize_t end, const char *reason)
{
return PyObject_CallFunction(PyExc_UnicodeTranslateError, "u#nns",
- object, length, start, end, reason);
+ object, length, start, end, reason);
}
#endif
@@ -1701,12 +1721,6 @@
/*
- * OverflowWarning extends Warning
- */
-SimpleExtendsException(PyExc_Warning, OverflowWarning, "Base class for warnings about numeric overflow. Won't exist in Python 2.5.");
-
-
-/*
* RuntimeWarning extends Warning
*/
SimpleExtendsException(PyExc_Warning, RuntimeWarning, "Base class for warnings about dubious runtime behavior.");
@@ -1753,10 +1767,10 @@
bltinmod = PyImport_ImportModule("__builtin__");
if (bltinmod == NULL)
- Py_FatalError("exceptions bootstrapping error.");
+ Py_FatalError("exceptions bootstrapping error.");
bdict = PyModule_GetDict(bltinmod);
if (bdict == NULL)
- Py_FatalError("exceptions bootstrapping error.");
+ Py_FatalError("exceptions bootstrapping error.");
PRE_INIT(BaseException)
PRE_INIT(Exception)
@@ -1808,7 +1822,6 @@
PRE_INIT(DeprecationWarning)
PRE_INIT(PendingDeprecationWarning)
PRE_INIT(SyntaxWarning)
- PRE_INIT(OverflowWarning)
PRE_INIT(RuntimeWarning)
PRE_INIT(FutureWarning)
PRE_INIT(ImportWarning)
@@ -1866,14 +1879,13 @@
POST_INIT(DeprecationWarning)
POST_INIT(PendingDeprecationWarning)
POST_INIT(SyntaxWarning)
- POST_INIT(OverflowWarning)
POST_INIT(RuntimeWarning)
POST_INIT(FutureWarning)
POST_INIT(ImportWarning)
PyExc_MemoryErrorInst = BaseException_new(&_PyExc_MemoryError, NULL, NULL);
if (!PyExc_MemoryErrorInst)
- Py_FatalError("Cannot pre-allocate MemoryError instance\n");
+ Py_FatalError("Cannot pre-allocate MemoryError instance\n");
Py_DECREF(bdict);
Py_DECREF(bltinmod);
More information about the Python-checkins
mailing list