--- _elementtree.c.orig 2013-09-09 11:51:43.000000000 -0500 +++ _elementtree.c 2013-09-10 11:44:18.000000000 -0500 @@ -757,13 +757,13 @@ text = deepcopy(JOIN_OBJ(self->text), memo); if (!text) goto error; - Py_DECREF(element->text); + Py_DECREF(JOIN_OBJ(element->text)); element->text = JOIN_SET(text, JOIN_GET(self->text)); tail = deepcopy(JOIN_OBJ(self->tail), memo); if (!tail) goto error; - Py_DECREF(element->tail); + Py_DECREF(JOIN_OBJ(element->tail)); element->tail = JOIN_SET(tail, JOIN_GET(self->tail)); if (self->extra) { @@ -852,15 +852,15 @@ PICKLED_TAG, self->tag, PICKLED_CHILDREN, children, PICKLED_ATTRIB, - PICKLED_TEXT, self->text, - PICKLED_TAIL, self->tail); + PICKLED_TEXT, JOIN_OBJ(self->text), + PICKLED_TAIL, JOIN_OBJ(self->tail)); else instancedict = Py_BuildValue("{sOsOsOsOsO}", PICKLED_TAG, self->tag, PICKLED_CHILDREN, children, PICKLED_ATTRIB, self->extra->attrib, - PICKLED_TEXT, self->text, - PICKLED_TAIL, self->tail); + PICKLED_TEXT, JOIN_OBJ(self->text), + PICKLED_TAIL, JOIN_OBJ(self->tail)); if (instancedict) { Py_DECREF(children); return instancedict; @@ -893,12 +893,12 @@ self->tag = tag; Py_INCREF(self->tag); - Py_CLEAR(self->text); - self->text = text ? text : Py_None; + Py_DECREF(JOIN_OBJ(self->text)); + self->text = text ? JOIN_SET(text, PyList_CheckExact(text)) : Py_None; Py_INCREF(self->text); - Py_CLEAR(self->tail); - self->tail = tail ? tail : Py_None; + Py_DECREF(JOIN_OBJ(self->tail)); + self->tail = tail ? JOIN_SET(tail, PyList_CheckExact(tail)) : Py_None; Py_INCREF(self->tail); /* Handle ATTRIB and CHILDREN. */