@@ -23,43 +23,33 @@ contains_null_bytes(const char* str, size_t size)
2323 return memchr (str , 0 , size ) != NULL ;
2424}
2525
26- /* Get next char, updating state; error code goes into tok->done */
2726int
28- _PyLexer_nextc (struct tok_state * tok )
27+ _PyLexer_refill (struct tok_state * tok )
2928{
30- int rc ;
31- for (;;) {
32- if (tok -> cur != tok -> inp ) {
33- if (tok -> cur - tok -> line_start >= INT_MAX ) {
34- tok -> done = E_COLUMNOVERFLOW ;
35- return EOF ;
36- }
37- return Py_CHARMASK (tok -> source .bytes [tok -> cur ++ - tok -> source .base_offset ]); /* Fast path */
38- }
39- if (tok -> done != E_OK ) {
40- return EOF ;
41- }
42- rc = _PyTok_ReaderUnderflow (tok );
29+ if (tok -> done != E_OK ) {
30+ return 0 ;
31+ }
32+ int rc = _PyTok_ReaderUnderflow (tok );
4333#if defined(Py_DEBUG )
44- if (tok -> debug ) {
45- fprintf (stderr , "line[%d] = " , tok -> lineno );
46- _PyTokenizer_print_escape (stderr , _PyLexer_BufferPointer (tok , tok -> cur ), tok -> inp - tok -> cur );
47- fprintf (stderr , " tok->done = %d\n" , tok -> done );
48- }
34+ if (tok -> debug ) {
35+ fprintf (stderr , "line[%d] = " , tok -> lineno );
36+ _PyTokenizer_print_escape (stderr , _PyLexer_BufferPointer (tok , tok -> cur ),
37+ tok -> inp - tok -> cur );
38+ fprintf (stderr , " tok->done = %d\n" , tok -> done );
39+ }
4940#endif
50- if (!rc ) {
51- tok -> cur = tok -> inp ;
52- return EOF ;
53- }
54- tok -> line_start = tok -> cur ;
55-
56- if (contains_null_bytes (_PyLexer_BufferPointer (tok , tok -> line_start ), tok -> inp - tok -> line_start )) {
57- _PyTokenizer_syntaxerror (tok , "source code cannot contain null bytes" );
58- tok -> cur = tok -> inp ;
59- return EOF ;
60- }
41+ if (!rc ) {
42+ tok -> cur = tok -> inp ;
43+ return 0 ;
6144 }
62- Py_UNREACHABLE ();
45+ tok -> line_start = tok -> cur ;
46+ if (contains_null_bytes (_PyLexer_BufferPointer (tok , tok -> line_start ),
47+ tok -> inp - tok -> line_start )) {
48+ _PyTokenizer_syntaxerror (tok , "source code cannot contain null bytes" );
49+ tok -> cur = tok -> inp ;
50+ return 0 ;
51+ }
52+ return 1 ;
6353}
6454
6555/* Back-up one character */
0 commit comments