Browse Source

- Make zend_eval_string() return SUCCESS/FAILURE

PHP-4.0.5
Andi Gutmans 26 years ago
parent
commit
dc704e26fe
  1. 2
      Zend/zend_execute.h
  2. 7
      Zend/zend_execute_API.c

2
Zend/zend_execute.h

@ -53,7 +53,7 @@ void shutdown_executor(ELS_D);
void execute(zend_op_array *op_array ELS_DC); void execute(zend_op_array *op_array ELS_DC);
ZEND_API int zend_is_true(zval *op); ZEND_API int zend_is_true(zval *op);
ZEND_API inline void safe_free_zval_ptr(zval *p); ZEND_API inline void safe_free_zval_ptr(zval *p);
ZEND_API void zend_eval_string(char *str, zval *retval_ptr CLS_DC ELS_DC);
ZEND_API int zend_eval_string(char *str, zval *retval_ptr CLS_DC ELS_DC);
ZEND_API inline int i_zend_is_true(zval *op); ZEND_API inline int i_zend_is_true(zval *op);
ZEND_API int zval_update_constant(zval **pp); ZEND_API int zval_update_constant(zval **pp);
ZEND_API inline void zend_assign_to_variable_reference(znode *result, zval **variable_ptr_ptr, zval **value_ptr_ptr, temp_variable *Ts ELS_DC); ZEND_API inline void zend_assign_to_variable_reference(znode *result, zval **variable_ptr_ptr, zval **value_ptr_ptr, temp_variable *Ts ELS_DC);

7
Zend/zend_execute_API.c

@ -438,13 +438,14 @@ int call_user_function_ex(HashTable *function_table, zval *object, zval *functio
} }
ZEND_API void zend_eval_string(char *str, zval *retval_ptr CLS_DC ELS_DC)
ZEND_API int zend_eval_string(char *str, zval *retval_ptr CLS_DC ELS_DC)
{ {
zval pv; zval pv;
zend_op_array *new_op_array; zend_op_array *new_op_array;
zend_op_array *original_active_op_array = EG(active_op_array); zend_op_array *original_active_op_array = EG(active_op_array);
zend_function_state *original_function_state_ptr = EG(function_state_ptr); zend_function_state *original_function_state_ptr = EG(function_state_ptr);
int original_handle_op_arrays; int original_handle_op_arrays;
int retval;
if (retval_ptr) { if (retval_ptr) {
pv.value.str.len = strlen(str)+sizeof("return ;")-1; pv.value.str.len = strlen(str)+sizeof("return ;")-1;
@ -495,10 +496,12 @@ ZEND_API void zend_eval_string(char *str, zval *retval_ptr CLS_DC ELS_DC)
destroy_op_array(new_op_array); destroy_op_array(new_op_array);
efree(new_op_array); efree(new_op_array);
EG(return_value_ptr_ptr) = original_return_value_ptr_ptr; EG(return_value_ptr_ptr) = original_return_value_ptr_ptr;
retval = SUCCESS;
} else { } else {
printf("Failed executing:\n%s\n", str);
retval = FAILURE;
} }
zval_dtor(&pv); zval_dtor(&pv);
return retval;
} }

Loading…
Cancel
Save