diff options
Diffstat (limited to 'ext/mysqli/mysqli.c')
| -rw-r--r-- | ext/mysqli/mysqli.c | 59 | 
1 files changed, 20 insertions, 39 deletions
| diff --git a/ext/mysqli/mysqli.c b/ext/mysqli/mysqli.c index 2d3b08bcb5..a25bc096ce 100644 --- a/ext/mysqli/mysqli.c +++ b/ext/mysqli/mysqli.c @@ -16,8 +16,6 @@    |          Andrey Hristov <andrey@php.net>                             |    |          Ulf Wendel <uw@php.net>                                     |    +----------------------------------------------------------------------+ - -  $Id$  */  #ifdef HAVE_CONFIG_H @@ -185,7 +183,7 @@ void php_clear_stmt_bind(MY_STMT *stmt)  /* {{{ php_clear_mysql */  void php_clear_mysql(MY_MYSQL *mysql) {  	if (mysql->hash_key) { -		zend_string_release(mysql->hash_key); +		zend_string_release_ex(mysql->hash_key, 0);  		mysql->hash_key = NULL;  	}  	if (!Z_ISUNDEF(mysql->li_read)) { @@ -307,8 +305,7 @@ zval *mysqli_read_property(zval *object, zval *member, int type, void **cache_sl  	obj = Z_MYSQLI_P(object);  	if (Z_TYPE_P(member) != IS_STRING) { -		ZVAL_COPY(&tmp_member, member); -		convert_to_string(&tmp_member); +		ZVAL_STR(&tmp_member, zval_get_string_func(member));  		member = &tmp_member;  	} @@ -322,12 +319,11 @@ zval *mysqli_read_property(zval *object, zval *member, int type, void **cache_sl  			retval = &EG(uninitialized_zval);  		}  	} else { -		zend_object_handlers *std_hnd = zend_get_std_object_handlers(); -		retval = std_hnd->read_property(object, member, type, cache_slot, rv); +		retval = zend_std_read_property(object, member, type, cache_slot, rv);  	}  	if (member == &tmp_member) { -		zval_dtor(member); +		zval_ptr_dtor_str(&tmp_member);  	}  	return retval; @@ -342,8 +338,7 @@ void mysqli_write_property(zval *object, zval *member, zval *value, void **cache  	mysqli_prop_handler *hnd = NULL;  	if (Z_TYPE_P(member) != IS_STRING) { -		ZVAL_COPY(&tmp_member, member); -		convert_to_string(&tmp_member); +		ZVAL_STR(&tmp_member, zval_get_string_func(member));  		member = &tmp_member;  	} @@ -356,12 +351,11 @@ void mysqli_write_property(zval *object, zval *member, zval *value, void **cache  	if (hnd) {  		hnd->write_func(obj, value);  	} else { -		zend_object_handlers *std_hnd = zend_get_std_object_handlers(); -		std_hnd->write_property(object, member, value, cache_slot); +		zend_std_write_property(object, member, value, cache_slot);  	}  	if (member == &tmp_member) { -		zval_dtor(member); +		zval_ptr_dtor_str(&tmp_member);  	}  }  /* }}} */ @@ -370,11 +364,11 @@ void mysqli_write_property(zval *object, zval *member, zval *value, void **cache  void mysqli_add_property(HashTable *h, const char *pname, size_t pname_len, mysqli_read_t r_func, mysqli_write_t w_func) {  	mysqli_prop_handler	p; -	p.name = zend_string_init(pname, pname_len, 1); +	p.name = zend_string_init_interned(pname, pname_len, 1);  	p.read_func = (r_func) ? r_func : mysqli_read_na;  	p.write_func = (w_func) ? w_func : mysqli_write_na;  	zend_hash_add_mem(h, p.name, &p, sizeof(mysqli_prop_handler)); -	zend_string_release(p.name); +	zend_string_release_ex(p.name, 1);  }  /* }}} */ @@ -386,10 +380,10 @@ static int mysqli_object_has_property(zval *object, zval *member, int has_set_ex  	if ((p = zend_hash_find_ptr(obj->prop_handler, Z_STR_P(member))) != NULL) {  		switch (has_set_exists) { -			case 2: +			case ZEND_PROPERTY_EXISTS:  				ret = 1;  				break; -			case 1: { +			case ZEND_PROPERTY_NOT_EMPTY: {  				zval rv;  				zval *value = mysqli_read_property(object, member, BP_VAR_IS, cache_slot, &rv);  				if (value != &EG(uninitialized_zval)) { @@ -398,7 +392,7 @@ static int mysqli_object_has_property(zval *object, zval *member, int has_set_ex  				}  				break;  			} -			case 0:{ +			case ZEND_PROPERTY_ISSET: {  				zval rv;  				zval *value = mysqli_read_property(object, member, BP_VAR_IS, cache_slot, &rv);  				if (value != &EG(uninitialized_zval)) { @@ -411,8 +405,7 @@ static int mysqli_object_has_property(zval *object, zval *member, int has_set_ex  				php_error_docref(NULL, E_WARNING, "Invalid value for has_set_exists");  		}  	} else { -		zend_object_handlers *std_hnd = zend_get_std_object_handlers(); -		ret = std_hnd->has_property(object, member, has_set_exists, cache_slot); +		ret = zend_std_has_property(object, member, has_set_exists, cache_slot);  	}  	return ret; @@ -424,8 +417,7 @@ HashTable *mysqli_object_get_debug_info(zval *object, int *is_temp)  	HashTable *retval, *props = obj->prop_handler;  	mysqli_prop_handler *entry; -	ALLOC_HASHTABLE(retval); -	ZEND_INIT_SYMTABLE_EX(retval, zend_hash_num_elements(props) + 1, 0); +	retval = zend_new_array(zend_hash_num_elements(props) + 1);  	ZEND_HASH_FOREACH_PTR(props, entry) {  		zval rv, member; @@ -449,7 +441,7 @@ PHP_MYSQLI_EXPORT(zend_object *) mysqli_objects_new(zend_class_entry *class_type  	zend_class_entry *mysqli_base_class;  	zend_object_handlers *handlers; -	intern = ecalloc(1, sizeof(mysqli_object) + zend_object_properties_size(class_type)); +	intern = zend_object_alloc(sizeof(mysqli_object), class_type);  	mysqli_base_class = class_type;  	while (mysqli_base_class->type != ZEND_INTERNAL_CLASS && @@ -501,7 +493,7 @@ static MYSQLND *mysqli_convert_zv_to_mysqlnd(zval * zv)  	return NULL;  } -static MYSQLND_REVERSE_API mysqli_reverse_api = { +static const MYSQLND_REVERSE_API mysqli_reverse_api = {  	&mysqli_module_entry,  	mysqli_convert_zv_to_mysqlnd  }; @@ -564,24 +556,20 @@ static PHP_GINIT_FUNCTION(mysqli)  PHP_MINIT_FUNCTION(mysqli)  {  	zend_class_entry *ce,cex; -	zend_object_handlers *std_hnd = zend_get_std_object_handlers();  	REGISTER_INI_ENTRIES();  #ifndef MYSQLI_USE_MYSQLND -#if MYSQL_VERSION_ID >= 40000  	if (mysql_server_init(0, NULL, NULL)) {  		return FAILURE;  	}  #endif -#endif -	memcpy(&mysqli_object_handlers, zend_get_std_object_handlers(), sizeof(zend_object_handlers)); +	memcpy(&mysqli_object_handlers, &std_object_handlers, sizeof(zend_object_handlers));  	mysqli_object_handlers.offset = XtOffsetOf(mysqli_object, zo);  	mysqli_object_handlers.free_obj = mysqli_objects_free_storage;  	mysqli_object_handlers.clone_obj = NULL;  	mysqli_object_handlers.read_property = mysqli_read_property;  	mysqli_object_handlers.write_property = mysqli_write_property; -	mysqli_object_handlers.get_property_ptr_ptr = std_hnd->get_property_ptr_ptr;  	mysqli_object_handlers.has_property = mysqli_object_has_property;  	mysqli_object_handlers.get_debug_info = mysqli_object_get_debug_info;  	memcpy(&mysqli_object_driver_handlers, &mysqli_object_handlers, sizeof(zend_object_handlers)); @@ -665,7 +653,6 @@ PHP_MINIT_FUNCTION(mysqli)  	zend_declare_property_null(ce, "num_rows",		sizeof("num_rows") - 1, ZEND_ACC_PUBLIC);  	zend_declare_property_null(ce, "type",			sizeof("type") - 1, ZEND_ACC_PUBLIC);  	mysqli_result_class_entry->get_iterator = php_mysqli_result_get_iterator; -	mysqli_result_class_entry->iterator_funcs.funcs = &php_mysqli_result_iterator_funcs;  	zend_class_implements(mysqli_result_class_entry, 1, zend_ce_traversable);  	zend_hash_add_ptr(&classes, ce->name, &mysqli_result_properties); @@ -691,9 +678,7 @@ PHP_MINIT_FUNCTION(mysqli)  	REGISTER_LONG_CONSTANT("MYSQLI_OPT_CONNECT_TIMEOUT", MYSQL_OPT_CONNECT_TIMEOUT, CONST_CS | CONST_PERSISTENT);  	REGISTER_LONG_CONSTANT("MYSQLI_OPT_LOCAL_INFILE", MYSQL_OPT_LOCAL_INFILE, CONST_CS | CONST_PERSISTENT);  	REGISTER_LONG_CONSTANT("MYSQLI_INIT_COMMAND", MYSQL_INIT_COMMAND, CONST_CS | CONST_PERSISTENT); -#if MYSQL_VERSION_ID > 40101 || defined(MYSQLI_USE_MYSQLND)  	REGISTER_LONG_CONSTANT("MYSQLI_OPT_READ_TIMEOUT", MYSQL_OPT_READ_TIMEOUT, CONST_CS | CONST_PERSISTENT); -#endif  #if defined(MYSQLI_USE_MYSQLND)  	REGISTER_LONG_CONSTANT("MYSQLI_OPT_NET_CMD_BUFFER_SIZE", MYSQLND_OPT_NET_CMD_BUFFER_SIZE, CONST_CS | CONST_PERSISTENT);  	REGISTER_LONG_CONSTANT("MYSQLI_OPT_NET_READ_BUFFER_SIZE", MYSQLND_OPT_NET_READ_BUFFER_SIZE, CONST_CS | CONST_PERSISTENT); @@ -885,7 +870,6 @@ PHP_MINIT_FUNCTION(mysqli)  PHP_MSHUTDOWN_FUNCTION(mysqli)  {  #ifndef MYSQLI_USE_MYSQLND -#if MYSQL_VERSION_ID >= 40000  #ifdef PHP_WIN32  	zend_ulong client_ver = mysql_get_client_version();  	/* @@ -899,7 +883,6 @@ PHP_MSHUTDOWN_FUNCTION(mysqli)  	mysql_server_end();  #endif  #endif -#endif  	zend_hash_destroy(&mysqli_driver_properties);  	zend_hash_destroy(&mysqli_result_properties); @@ -917,7 +900,7 @@ PHP_MSHUTDOWN_FUNCTION(mysqli)   */  PHP_RINIT_FUNCTION(mysqli)  { -#if !defined(MYSQLI_USE_MYSQLND) && defined(ZTS) && MYSQL_VERSION_ID >= 40000 +#if !defined(MYSQLI_USE_MYSQLND) && defined(ZTS)  	if (mysql_thread_init()) {  		return FAILURE;  	} @@ -954,7 +937,7 @@ PHP_RSHUTDOWN_FUNCTION(mysqli)  {  	/* check persistent connections, move used to free */ -#if !defined(MYSQLI_USE_MYSQLND) && defined(ZTS) && MYSQL_VERSION_ID >= 40000 +#if !defined(MYSQLI_USE_MYSQLND) && defined(ZTS)  	mysql_thread_end();  #endif  	if (MyG(error_msg)) { @@ -995,7 +978,7 @@ PHP_MINFO_FUNCTION(mysqli)  /* }}} */ -/* Dependancies */ +/* Dependencies */  static const  zend_module_dep mysqli_deps[] = {  	ZEND_MOD_REQUIRED("spl")  #if defined(MYSQLI_USE_MYSQLND) @@ -1312,9 +1295,7 @@ void php_mysqli_fetch_into_hash(INTERNAL_FUNCTION_PARAMETERS, int override_flags  				}  			} -			fcc.initialized = 1;  			fcc.function_handler = ce->constructor; -			fcc.calling_scope = zend_get_executed_scope();  			fcc.called_scope = Z_OBJCE_P(return_value);  			fcc.object = Z_OBJ_P(return_value); | 
