From f93bfc47dfd09a271ef5b96cd4430722e40d0085 Mon Sep 17 00:00:00 2001 From: Zeev Suraski Date: Wed, 1 Aug 2001 02:36:05 +0000 Subject: [PATCH] Implement fast scanning in the multithreaded environment --- Zend/flex.skl | 39 ++++++++++++++++-------------------- Zend/zend_language_scanner.l | 2 -- 2 files changed, 17 insertions(+), 24 deletions(-) diff --git a/Zend/flex.skl b/Zend/flex.skl index 50be07a40f..fb60c3ec9f 100644 --- a/Zend/flex.skl +++ b/Zend/flex.skl @@ -693,34 +693,29 @@ void yyFlexLexer::switch_streams( istream* new_in, ostream* new_out ) yyout = new_out; } -#ifdef YY_INTERACTIVE -int yyFlexLexer::LexerInput( char* buf, int /* max_size */ ) -#else int yyFlexLexer::LexerInput( char* buf, int max_size ) -#endif { - if ( yyin->eof() || yyin->fail() ) - return 0; + if ( yyin->eof() || yyin->fail() ) + return 0; -#ifdef YY_INTERACTIVE - yyin->get( buf[0] ); + if (yy_current_buffer->yy_is_interactive) { + yyin->get( buf[0] ); - if ( yyin->eof() ) - return 0; - - if ( yyin->bad() ) - return -1; + if ( yyin->eof() ) + return 0; - return 1; + if ( yyin->bad() ) + return -1; -#else - (void) yyin->read( buf, max_size ); + return 1; + } else { + (void) yyin->read( buf, max_size ); - if ( yyin->bad() ) - return -1; - else - return yyin->gcount(); -#endif + if ( yyin->bad() ) + return -1; + else + return yyin->gcount(); + } } void yyFlexLexer::LexerOutput( const char* buf, int size ) @@ -1213,7 +1208,7 @@ void yyFlexLexer::yy_init_buffer( YY_BUFFER_STATE b, istream* file ) #endif #endif %+ - b->yy_is_interactive = 0; + b->yy_is_interactive = (file == (istream *) &cin) ? 1 : 0; %* } diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l index 71e63d1820..9b19423fc2 100644 --- a/Zend/zend_language_scanner.l +++ b/Zend/zend_language_scanner.l @@ -78,8 +78,6 @@ #define YY_DECL int lex_scan(zval *zendlval TSRMLS_DC) #endif -#define YY_INTERACTIVE - #define ECHO { ZEND_WRITE( yytext, yyleng ); } #ifdef ZTS -- 2.40.0