@@ -187,7 +187,8 @@ error_ret(struct tok_state *tok) /* XXX */
187187 tok -> decoding_erred = 1 ;
188188 if (tok -> fp != NULL && tok -> buf != NULL ) /* see PyTokenizer_Free */
189189 PyMem_FREE (tok -> buf );
190- tok -> buf = NULL ;
190+ tok -> buf = tok -> cur = tok -> end = tok -> inp = tok -> start = NULL ;
191+ tok -> done = E_DECODE ;
191192 return NULL ; /* as if it were EOF */
192193}
193194
@@ -943,11 +944,6 @@ tok_nextc(struct tok_state *tok)
943944 }
944945 buflen = PyBytes_GET_SIZE (u );
945946 buf = PyBytes_AS_STRING (u );
946- if (!buf ) {
947- Py_DECREF (u );
948- tok -> done = E_DECODE ;
949- return EOF ;
950- }
951947 newtok = PyMem_MALLOC (buflen + 1 );
952948 strcpy (newtok , buf );
953949 Py_DECREF (u );
@@ -989,7 +985,6 @@ tok_nextc(struct tok_state *tok)
989985 if (tok -> buf != NULL )
990986 PyMem_FREE (tok -> buf );
991987 tok -> buf = newtok ;
992- tok -> line_start = tok -> buf ;
993988 tok -> cur = tok -> buf ;
994989 tok -> line_start = tok -> buf ;
995990 tok -> inp = strchr (tok -> buf , '\0' );
@@ -1012,7 +1007,8 @@ tok_nextc(struct tok_state *tok)
10121007 }
10131008 if (decoding_fgets (tok -> buf , (int )(tok -> end - tok -> buf ),
10141009 tok ) == NULL ) {
1015- tok -> done = E_EOF ;
1010+ if (!tok -> decoding_erred )
1011+ tok -> done = E_EOF ;
10161012 done = 1 ;
10171013 }
10181014 else {
@@ -1046,6 +1042,8 @@ tok_nextc(struct tok_state *tok)
10461042 return EOF ;
10471043 }
10481044 tok -> buf = newbuf ;
1045+ tok -> cur = tok -> buf + cur ;
1046+ tok -> line_start = tok -> cur ;
10491047 tok -> inp = tok -> buf + curvalid ;
10501048 tok -> end = tok -> buf + newsize ;
10511049 tok -> start = curstart < 0 ? NULL :
0 commit comments