mirror of
https://github.com/python/cpython.git
synced 2025-08-03 16:39:00 +00:00
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
number of tests, all because of the codecs/_multibytecodecs issue described here (it's not a Py3K issue, just something Py3K discovers): http://mail.python.org/pipermail/python-dev/2006-April/064051.html Hye-Shik Chang promised to look for a fix, so no need to fix it here. The tests that are expected to break are: test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecs test_multibytecodec This merge fixes an actual test failure (test_weakref) in this branch, though, so I believe merging is the right thing to do anyway.
This commit is contained in:
parent
9ada3d6e29
commit
49fd7fa443
640 changed files with 52240 additions and 18408 deletions
|
@ -37,6 +37,28 @@ module instead.
|
|||
# define PyMODINIT_FUNC void
|
||||
# endif /* __cplusplus */
|
||||
#endif
|
||||
|
||||
#ifndef Py_CLEAR
|
||||
#define Py_CLEAR(op) \
|
||||
do { \
|
||||
if (op) { \
|
||||
PyObject *tmp = (PyObject *)(op); \
|
||||
(op) = NULL; \
|
||||
Py_DECREF(tmp); \
|
||||
} \
|
||||
} while (0)
|
||||
#endif
|
||||
#ifndef Py_VISIT
|
||||
#define Py_VISIT(op) \
|
||||
do { \
|
||||
if (op) { \
|
||||
int vret = visit((PyObject *)(op), arg); \
|
||||
if (vret) \
|
||||
return vret; \
|
||||
} \
|
||||
} while (0)
|
||||
#endif
|
||||
|
||||
/* end 2.2 compatibility macros */
|
||||
|
||||
#define IS_BASESTRING(o) \
|
||||
|
@ -812,28 +834,18 @@ Reader_dealloc(ReaderObj *self)
|
|||
static int
|
||||
Reader_traverse(ReaderObj *self, visitproc visit, void *arg)
|
||||
{
|
||||
int err;
|
||||
#define VISIT(SLOT) \
|
||||
if (SLOT) { \
|
||||
err = visit((PyObject *)(SLOT), arg); \
|
||||
if (err) \
|
||||
return err; \
|
||||
}
|
||||
VISIT(self->dialect);
|
||||
VISIT(self->input_iter);
|
||||
VISIT(self->fields);
|
||||
Py_VISIT(self->dialect);
|
||||
Py_VISIT(self->input_iter);
|
||||
Py_VISIT(self->fields);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
Reader_clear(ReaderObj *self)
|
||||
{
|
||||
Py_XDECREF(self->dialect);
|
||||
Py_XDECREF(self->input_iter);
|
||||
Py_XDECREF(self->fields);
|
||||
self->dialect = NULL;
|
||||
self->input_iter = NULL;
|
||||
self->fields = NULL;
|
||||
Py_CLEAR(self->dialect);
|
||||
Py_CLEAR(self->input_iter);
|
||||
Py_CLEAR(self->fields);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -1245,25 +1257,16 @@ Writer_dealloc(WriterObj *self)
|
|||
static int
|
||||
Writer_traverse(WriterObj *self, visitproc visit, void *arg)
|
||||
{
|
||||
int err;
|
||||
#define VISIT(SLOT) \
|
||||
if (SLOT) { \
|
||||
err = visit((PyObject *)(SLOT), arg); \
|
||||
if (err) \
|
||||
return err; \
|
||||
}
|
||||
VISIT(self->dialect);
|
||||
VISIT(self->writeline);
|
||||
Py_VISIT(self->dialect);
|
||||
Py_VISIT(self->writeline);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
Writer_clear(WriterObj *self)
|
||||
{
|
||||
Py_XDECREF(self->dialect);
|
||||
Py_XDECREF(self->writeline);
|
||||
self->dialect = NULL;
|
||||
self->writeline = NULL;
|
||||
Py_CLEAR(self->dialect);
|
||||
Py_CLEAR(self->writeline);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -1495,7 +1498,7 @@ PyDoc_STRVAR(csv_reader_doc,
|
|||
PyDoc_STRVAR(csv_writer_doc,
|
||||
" csv_writer = csv.writer(fileobj [, dialect='excel']\n"
|
||||
" [optional keyword args])\n"
|
||||
" for row in csv_writer:\n"
|
||||
" for row in sequence:\n"
|
||||
" csv_writer.writerow(row)\n"
|
||||
"\n"
|
||||
" [or]\n"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue