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