diff -r aa73e60f65e9 Modules/_csv.c --- a/Modules/_csv.c Fri Sep 21 17:26:35 2012 +0300 +++ b/Modules/_csv.c Tue Sep 25 01:00:01 2012 +0300 @@ -759,9 +759,13 @@ lineobj = PyIter_Next(self->input_iter); if (lineobj == NULL) { /* End of input OR exception */ - if (!PyErr_Occurred() && self->field_len != 0) - PyErr_Format(error_obj, - "newline inside string"); + if (!PyErr_Occurred() && (self->field_len != 0 || + self->state == IN_QUOTED_FIELD)) { + if (self->dialect->strict) + PyErr_SetString(error_obj, "unexpected end of data"); + else if (parse_save_field(self) >= 0) + break; + } return NULL; } if (!PyUnicode_Check(lineobj)) {