From: Andi Gutmans Date: Thu, 3 Jun 1999 21:06:03 +0000 (+0000) Subject: - We weren't counting newlines in heredocs. The only place which is still questionable X-Git-Tag: BEFORE_REMOVING_GC_STEP1~215 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=1225d0307b691e7010627b20ecbc693e63faedff;p=php - We weren't counting newlines in heredocs. The only place which is still questionable is when there's a \ followed by a newline but it seems we have a parse error in this case anyways. - Fixed the alloca() macros so that the alloca() #define in win32 mode won't clash with the real win32 alloca(). --- diff --git a/Zend/zend-scanner.l b/Zend/zend-scanner.l index 587fbb8278..0b6b00d4b8 100644 --- a/Zend/zend-scanner.l +++ b/Zend/zend-scanner.l @@ -1248,6 +1248,7 @@ ESCAPED_AND_WHITESPACE [\n\t\r #'.:;,()|^&+-/*=%!~<>?@]+ "<<<"{TABS_AND_SPACES}{LABEL}("\r")?"\n" { char *s; + CG(zend_lineno)++; CG(heredoc_len) = yyleng-3-1-(yytext[yyleng-2]=='\r'?1:0); s = yytext+3; while ((*s == ' ') || (*s == '\t')) { @@ -1276,6 +1277,7 @@ ESCAPED_AND_WHITESPACE [\n\t\r #'.:;,()|^&+-/*=%!~<>?@]+ int label_len; unsigned char unput_semicolon; + CG(zend_lineno)++; if (yytext[yyleng-2]=='\r') { label_len = yyleng-2; } else { diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c index 1a6a833439..0cc01e898a 100644 --- a/Zend/zend_execute.c +++ b/Zend/zend_execute.c @@ -807,9 +807,10 @@ static void call_overloaded_function(int arg_count, zval *return_value, HashTabl #if (HAVE_ALLOCA || (defined (__GNUC__) && __GNUC__ >= 2)) && !(defined(ZTS) && (WINNT|WIN32)) +# define do_alloca(p) alloca(p) # define free_alloca(p) #else -# define alloca(p) emalloc(p) +# define do_alloca(p) emalloc(p) # define free_alloca(p) efree(p) #endif @@ -826,7 +827,7 @@ void execute(zend_op_array *op_array ELS_DC) zend_function *function_being_called=NULL; zval **object_ptr=NULL; #if !defined (__GNUC__) || __GNUC__ < 2 - temp_variable *Ts = (temp_variable *) alloca(sizeof(temp_variable)*op_array->T); + temp_variable *Ts = (temp_variable *) do_alloca(sizeof(temp_variable)*op_array->T); #else temp_variable Ts[op_array->T]; #endif