Fixed bug #29086 & #28064 (PHP crashes on extremly long scripts).

This commit is contained in:
Ilia Alshanetsky 2004-07-12 17:47:29 +00:00
parent 0ad4c5037c
commit a8996a8ac6

View File

@ -1330,7 +1330,7 @@ static int zend_check_symbol(zval **pz TSRMLS_DC)
} }
#define RETURN_FROM_EXECUTE_LOOP(execute_data) \ #define RETURN_FROM_EXECUTE_LOOP(execute_data) \
free_alloca(EX(Ts)); \ efree(EX(Ts)); \
EG(in_execution) = EX(original_in_execution); \ EG(in_execution) = EX(original_in_execution); \
EG(current_execute_data) = EX(prev_execute_data); \ EG(current_execute_data) = EX(prev_execute_data); \
return 1; /* CHECK_ME */ return 1; /* CHECK_ME */
@ -1349,7 +1349,7 @@ ZEND_API void execute(zend_op_array *op_array TSRMLS_DC)
/* Initialize execute_data */ /* Initialize execute_data */
EX(fbc) = NULL; EX(fbc) = NULL;
EX(object) = NULL; EX(object) = NULL;
EX(Ts) = (temp_variable *) do_alloca(sizeof(temp_variable)*op_array->T); EX(Ts) = (temp_variable *) safe_emalloc(sizeof(temp_variable), op_array->T, 0);
EX(op_array) = op_array; EX(op_array) = op_array;
EX(original_in_execution) = EG(in_execution); EX(original_in_execution) = EG(in_execution);
EX(prev_execute_data) = EG(current_execute_data); EX(prev_execute_data) = EG(current_execute_data);