_PyUnicodeWriter is destroyed.
*/
int state;
- _PyUnicodeWriter writer;
+ PyUnicodeWriter *writer;
char ok; /* initialized? */
char closed;
static PyObject *
make_intermediate(stringio *self)
{
- PyObject *intermediate = _PyUnicodeWriter_Finish(&self->writer);
+ PyObject *intermediate = PyUnicodeWriter_Finish(self->writer);
+ self->writer = NULL;
self->state = STATE_REALIZED;
if (intermediate == NULL)
return NULL;
- _PyUnicodeWriter_Init(&self->writer);
- self->writer.overallocate = 1;
- if (_PyUnicodeWriter_WriteStr(&self->writer, intermediate)) {
+ self->writer = PyUnicodeWriter_Create(0);
+ if (self->writer == NULL) {
+ Py_DECREF(intermediate);
+ return NULL;
+ }
+ if (PyUnicodeWriter_WriteStr(self->writer, intermediate)) {
Py_DECREF(intermediate);
return NULL;
}
assert(self->state == STATE_ACCUMULATING);
self->state = STATE_REALIZED;
- intermediate = _PyUnicodeWriter_Finish(&self->writer);
+ intermediate = PyUnicodeWriter_Finish(self->writer);
+ self->writer = NULL;
if (intermediate == NULL)
return -1;
if (self->state == STATE_ACCUMULATING) {
if (self->string_size == self->pos) {
- if (_PyUnicodeWriter_WriteStr(&self->writer, decoded))
+ if (PyUnicodeWriter_WriteStr(self->writer, decoded))
goto fail;
goto success;
}
/* Free up some memory */
if (resize_buffer(self, 0) < 0)
return NULL;
- _PyUnicodeWriter_Dealloc(&self->writer);
+ PyUnicodeWriter_Discard(self->writer);
+ self->writer = NULL;
Py_CLEAR(self->readnl);
Py_CLEAR(self->writenl);
Py_CLEAR(self->decoder);
PyMem_Free(self->buf);
self->buf = NULL;
}
- _PyUnicodeWriter_Dealloc(&self->writer);
+ PyUnicodeWriter_Discard(self->writer);
(void)stringio_clear(self);
if (self->weakreflist != NULL) {
PyObject_ClearWeakRefs((PyObject *) self);
self->ok = 0;
- _PyUnicodeWriter_Dealloc(&self->writer);
+ PyUnicodeWriter_Discard(self->writer);
+ self->writer = NULL;
Py_CLEAR(self->readnl);
Py_CLEAR(self->writenl);
Py_CLEAR(self->decoder);
/* Empty stringio object, we can start by accumulating */
if (resize_buffer(self, 0) < 0)
return -1;
- _PyUnicodeWriter_Init(&self->writer);
- self->writer.overallocate = 1;
+ self->writer = PyUnicodeWriter_Create(0);
+ if (self->writer == NULL) {
+ return -1;
+ }
self->state = STATE_ACCUMULATING;
}
self->pos = 0;