]> granicus.if.org Git - php/commitdiff
- We weren't counting newlines in heredocs. The only place which is still questionable
authorAndi Gutmans <andi@php.net>
Thu, 3 Jun 1999 21:06:03 +0000 (21:06 +0000)
committerAndi Gutmans <andi@php.net>
Thu, 3 Jun 1999 21:06:03 +0000 (21:06 +0000)
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().

Zend/zend-scanner.l
Zend/zend_execute.c

index 587fbb8278a884e97d48ef99bac85ade243b8ef1..0b6b00d4b89c32fa745c8de4eff07cee39efbdeb 100644 (file)
@@ -1248,6 +1248,7 @@ ESCAPED_AND_WHITESPACE [\n\t\r #'.:;,()|^&+-/*=%!~<>?@]+
 
 <ST_IN_SCRIPTING>"<<<"{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 {
index 1a6a833439a61fe3a2893f92a58ee4c07e85924f..0cc01e898a0a2e4e16e12fe556672ebc3e736cf9 100644 (file)
@@ -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