@@ -196,7 +196,8 @@ error_ret(struct tok_state *tok) /* XXX */
196196 tok -> decoding_erred = 1 ;
197197 if (tok -> fp != NULL && tok -> buf != NULL ) /* see PyTokenizer_Free */
198198 PyMem_FREE (tok -> buf );
199- tok -> buf = NULL ;
199+ tok -> buf = tok -> cur = tok -> end = tok -> inp = tok -> start = NULL ;
200+ tok -> done = E_DECODE ;
200201 return NULL ; /* as if it were EOF */
201202}
202203
@@ -952,11 +953,6 @@ tok_nextc(struct tok_state *tok)
952953 }
953954 buflen = PyBytes_GET_SIZE (u );
954955 buf = PyBytes_AS_STRING (u );
955- if (!buf ) {
956- Py_DECREF (u );
957- tok -> done = E_DECODE ;
958- return EOF ;
959- }
960956 newtok = PyMem_MALLOC (buflen + 1 );
961957 strcpy (newtok , buf );
962958 Py_DECREF (u );
@@ -998,7 +994,6 @@ tok_nextc(struct tok_state *tok)
998994 if (tok -> buf != NULL )
999995 PyMem_FREE (tok -> buf );
1000996 tok -> buf = newtok ;
1001- tok -> line_start = tok -> buf ;
1002997 tok -> cur = tok -> buf ;
1003998 tok -> line_start = tok -> buf ;
1004999 tok -> inp = strchr (tok -> buf , '\0' );
@@ -1021,7 +1016,8 @@ tok_nextc(struct tok_state *tok)
10211016 }
10221017 if (decoding_fgets (tok -> buf , (int )(tok -> end - tok -> buf ),
10231018 tok ) == NULL ) {
1024- tok -> done = E_EOF ;
1019+ if (!tok -> decoding_erred )
1020+ tok -> done = E_EOF ;
10251021 done = 1 ;
10261022 }
10271023 else {
@@ -1055,6 +1051,8 @@ tok_nextc(struct tok_state *tok)
10551051 return EOF ;
10561052 }
10571053 tok -> buf = newbuf ;
1054+ tok -> cur = tok -> buf + cur ;
1055+ tok -> line_start = tok -> cur ;
10581056 tok -> inp = tok -> buf + curvalid ;
10591057 tok -> end = tok -> buf + newsize ;
10601058 tok -> start = curstart < 0 ? NULL :
0 commit comments