diff options
Diffstat (limited to 'ext/mysqlnd/mysqlnd_wireprotocol.c')
| -rw-r--r-- | ext/mysqlnd/mysqlnd_wireprotocol.c | 444 | 
1 files changed, 218 insertions, 226 deletions
| diff --git a/ext/mysqlnd/mysqlnd_wireprotocol.c b/ext/mysqlnd/mysqlnd_wireprotocol.c index c7c0bf9190..1b6b3dec10 100644 --- a/ext/mysqlnd/mysqlnd_wireprotocol.c +++ b/ext/mysqlnd/mysqlnd_wireprotocol.c @@ -1,6 +1,6 @@  /*    +----------------------------------------------------------------------+ -  | PHP Version 5                                                        | +  | PHP Version 7                                                        |    +----------------------------------------------------------------------+    | Copyright (c) 2006-2015 The PHP Group                                |    +----------------------------------------------------------------------+ @@ -35,10 +35,10 @@  #define	PACKET_READ_HEADER_AND_BODY(packet, conn, buf, buf_size, packet_type_as_text, packet_type) \  	{ \  		DBG_INF_FMT("buf=%p size=%u", (buf), (buf_size)); \ -		if (FAIL == mysqlnd_read_header((conn)->net, &((packet)->header), (conn)->stats, ((conn)->error_info) TSRMLS_CC)) {\ +		if (FAIL == mysqlnd_read_header((conn)->net, &((packet)->header), (conn)->stats, ((conn)->error_info))) {\  			CONN_SET_STATE(conn, CONN_QUIT_SENT); \  			SET_CLIENT_ERROR(*conn->error_info, CR_SERVER_GONE_ERROR, UNKNOWN_SQLSTATE, mysqlnd_server_gone);\ -			php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", mysqlnd_server_gone); \ +			php_error_docref(NULL, E_WARNING, "%s", mysqlnd_server_gone); \  			DBG_ERR_FMT("Can't read %s's header", (packet_type_as_text)); \  			DBG_RETURN(FAIL);\  		}\ @@ -47,10 +47,10 @@  						(buf_size), (packet)->header.size, (packet)->header.size - (buf_size)); \  						DBG_RETURN(FAIL); \  		}\ -		if (FAIL == conn->net->data->m.receive_ex((conn)->net, (buf), (packet)->header.size, (conn)->stats, ((conn)->error_info) TSRMLS_CC)) { \ +		if (FAIL == conn->net->data->m.receive_ex((conn)->net, (buf), (packet)->header.size, (conn)->stats, ((conn)->error_info))) { \  			CONN_SET_STATE(conn, CONN_QUIT_SENT); \  			SET_CLIENT_ERROR(*conn->error_info, CR_SERVER_GONE_ERROR, UNKNOWN_SQLSTATE, mysqlnd_server_gone);\ -			php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", mysqlnd_server_gone); \ +			php_error_docref(NULL, E_WARNING, "%s", mysqlnd_server_gone); \  			DBG_ERR_FMT("Empty '%s' packet body", (packet_type_as_text)); \  			DBG_RETURN(FAIL);\  		} \ @@ -63,20 +63,18 @@  #define BAIL_IF_NO_MORE_DATA \  	if ((size_t)(p - begin) > packet->header.size) { \ -		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Premature end of data (mysqlnd_wireprotocol.c:%u)", __LINE__); \ +		php_error_docref(NULL, E_WARNING, "Premature end of data (mysqlnd_wireprotocol.c:%u)", __LINE__); \  		goto premature_end; \  	} \  static const char *unknown_sqlstate= "HY000"; -  const char * const mysqlnd_empty_string = "";  /* Used in mysqlnd_debug.c */  const char mysqlnd_read_header_name[]	= "mysqlnd_read_header";  const char mysqlnd_read_body_name[]		= "mysqlnd_read_body"; -  #define ERROR_MARKER 0xFF  #define EODATA_MARKER 0xFE @@ -128,14 +126,14 @@ static enum_mysqlnd_collected_stats packet_type_to_statistic_packet_count[PROT_L  /* {{{ php_mysqlnd_net_field_length     Get next field's length */ -unsigned long +zend_ulong  php_mysqlnd_net_field_length(zend_uchar **packet)  {  	register zend_uchar *p= (zend_uchar *)*packet;  	if (*p < 251) {  		(*packet)++; -		return (unsigned long) *p; +		return (zend_ulong) *p;  	}  	switch (*p) { @@ -144,13 +142,13 @@ php_mysqlnd_net_field_length(zend_uchar **packet)  			return MYSQLND_NULL_LENGTH;  		case 252:  			(*packet) += 3; -			return (unsigned long) uint2korr(p+1); +			return (zend_ulong) uint2korr(p+1);  		case 253:  			(*packet) += 4; -			return (unsigned long) uint3korr(p+1); +			return (zend_ulong) uint3korr(p+1);  		default:  			(*packet) += 9; -			return (unsigned long) uint4korr(p+1); +			return (zend_ulong) uint4korr(p+1);  	}  }  /* }}} */ @@ -161,7 +159,7 @@ php_mysqlnd_net_field_length(zend_uchar **packet)  uint64_t  php_mysqlnd_net_field_length_ll(zend_uchar **packet)  { -	register zend_uchar *p= (zend_uchar *)*packet; +	register zend_uchar *p = (zend_uchar *)*packet;  	if (*p < 251) {  		(*packet)++; @@ -203,7 +201,7 @@ php_mysqlnd_net_store_length(zend_uchar *packet, uint64_t length)  	if (length < (uint64_t) L64(16777216)) {  		*packet++ = 253; -		int3store(packet,(ulong) length); +		int3store(packet,(zend_ulong) length);  		return packet + 3;  	}  	*packet++ = 254; @@ -214,7 +212,7 @@ php_mysqlnd_net_store_length(zend_uchar *packet, uint64_t length)  /* {{{ php_mysqlnd_net_store_length_size */ -size_t  +size_t  php_mysqlnd_net_store_length_size(uint64_t length)  {  	if (length < (uint64_t) L64(251)) { @@ -235,7 +233,7 @@ php_mysqlnd_net_store_length_size(uint64_t length)  static enum_func_status  php_mysqlnd_read_error_from_line(zend_uchar *buf, size_t buf_len,  								char *error, int error_buf_len, -								unsigned int *error_no, char *sqlstate TSRMLS_DC) +								unsigned int *error_no, char *sqlstate)  {  	zend_uchar *p = buf;  	int error_msg_len= 0; @@ -278,13 +276,13 @@ end:  /* {{{ mysqlnd_read_header */  static enum_func_status  mysqlnd_read_header(MYSQLND_NET * net, MYSQLND_PACKET_HEADER * header, -					MYSQLND_STATS * conn_stats, MYSQLND_ERROR_INFO * error_info TSRMLS_DC) +					MYSQLND_STATS * conn_stats, MYSQLND_ERROR_INFO * error_info)  {  	zend_uchar buffer[MYSQLND_HEADER_SIZE];  	DBG_ENTER(mysqlnd_read_header_name);  	DBG_INF_FMT("compressed=%u", net->data->compressed); -	if (FAIL == net->data->m.receive_ex(net, buffer, MYSQLND_HEADER_SIZE, conn_stats, error_info TSRMLS_CC)) { +	if (FAIL == net->data->m.receive_ex(net, buffer, MYSQLND_HEADER_SIZE, conn_stats, error_info)) {  		DBG_RETURN(FAIL);  	} @@ -320,7 +318,7 @@ mysqlnd_read_header(MYSQLND_NET * net, MYSQLND_PACKET_HEADER * header,  /* {{{ php_mysqlnd_greet_read */  static enum_func_status -php_mysqlnd_greet_read(void * _packet, MYSQLND_CONN_DATA * conn TSRMLS_DC) +php_mysqlnd_greet_read(void * _packet, MYSQLND_CONN_DATA * conn)  {  	zend_uchar buf[2048];  	zend_uchar *p = buf; @@ -341,7 +339,7 @@ php_mysqlnd_greet_read(void * _packet, MYSQLND_CONN_DATA * conn TSRMLS_DC)  		  Null-terminate the string, so strdup can work even if the packets have a string at the end,  		  which is not ASCIIZ  		*/ -		buf[packet->header.size] = '\0';  +		buf[packet->header.size] = '\0';  	}  	packet->protocol_version = uint1korr(p); @@ -352,7 +350,7 @@ php_mysqlnd_greet_read(void * _packet, MYSQLND_CONN_DATA * conn TSRMLS_DC)  		php_mysqlnd_read_error_from_line(p, packet->header.size - 1,  										 packet->error, sizeof(packet->error),  										 &packet->error_no, packet->sqlstate -										 TSRMLS_CC); +										);  		/*  		  The server doesn't send sqlstate in the greet packet.  		  It's a bug#26426 , so we have to set it correctly ourselves. @@ -447,7 +445,7 @@ php_mysqlnd_greet_read(void * _packet, MYSQLND_CONN_DATA * conn TSRMLS_DC)  	DBG_RETURN(PASS);  premature_end:  	DBG_ERR_FMT("GREET packet %d bytes shorter than expected", p - begin - packet->header.size); -	php_error_docref(NULL TSRMLS_CC, E_WARNING, "GREET packet "MYSQLND_SZ_T_SPEC" bytes shorter than expected", +	php_error_docref(NULL, E_WARNING, "GREET packet "MYSQLND_SZ_T_SPEC" bytes shorter than expected",  					 p - begin - packet->header.size);  	DBG_RETURN(FAIL);  } @@ -456,7 +454,7 @@ premature_end:  /* {{{ php_mysqlnd_greet_free_mem */  static -void php_mysqlnd_greet_free_mem(void * _packet, zend_bool stack_allocation TSRMLS_DC) +void php_mysqlnd_greet_free_mem(void * _packet, zend_bool stack_allocation)  {  	MYSQLND_PACKET_GREET *p= (MYSQLND_PACKET_GREET *) _packet;  	if (p->server_version) { @@ -482,7 +480,7 @@ void php_mysqlnd_greet_free_mem(void * _packet, zend_bool stack_allocation TSRML  /* {{{ php_mysqlnd_auth_write */  static -size_t php_mysqlnd_auth_write(void * _packet, MYSQLND_CONN_DATA * conn TSRMLS_DC) +size_t php_mysqlnd_auth_write(void * _packet, MYSQLND_CONN_DATA * conn)  {  	zend_uchar buffer[AUTH_WRITE_BUFFER_LEN];  	zend_uchar *p = buffer + MYSQLND_HEADER_SIZE; /* start after the header */ @@ -519,14 +517,14 @@ size_t php_mysqlnd_auth_write(void * _packet, MYSQLND_CONN_DATA * conn TSRMLS_DC  			const char * const msg = "Authentication data too long. "  				"Won't fit into the buffer and will be truncated. Authentication will thus fail";  			SET_CLIENT_ERROR(*conn->error_info, CR_UNKNOWN_ERROR, UNKNOWN_SQLSTATE, msg); -			php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", msg); +			php_error_docref(NULL, E_WARNING, "%s", msg);  			DBG_RETURN(0); -		}		 -		 +		} +  		int1store(p, packet->auth_data_len);  		++p;  /*!!!!! is the buffer big enough ??? */ -		if ((sizeof(buffer) - (p - buffer)) < packet->auth_data_len) { +		if (sizeof(buffer) < (packet->auth_data_len + (p - buffer))) {  			DBG_ERR("the stack buffer was not enough!!");  			DBG_RETURN(0);  		} @@ -542,7 +540,7 @@ size_t php_mysqlnd_auth_write(void * _packet, MYSQLND_CONN_DATA * conn TSRMLS_DC  			p+= real_db_len;  			*p++= '\0';  		} else if (packet->is_change_user_packet) { -			*p++= '\0';		 +			*p++= '\0';  		}  		/* no \0 for no DB */ @@ -552,7 +550,7 @@ size_t php_mysqlnd_auth_write(void * _packet, MYSQLND_CONN_DATA * conn TSRMLS_DC  				p+= 2;  			}  		} -		 +  		if (packet->auth_plugin_name) {  			size_t len = MIN(strlen(packet->auth_plugin_name), sizeof(buffer) - (p - buffer) - 1);  			memcpy(p, packet->auth_plugin_name, len); @@ -561,17 +559,18 @@ size_t php_mysqlnd_auth_write(void * _packet, MYSQLND_CONN_DATA * conn TSRMLS_DC  		}  		if (packet->connect_attr && zend_hash_num_elements(packet->connect_attr)) { +			size_t ca_payload_len = 0; +#ifdef OLD_CODE  			HashPosition pos_value;  			const char ** entry_value; -			size_t ca_payload_len = 0;  			zend_hash_internal_pointer_reset_ex(packet->connect_attr, &pos_value);  			while (SUCCESS == zend_hash_get_current_data_ex(packet->connect_attr, (void **)&entry_value, &pos_value)) {  				char *s_key;  				unsigned int s_len; -				unsigned long num_key; +				zend_ulong num_key;  				size_t value_len = strlen(*entry_value); -				 -				if (HASH_KEY_IS_STRING == zend_hash_get_current_key_ex(packet->connect_attr, &s_key, &s_len, &num_key, 0, &pos_value)) { + +				if (HASH_KEY_IS_STRING == zend_hash_get_current_key_ex(packet->connect_attr, &s_key, &s_len, &num_key, &pos_value)) {  					ca_payload_len += php_mysqlnd_net_store_length_size(s_len);  					ca_payload_len += s_len;  					ca_payload_len += php_mysqlnd_net_store_length_size(value_len); @@ -579,17 +578,35 @@ size_t php_mysqlnd_auth_write(void * _packet, MYSQLND_CONN_DATA * conn TSRMLS_DC  				}  				zend_hash_move_forward_ex(conn->options->connect_attr, &pos_value);  			} +#else -			if ((sizeof(buffer) - (p - buffer)) >= (ca_payload_len + php_mysqlnd_net_store_length_size(ca_payload_len))) { +			{ +				zend_string * key; +				zend_ulong unused_num_key; +				zval * entry_value; +				ZEND_HASH_FOREACH_KEY_VAL(packet->connect_attr, unused_num_key, key, entry_value) { +					if (key) { /* HASH_KEY_IS_STRING */ +						size_t value_len = Z_STRLEN_P(entry_value); + +						ca_payload_len += php_mysqlnd_net_store_length_size(key->len); +						ca_payload_len += key->len; +						ca_payload_len += php_mysqlnd_net_store_length_size(value_len); +						ca_payload_len += value_len; +					} +				} ZEND_HASH_FOREACH_END(); +			} +#endif +			if (sizeof(buffer) >= (ca_payload_len + php_mysqlnd_net_store_length_size(ca_payload_len) + (p - buffer))) {  				p = php_mysqlnd_net_store_length(p, ca_payload_len); +#ifdef OLD_CODE  				zend_hash_internal_pointer_reset_ex(packet->connect_attr, &pos_value);  				while (SUCCESS == zend_hash_get_current_data_ex(packet->connect_attr, (void **)&entry_value, &pos_value)) {  					char *s_key;  					unsigned int s_len; -					unsigned long num_key; +					zend_ulong num_key;  					size_t value_len = strlen(*entry_value); -					if (HASH_KEY_IS_STRING == zend_hash_get_current_key_ex(packet->connect_attr, &s_key, &s_len, &num_key, 0, &pos_value)) { +					if (HASH_KEY_IS_STRING == zend_hash_get_current_key_ex(packet->connect_attr, &s_key, &s_len, &num_key, &pos_value)) {  						/* copy key */  						p = php_mysqlnd_net_store_length(p, s_len);  						memcpy(p, s_key, s_len); @@ -601,6 +618,27 @@ size_t php_mysqlnd_auth_write(void * _packet, MYSQLND_CONN_DATA * conn TSRMLS_DC  					}  					zend_hash_move_forward_ex(conn->options->connect_attr, &pos_value);  				} +#else +				{ +					zend_string * key; +					zend_ulong unused_num_key; +					zval * entry_value; +					ZEND_HASH_FOREACH_KEY_VAL(packet->connect_attr, unused_num_key, key, entry_value) { +						if (key) { /* HASH_KEY_IS_STRING */ +							size_t value_len = Z_STRLEN_P(entry_value); + +							/* copy key */ +							p = php_mysqlnd_net_store_length(p, key->len); +							memcpy(p, key->val, key->len); +							p+= key->len; +							/* copy value */ +							p = php_mysqlnd_net_store_length(p, value_len); +							memcpy(p, Z_STRVAL_P(entry_value), value_len); +							p+= value_len; +						} +					} ZEND_HASH_FOREACH_END(); +				} +#endif  			} else {  				/* cannot put the data - skip */  			} @@ -609,12 +647,12 @@ size_t php_mysqlnd_auth_write(void * _packet, MYSQLND_CONN_DATA * conn TSRMLS_DC  	if (packet->is_change_user_packet) {  		if (PASS != conn->m->simple_command(conn, COM_CHANGE_USER, buffer + MYSQLND_HEADER_SIZE, p - buffer - MYSQLND_HEADER_SIZE,  										   PROT_LAST /* the caller will handle the OK packet */, -										   packet->silent, TRUE TSRMLS_CC)) { +										   packet->silent, TRUE)) {  			DBG_RETURN(0);  		}  		DBG_RETURN(p - buffer - MYSQLND_HEADER_SIZE);  	} else { -		size_t sent = conn->net->data->m.send_ex(conn->net, buffer, p - buffer - MYSQLND_HEADER_SIZE, conn->stats, conn->error_info TSRMLS_CC); +		size_t sent = conn->net->data->m.send_ex(conn->net, buffer, p - buffer - MYSQLND_HEADER_SIZE, conn->stats, conn->error_info);  		if (!sent) {  			CONN_SET_STATE(conn, CONN_QUIT_SENT);  		} @@ -626,7 +664,7 @@ size_t php_mysqlnd_auth_write(void * _packet, MYSQLND_CONN_DATA * conn TSRMLS_DC  /* {{{ php_mysqlnd_auth_free_mem */  static -void php_mysqlnd_auth_free_mem(void * _packet, zend_bool stack_allocation TSRMLS_DC) +void php_mysqlnd_auth_free_mem(void * _packet, zend_bool stack_allocation)  {  	if (!stack_allocation) {  		MYSQLND_PACKET_AUTH * p = (MYSQLND_PACKET_AUTH *) _packet; @@ -640,14 +678,14 @@ void php_mysqlnd_auth_free_mem(void * _packet, zend_bool stack_allocation TSRMLS  /* {{{ php_mysqlnd_auth_response_read */  static enum_func_status -php_mysqlnd_auth_response_read(void * _packet, MYSQLND_CONN_DATA * conn TSRMLS_DC) +php_mysqlnd_auth_response_read(void * _packet, MYSQLND_CONN_DATA * conn)  {  	zend_uchar local_buf[AUTH_RESP_BUFFER_SIZE];  	size_t buf_len = conn->net->cmd_buffer.buffer? conn->net->cmd_buffer.length: AUTH_RESP_BUFFER_SIZE;  	zend_uchar *buf = conn->net->cmd_buffer.buffer? (zend_uchar *) conn->net->cmd_buffer.buffer : local_buf;  	zend_uchar *p = buf;  	zend_uchar *begin = buf; -	unsigned long i; +	zend_ulong i;  	register MYSQLND_PACKET_AUTH_RESPONSE * packet= (MYSQLND_PACKET_AUTH_RESPONSE *) _packet;  	DBG_ENTER("php_mysqlnd_auth_response_read"); @@ -662,7 +700,7 @@ php_mysqlnd_auth_response_read(void * _packet, MYSQLND_CONN_DATA * conn TSRMLS_D  	  because buf_len is -1 the size of the buffer pointed  	*/  	buf[packet->header.size] = '\0'; -	 +  	/* Should be always 0x0 or ERROR_MARKER for error */  	packet->response_code = uint1korr(p);  	p++; @@ -672,7 +710,7 @@ php_mysqlnd_auth_response_read(void * _packet, MYSQLND_CONN_DATA * conn TSRMLS_D  		php_mysqlnd_read_error_from_line(p, packet->header.size - 1,  										 packet->error, sizeof(packet->error),  										 &packet->error_no, packet->sqlstate -										 TSRMLS_CC); +										);  		DBG_RETURN(PASS);  	}  	if (0xFE == packet->response_code) { @@ -715,7 +753,7 @@ php_mysqlnd_auth_response_read(void * _packet, MYSQLND_CONN_DATA * conn TSRMLS_D  			packet->message_len = 0;  		} -		DBG_INF_FMT("OK packet: aff_rows=%lld last_ins_id=%ld server_status=%u warnings=%u", +		DBG_INF_FMT("OK packet: aff_rows=%lld last_ins_id=%pd server_status=%u warnings=%u",  					packet->affected_rows, packet->last_insert_id, packet->server_status,  					packet->warning_count);  	} @@ -723,7 +761,7 @@ php_mysqlnd_auth_response_read(void * _packet, MYSQLND_CONN_DATA * conn TSRMLS_D  	DBG_RETURN(PASS);  premature_end:  	DBG_ERR_FMT("OK packet %d bytes shorter than expected", p - begin - packet->header.size); -	php_error_docref(NULL TSRMLS_CC, E_WARNING, "AUTH_RESPONSE packet "MYSQLND_SZ_T_SPEC" bytes shorter than expected", +	php_error_docref(NULL, E_WARNING, "AUTH_RESPONSE packet "MYSQLND_SZ_T_SPEC" bytes shorter than expected",  					 p - begin - packet->header.size);  	DBG_RETURN(FAIL);  } @@ -732,7 +770,7 @@ premature_end:  /* {{{ php_mysqlnd_auth_response_free_mem */  static void -php_mysqlnd_auth_response_free_mem(void * _packet, zend_bool stack_allocation TSRMLS_DC) +php_mysqlnd_auth_response_free_mem(void * _packet, zend_bool stack_allocation)  {  	MYSQLND_PACKET_AUTH_RESPONSE * p = (MYSQLND_PACKET_AUTH_RESPONSE *) _packet;  	if (p->message) { @@ -760,7 +798,7 @@ php_mysqlnd_auth_response_free_mem(void * _packet, zend_bool stack_allocation TS  /* {{{ php_mysqlnd_change_auth_response_write */  static size_t -php_mysqlnd_change_auth_response_write(void * _packet, MYSQLND_CONN_DATA * conn TSRMLS_DC) +php_mysqlnd_change_auth_response_write(void * _packet, MYSQLND_CONN_DATA * conn)  {  	MYSQLND_PACKET_CHANGE_AUTH_RESPONSE *packet= (MYSQLND_PACKET_CHANGE_AUTH_RESPONSE *) _packet;  	zend_uchar * buffer = conn->net->cmd_buffer.length >= packet->auth_data_len? conn->net->cmd_buffer.buffer : mnd_emalloc(packet->auth_data_len); @@ -774,7 +812,7 @@ php_mysqlnd_change_auth_response_write(void * _packet, MYSQLND_CONN_DATA * conn  	}  	{ -		size_t sent = conn->net->data->m.send_ex(conn->net, buffer, p - buffer - MYSQLND_HEADER_SIZE, conn->stats, conn->error_info TSRMLS_CC); +		size_t sent = conn->net->data->m.send_ex(conn->net, buffer, p - buffer - MYSQLND_HEADER_SIZE, conn->stats, conn->error_info);  		if (buffer != conn->net->cmd_buffer.buffer) {  			mnd_efree(buffer);  		} @@ -789,7 +827,7 @@ php_mysqlnd_change_auth_response_write(void * _packet, MYSQLND_CONN_DATA * conn  /* {{{ php_mysqlnd_change_auth_response_free_mem */  static void -php_mysqlnd_change_auth_response_free_mem(void * _packet, zend_bool stack_allocation TSRMLS_DC) +php_mysqlnd_change_auth_response_free_mem(void * _packet, zend_bool stack_allocation)  {  	if (!stack_allocation) {  		MYSQLND_PACKET_CHANGE_AUTH_RESPONSE * p = (MYSQLND_PACKET_CHANGE_AUTH_RESPONSE *) _packet; @@ -803,14 +841,14 @@ php_mysqlnd_change_auth_response_free_mem(void * _packet, zend_bool stack_alloca  /* {{{ php_mysqlnd_ok_read */  static enum_func_status -php_mysqlnd_ok_read(void * _packet, MYSQLND_CONN_DATA * conn TSRMLS_DC) +php_mysqlnd_ok_read(void * _packet, MYSQLND_CONN_DATA * conn)  {  	zend_uchar local_buf[OK_BUFFER_SIZE];  	size_t buf_len = conn->net->cmd_buffer.buffer? conn->net->cmd_buffer.length : OK_BUFFER_SIZE;  	zend_uchar *buf = conn->net->cmd_buffer.buffer? (zend_uchar *) conn->net->cmd_buffer.buffer : local_buf;  	zend_uchar *p = buf;  	zend_uchar *begin = buf; -	unsigned long i; +	zend_ulong i;  	register MYSQLND_PACKET_OK *packet= (MYSQLND_PACKET_OK *) _packet;  	DBG_ENTER("php_mysqlnd_ok_read"); @@ -827,7 +865,7 @@ php_mysqlnd_ok_read(void * _packet, MYSQLND_CONN_DATA * conn TSRMLS_DC)  		php_mysqlnd_read_error_from_line(p, packet->header.size - 1,  										 packet->error, sizeof(packet->error),  										 &packet->error_no, packet->sqlstate -										 TSRMLS_CC); +										);  		DBG_INF_FMT("conn->server_status=%u", conn->upsert_status->server_status);  		DBG_RETURN(PASS);  	} @@ -864,7 +902,7 @@ php_mysqlnd_ok_read(void * _packet, MYSQLND_CONN_DATA * conn TSRMLS_DC)  	DBG_RETURN(PASS);  premature_end:  	DBG_ERR_FMT("OK packet %d bytes shorter than expected", p - begin - packet->header.size); -	php_error_docref(NULL TSRMLS_CC, E_WARNING, "OK packet "MYSQLND_SZ_T_SPEC" bytes shorter than expected", +	php_error_docref(NULL, E_WARNING, "OK packet "MYSQLND_SZ_T_SPEC" bytes shorter than expected",  					 p - begin - packet->header.size);  	DBG_RETURN(FAIL);  } @@ -873,7 +911,7 @@ premature_end:  /* {{{ php_mysqlnd_ok_free_mem */  static void -php_mysqlnd_ok_free_mem(void * _packet, zend_bool stack_allocation TSRMLS_DC) +php_mysqlnd_ok_free_mem(void * _packet, zend_bool stack_allocation)  {  	MYSQLND_PACKET_OK *p= (MYSQLND_PACKET_OK *) _packet;  	if (p->message) { @@ -889,7 +927,7 @@ php_mysqlnd_ok_free_mem(void * _packet, zend_bool stack_allocation TSRMLS_DC)  /* {{{ php_mysqlnd_eof_read */  static enum_func_status -php_mysqlnd_eof_read(void * _packet, MYSQLND_CONN_DATA * conn TSRMLS_DC) +php_mysqlnd_eof_read(void * _packet, MYSQLND_CONN_DATA * conn)  {  	/*  	  EOF packet is since 4.1 five bytes long, @@ -917,7 +955,7 @@ php_mysqlnd_eof_read(void * _packet, MYSQLND_CONN_DATA * conn TSRMLS_DC)  		php_mysqlnd_read_error_from_line(p, packet->header.size - 1,  										 packet->error, sizeof(packet->error),  										 &packet->error_no, packet->sqlstate -										 TSRMLS_CC); +										);  		DBG_RETURN(PASS);  	} @@ -947,7 +985,7 @@ php_mysqlnd_eof_read(void * _packet, MYSQLND_CONN_DATA * conn TSRMLS_DC)  	DBG_RETURN(PASS);  premature_end:  	DBG_ERR_FMT("EOF packet %d bytes shorter than expected", p - begin - packet->header.size); -	php_error_docref(NULL TSRMLS_CC, E_WARNING, "EOF packet "MYSQLND_SZ_T_SPEC" bytes shorter than expected", +	php_error_docref(NULL, E_WARNING, "EOF packet "MYSQLND_SZ_T_SPEC" bytes shorter than expected",  					 p - begin - packet->header.size);  	DBG_RETURN(FAIL);  } @@ -956,7 +994,7 @@ premature_end:  /* {{{ php_mysqlnd_eof_free_mem */  static -void php_mysqlnd_eof_free_mem(void * _packet, zend_bool stack_allocation TSRMLS_DC) +void php_mysqlnd_eof_free_mem(void * _packet, zend_bool stack_allocation)  {  	if (!stack_allocation) {  		mnd_pefree(_packet, ((MYSQLND_PACKET_EOF *)_packet)->header.persistent); @@ -966,7 +1004,7 @@ void php_mysqlnd_eof_free_mem(void * _packet, zend_bool stack_allocation TSRMLS_  /* {{{ php_mysqlnd_cmd_write */ -size_t php_mysqlnd_cmd_write(void * _packet, MYSQLND_CONN_DATA * conn TSRMLS_DC) +size_t php_mysqlnd_cmd_write(void * _packet, MYSQLND_CONN_DATA * conn)  {  	/* Let's have some space, which we can use, if not enough, we will allocate new buffer */  	MYSQLND_PACKET_COMMAND * packet= (MYSQLND_PACKET_COMMAND *) _packet; @@ -989,14 +1027,14 @@ size_t php_mysqlnd_cmd_write(void * _packet, MYSQLND_CONN_DATA * conn TSRMLS_DC)  	MYSQLND_INC_CONN_STATISTIC(conn->stats, STAT_PACKETS_SENT_CMD);  #ifdef MYSQLND_DO_WIRE_CHECK_BEFORE_COMMAND -	net->data->m.consume_uneaten_data(net, packet->command TSRMLS_CC); +	net->data->m.consume_uneaten_data(net, packet->command);  #endif  	if (!packet->argument || !packet->arg_len) {  		zend_uchar buffer[MYSQLND_HEADER_SIZE + 1];  		int1store(buffer + MYSQLND_HEADER_SIZE, packet->command); -		sent = net->data->m.send_ex(net, buffer, 1, conn->stats, conn->error_info TSRMLS_CC); +		sent = net->data->m.send_ex(net, buffer, 1, conn->stats, conn->error_info);  	} else {  		size_t tmp_len = packet->arg_len + 1 + MYSQLND_HEADER_SIZE;  		zend_uchar *tmp, *p; @@ -1011,7 +1049,7 @@ size_t php_mysqlnd_cmd_write(void * _packet, MYSQLND_CONN_DATA * conn TSRMLS_DC)  		memcpy(p, packet->argument, packet->arg_len); -		sent = net->data->m.send_ex(net, tmp, tmp_len - MYSQLND_HEADER_SIZE, conn->stats, conn->error_info TSRMLS_CC); +		sent = net->data->m.send_ex(net, tmp, tmp_len - MYSQLND_HEADER_SIZE, conn->stats, conn->error_info);  		if (tmp != net->cmd_buffer.buffer) {  			MYSQLND_INC_CONN_STATISTIC(conn->stats, STAT_CMD_BUFFER_TOO_SMALL);  			mnd_efree(tmp); @@ -1032,7 +1070,7 @@ end:  /* {{{ php_mysqlnd_cmd_free_mem */  static -void php_mysqlnd_cmd_free_mem(void * _packet, zend_bool stack_allocation TSRMLS_DC) +void php_mysqlnd_cmd_free_mem(void * _packet, zend_bool stack_allocation)  {  	if (!stack_allocation) {  		MYSQLND_PACKET_COMMAND * p = (MYSQLND_PACKET_COMMAND *) _packet; @@ -1044,7 +1082,7 @@ void php_mysqlnd_cmd_free_mem(void * _packet, zend_bool stack_allocation TSRMLS_  /* {{{ php_mysqlnd_rset_header_read */  static enum_func_status -php_mysqlnd_rset_header_read(void * _packet, MYSQLND_CONN_DATA * conn TSRMLS_DC) +php_mysqlnd_rset_header_read(void * _packet, MYSQLND_CONN_DATA * conn)  {  	enum_func_status ret = PASS;  	size_t buf_len = conn->net->cmd_buffer.length; @@ -1070,7 +1108,7 @@ php_mysqlnd_rset_header_read(void * _packet, MYSQLND_CONN_DATA * conn TSRMLS_DC)  		php_mysqlnd_read_error_from_line(p, packet->header.size - 1,  										 packet->error_info.error, sizeof(packet->error_info.error),  										 &packet->error_info.error_no, packet->error_info.sqlstate -										 TSRMLS_CC); +										);  		DBG_INF_FMT("conn->server_status=%u", conn->upsert_status->server_status);  		DBG_RETURN(PASS);  	} @@ -1096,7 +1134,7 @@ php_mysqlnd_rset_header_read(void * _packet, MYSQLND_CONN_DATA * conn TSRMLS_DC)  				packet->info_or_local_file_len = len;  			} else {  				SET_OOM_ERROR(*conn->error_info); -				ret = FAIL;	 +				ret = FAIL;  			}  			break;  		case 0x00: @@ -1140,7 +1178,7 @@ php_mysqlnd_rset_header_read(void * _packet, MYSQLND_CONN_DATA * conn TSRMLS_DC)  	DBG_RETURN(ret);  premature_end:  	DBG_ERR_FMT("RSET_HEADER packet %d bytes shorter than expected", p - begin - packet->header.size); -	php_error_docref(NULL TSRMLS_CC, E_WARNING, "RSET_HEADER packet "MYSQLND_SZ_T_SPEC" bytes shorter than expected", +	php_error_docref(NULL, E_WARNING, "RSET_HEADER packet "MYSQLND_SZ_T_SPEC" bytes shorter than expected",  					 p - begin - packet->header.size);  	DBG_RETURN(FAIL);  } @@ -1149,7 +1187,7 @@ premature_end:  /* {{{ php_mysqlnd_rset_header_free_mem */  static -void php_mysqlnd_rset_header_free_mem(void * _packet, zend_bool stack_allocation TSRMLS_DC) +void php_mysqlnd_rset_header_free_mem(void * _packet, zend_bool stack_allocation)  {  	MYSQLND_PACKET_RSET_HEADER *p= (MYSQLND_PACKET_RSET_HEADER *) _packet;  	DBG_ENTER("php_mysqlnd_rset_header_free_mem"); @@ -1177,22 +1215,22 @@ static size_t rset_field_offsets[] =  	STRUCT_OFFSET(MYSQLND_FIELD, name),  	STRUCT_OFFSET(MYSQLND_FIELD, name_length),  	STRUCT_OFFSET(MYSQLND_FIELD, org_name), -	STRUCT_OFFSET(MYSQLND_FIELD, org_name_length) +	STRUCT_OFFSET(MYSQLND_FIELD, org_name_length),  };  /* {{{ php_mysqlnd_rset_field_read */  static enum_func_status -php_mysqlnd_rset_field_read(void * _packet, MYSQLND_CONN_DATA * conn TSRMLS_DC) +php_mysqlnd_rset_field_read(void * _packet, MYSQLND_CONN_DATA * conn)  {  	/* Should be enough for the metadata of a single row */ -	MYSQLND_PACKET_RES_FIELD *packet= (MYSQLND_PACKET_RES_FIELD *) _packet; +	MYSQLND_PACKET_RES_FIELD *packet = (MYSQLND_PACKET_RES_FIELD *) _packet;  	size_t buf_len = conn->net->cmd_buffer.length, total_len = 0;  	zend_uchar *buf = (zend_uchar *) conn->net->cmd_buffer.buffer;  	zend_uchar *p = buf;  	zend_uchar *begin = buf;  	char *root_ptr; -	unsigned long len; +	zend_ulong len;  	MYSQLND_FIELD *meta;  	unsigned int i, field_count = sizeof(rset_field_offsets)/sizeof(size_t); @@ -1212,7 +1250,7 @@ php_mysqlnd_rset_field_read(void * _packet, MYSQLND_CONN_DATA * conn TSRMLS_DC)  		php_mysqlnd_read_error_from_line(p, packet->header.size - 1,  										 packet->error_info.error, sizeof(packet->error_info.error),  										 &packet->error_info.error_no, packet->error_info.sqlstate -										 TSRMLS_CC); +										);  		DBG_ERR_FMT("Server error : (%u) %s", packet->error_info.error_no, packet->error_info.error);  		DBG_RETURN(PASS);  	} else if (EODATA_MARKER == *p && packet->header.size < 8) { @@ -1247,8 +1285,9 @@ php_mysqlnd_rset_field_read(void * _packet, MYSQLND_CONN_DATA * conn TSRMLS_DC)  	/* 1 byte length */  	if (12 != *p) {  		DBG_ERR_FMT("Protocol error. Server sent false length. Expected 12 got %d", (int) *p); -		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Protocol error. Server sent false length. Expected 12"); +		php_error_docref(NULL, E_WARNING, "Protocol error. Server sent false length. Expected 12");  	} +  	p++;  	BAIL_IF_NO_MORE_DATA; @@ -1300,7 +1339,7 @@ php_mysqlnd_rset_field_read(void * _packet, MYSQLND_CONN_DATA * conn TSRMLS_DC)  		meta->def = mnd_pemalloc(len + 1, packet->persistent_alloc);  		if (!meta->def) {  			SET_OOM_ERROR(*conn->error_info); -			DBG_RETURN(FAIL);		 +			DBG_RETURN(FAIL);  		}  		memcpy(meta->def, p, len);  		meta->def[len] = '\0'; @@ -1308,14 +1347,22 @@ php_mysqlnd_rset_field_read(void * _packet, MYSQLND_CONN_DATA * conn TSRMLS_DC)  		p += len;  	} -	DBG_INF_FMT("allocing root. persistent=%u", packet->persistent_alloc);  	root_ptr = meta->root = mnd_pemalloc(total_len, packet->persistent_alloc);  	if (!root_ptr) {  		SET_OOM_ERROR(*conn->error_info); -		DBG_RETURN(FAIL);	 +		DBG_RETURN(FAIL);  	} -	 +  	meta->root_len = total_len; + +	if (meta->name != mysqlnd_empty_string) { +		meta->sname = zend_string_init(meta->name, meta->name_length, packet->persistent_alloc); +	} else { +		meta->sname = STR_EMPTY_ALLOC(); +	} +	meta->name = meta->sname->val; +	meta->name_length = meta->sname->len; +  	/* Now do allocs */  	if (meta->catalog && meta->catalog != mysqlnd_empty_string) {  		len = meta->catalog_length; @@ -1345,13 +1392,6 @@ php_mysqlnd_rset_field_read(void * _packet, MYSQLND_CONN_DATA * conn TSRMLS_DC)  		root_ptr++;  	} -	if (meta->name && meta->name != mysqlnd_empty_string) { -		len = meta->name_length; -		meta->name = memcpy(root_ptr, meta->name, len); -		*(root_ptr +=len) = '\0'; -		root_ptr++; -	} -  	if (meta->org_name && meta->org_name != mysqlnd_empty_string) {  		len = meta->org_name_length;  		meta->org_name = memcpy(root_ptr, meta->org_name, len); @@ -1359,6 +1399,8 @@ php_mysqlnd_rset_field_read(void * _packet, MYSQLND_CONN_DATA * conn TSRMLS_DC)  		root_ptr++;  	} +	DBG_INF_FMT("allocing root. persistent=%u", packet->persistent_alloc); +  	DBG_INF_FMT("FIELD=[%s.%s.%s]", meta->db? meta->db:"*NA*", meta->table? meta->table:"*NA*",  				meta->name? meta->name:"*NA*"); @@ -1366,12 +1408,12 @@ php_mysqlnd_rset_field_read(void * _packet, MYSQLND_CONN_DATA * conn TSRMLS_DC)  faulty_or_fake:  	DBG_ERR_FMT("Protocol error. Server sent NULL_LENGTH. The server is faulty"); -	php_error_docref(NULL TSRMLS_CC, E_WARNING, "Protocol error. Server sent NULL_LENGTH." +	php_error_docref(NULL, E_WARNING, "Protocol error. Server sent NULL_LENGTH."  					 " The server is faulty");  	DBG_RETURN(FAIL);  premature_end:  	DBG_ERR_FMT("RSET field packet %d bytes shorter than expected", p - begin - packet->header.size); -	php_error_docref(NULL TSRMLS_CC, E_WARNING, "Result set field packet "MYSQLND_SZ_T_SPEC" bytes " +	php_error_docref(NULL, E_WARNING, "Result set field packet "MYSQLND_SZ_T_SPEC" bytes "  			 		"shorter than expected", p - begin - packet->header.size);  	DBG_RETURN(FAIL);  } @@ -1380,9 +1422,9 @@ premature_end:  /* {{{ php_mysqlnd_rset_field_free_mem */  static -void php_mysqlnd_rset_field_free_mem(void * _packet, zend_bool stack_allocation TSRMLS_DC) +void php_mysqlnd_rset_field_free_mem(void * _packet, zend_bool stack_allocation)  { -	MYSQLND_PACKET_RES_FIELD *p= (MYSQLND_PACKET_RES_FIELD *) _packet; +	MYSQLND_PACKET_RES_FIELD *p = (MYSQLND_PACKET_RES_FIELD *) _packet;  	/* p->metadata was passed to us as temporal buffer */  	if (!stack_allocation) {  		mnd_pefree(p, p->header.persistent); @@ -1396,7 +1438,7 @@ static enum_func_status  php_mysqlnd_read_row_ex(MYSQLND_CONN_DATA * conn, MYSQLND_MEMORY_POOL * result_set_memory_pool,  						MYSQLND_MEMORY_POOL_CHUNK ** buffer,  						size_t * data_size, zend_bool persistent_alloc, -						unsigned int prealloc_more_bytes TSRMLS_DC) +						unsigned int prealloc_more_bytes)  {  	enum_func_status ret = PASS;  	MYSQLND_PACKET_HEADER header; @@ -1415,7 +1457,7 @@ php_mysqlnd_read_row_ex(MYSQLND_CONN_DATA * conn, MYSQLND_MEMORY_POOL * result_s  	*data_size = prealloc_more_bytes;  	while (1) { -		if (FAIL == mysqlnd_read_header(conn->net, &header, conn->stats, conn->error_info TSRMLS_CC)) { +		if (FAIL == mysqlnd_read_header(conn->net, &header, conn->stats, conn->error_info)) {  			ret = FAIL;  			break;  		} @@ -1424,11 +1466,7 @@ php_mysqlnd_read_row_ex(MYSQLND_CONN_DATA * conn, MYSQLND_MEMORY_POOL * result_s  		if (first_iteration) {  			first_iteration = FALSE; -			/* -			  We need a trailing \0 for the last string, in case of text-mode, -			  to be able to implement read-only variables. Thus, we add + 1. -			*/ -			*buffer = result_set_memory_pool->get_chunk(result_set_memory_pool, *data_size + 1 TSRMLS_CC); +			*buffer = result_set_memory_pool->get_chunk(result_set_memory_pool, *data_size);  			if (!*buffer) {  				ret = FAIL;  				break; @@ -1442,11 +1480,8 @@ php_mysqlnd_read_row_ex(MYSQLND_CONN_DATA * conn, MYSQLND_MEMORY_POOL * result_s  			/*  			  We have to realloc the buffer. - -			  We need a trailing \0 for the last string, in case of text-mode, -			  to be able to implement read-only variables.  			*/ -			if (FAIL == (*buffer)->resize_chunk((*buffer), *data_size + 1 TSRMLS_CC)) { +			if (FAIL == (*buffer)->resize_chunk((*buffer), *data_size)) {  				SET_OOM_ERROR(*conn->error_info);  				ret = FAIL;  				break; @@ -1455,7 +1490,7 @@ php_mysqlnd_read_row_ex(MYSQLND_CONN_DATA * conn, MYSQLND_MEMORY_POOL * result_s  			p = (*buffer)->ptr + (*data_size - header.size);  		} -		if (PASS != (ret = conn->net->data->m.receive_ex(conn->net, p, header.size, conn->stats, conn->error_info TSRMLS_CC))) { +		if (PASS != (ret = conn->net->data->m.receive_ex(conn->net, p, header.size, conn->stats, conn->error_info))) {  			DBG_ERR("Empty row packet body");  			php_error(E_WARNING, "Empty row packet body");  			break; @@ -1466,7 +1501,7 @@ php_mysqlnd_read_row_ex(MYSQLND_CONN_DATA * conn, MYSQLND_MEMORY_POOL * result_s  		}  	}  	if (ret == FAIL && *buffer) { -		(*buffer)->free_chunk((*buffer) TSRMLS_CC); +		(*buffer)->free_chunk((*buffer));  		*buffer = NULL;  	}  	*data_size -= prealloc_more_bytes; @@ -1477,14 +1512,14 @@ php_mysqlnd_read_row_ex(MYSQLND_CONN_DATA * conn, MYSQLND_MEMORY_POOL * result_s  /* {{{ php_mysqlnd_rowp_read_binary_protocol */  enum_func_status -php_mysqlnd_rowp_read_binary_protocol(MYSQLND_MEMORY_POOL_CHUNK * row_buffer, zval ** fields, +php_mysqlnd_rowp_read_binary_protocol(MYSQLND_MEMORY_POOL_CHUNK * row_buffer, zval * fields,  									  unsigned int field_count, const MYSQLND_FIELD * fields_metadata, -									  zend_bool as_int_or_float, MYSQLND_STATS * stats TSRMLS_DC) +									  zend_bool as_int_or_float, MYSQLND_STATS * stats)  {  	unsigned int i; -	zend_uchar * p = row_buffer->ptr; -	zend_uchar * null_ptr, bit; -	zval **current_field, **end_field, **start_field; +	zend_uchar *p = row_buffer->ptr; +	zend_uchar *null_ptr, bit; +	zval *current_field, *end_field, *start_field;  	DBG_ENTER("php_mysqlnd_rowp_read_binary_protocol"); @@ -1501,28 +1536,20 @@ php_mysqlnd_rowp_read_binary_protocol(MYSQLND_MEMORY_POOL_CHUNK * row_buffer, zv  	bit	= 4;					/* first 2 bits are reserved */  	for (i = 0, current_field = start_field; current_field < end_field; current_field++, i++) { -		DBG_INF("Directly creating zval"); -		MAKE_STD_ZVAL(*current_field); -		if (!*current_field) { -			DBG_RETURN(FAIL); -		} -	} - -	for (i = 0, current_field = start_field; current_field < end_field; current_field++, i++) {  		enum_mysqlnd_collected_stats statistic;  		zend_uchar * orig_p = p;  		DBG_INF_FMT("Into zval=%p decoding column %u [%s.%s.%s] type=%u field->flags&unsigned=%u flags=%u is_bit=%u", -			*current_field, i, +			current_field, i,  			fields_metadata[i].db, fields_metadata[i].table, fields_metadata[i].name, fields_metadata[i].type,  			fields_metadata[i].flags & UNSIGNED_FLAG, fields_metadata[i].flags, fields_metadata[i].type == MYSQL_TYPE_BIT);  		if (*null_ptr & bit) {  			DBG_INF("It's null"); -			ZVAL_NULL(*current_field); +			ZVAL_NULL(current_field);  			statistic = STAT_BINARY_TYPE_FETCHED_NULL;  		} else {  			enum_mysqlnd_field_types type = fields_metadata[i].type; -			mysqlnd_ps_fetch_functions[type].func(*current_field, &fields_metadata[i], 0, &p TSRMLS_CC); +			mysqlnd_ps_fetch_functions[type].func(current_field, &fields_metadata[i], 0, &p);  			if (MYSQLND_G(collect_statistics)) {  				switch (fields_metadata[i].type) { @@ -1559,8 +1586,8 @@ php_mysqlnd_rowp_read_binary_protocol(MYSQLND_MEMORY_POOL_CHUNK * row_buffer, zv  		}  		MYSQLND_INC_CONN_STATISTIC_W_VALUE2(stats, statistic, 1,  										STAT_BYTES_RECEIVED_PURE_DATA_PS, -										(Z_TYPE_PP(current_field) == IS_STRING)? -											Z_STRLEN_PP(current_field) : (p - orig_p)); +										(Z_TYPE_P(current_field) == IS_STRING)? +											Z_STRLEN_P(current_field) : (p - orig_p));  		if (!((bit<<=1) & 255)) {  			bit = 1;	/* to the following byte */ @@ -1572,16 +1599,15 @@ php_mysqlnd_rowp_read_binary_protocol(MYSQLND_MEMORY_POOL_CHUNK * row_buffer, zv  }  /* }}} */ +  /* {{{ php_mysqlnd_rowp_read_text_protocol */  enum_func_status -php_mysqlnd_rowp_read_text_protocol_aux(MYSQLND_MEMORY_POOL_CHUNK * row_buffer, zval ** fields, +php_mysqlnd_rowp_read_text_protocol_aux(MYSQLND_MEMORY_POOL_CHUNK * row_buffer, zval * fields,  									unsigned int field_count, const MYSQLND_FIELD * fields_metadata, -									zend_bool as_int_or_float, zend_bool copy_data, MYSQLND_STATS * stats TSRMLS_DC) +									zend_bool as_int_or_float, MYSQLND_STATS * stats)  { -	  	unsigned int i; -	zend_bool last_field_was_string = FALSE; -	zval **current_field, **end_field, **start_field; +	zval *current_field, *end_field, *start_field;  	zend_uchar * p = row_buffer->ptr;  	size_t data_size = row_buffer->app;  	zend_uchar * bit_area = (zend_uchar*) row_buffer->ptr + data_size + 1; /* we allocate from here */ @@ -1595,39 +1621,12 @@ php_mysqlnd_rowp_read_text_protocol_aux(MYSQLND_MEMORY_POOL_CHUNK * row_buffer,  	end_field = (start_field = fields) + field_count;  	for (i = 0, current_field = start_field; current_field < end_field; current_field++, i++) { -		DBG_INF("Directly creating zval"); -		MAKE_STD_ZVAL(*current_field); -		if (!*current_field) { -			DBG_RETURN(FAIL); -		} -	} - -	for (i = 0, current_field = start_field; current_field < end_field; current_field++, i++) { -		/* Don't reverse the order. It is significant!*/ -		zend_uchar *this_field_len_pos = p;  		/* php_mysqlnd_net_field_length() call should be after *this_field_len_pos = p; */ -		unsigned long len = php_mysqlnd_net_field_length(&p); - -		if (copy_data == FALSE && current_field > start_field && last_field_was_string) { -			/* -			  Normal queries: -			  We have to put \0 now to the end of the previous field, if it was -			  a string. IS_NULL doesn't matter. Because we have already read our -			  length, then we can overwrite it in the row buffer. -			  This statement terminates the previous field, not the current one. - -			  NULL_LENGTH is encoded in one byte, so we can stick a \0 there. -			  Any string's length is encoded in at least one byte, so we can stick -			  a \0 there. -			*/ - -			*this_field_len_pos = '\0'; -		} +		zend_ulong len = php_mysqlnd_net_field_length(&p);  		/* NULL or NOT NULL, this is the question! */  		if (len == MYSQLND_NULL_LENGTH) { -			ZVAL_NULL(*current_field); -			last_field_was_string = FALSE; +			ZVAL_NULL(current_field);  		} else {  #if defined(MYSQLND_STRING_TO_INT_CONVERSION)  			struct st_mysqlnd_perm_bind perm_bind = @@ -1672,7 +1671,7 @@ php_mysqlnd_rowp_read_text_protocol_aux(MYSQLND_MEMORY_POOL_CHUNK * row_buffer,  				zend_uchar save = *(p + len);  				/* We have to make it ASCIIZ temporarily */  				*(p + len) = '\0'; -				if (perm_bind.pack_len < SIZEOF_LONG) { +				if (perm_bind.pack_len < SIZEOF_ZEND_LONG) {  					/* direct conversion */  					int64_t v =  #ifndef PHP_WIN32 @@ -1680,7 +1679,7 @@ php_mysqlnd_rowp_read_text_protocol_aux(MYSQLND_MEMORY_POOL_CHUNK * row_buffer,  #else  						_atoi64((char *) p);  #endif -					ZVAL_LONG(*current_field, (long) v); /* the cast is safe */ +					ZVAL_LONG(current_field, (zend_long) v); /* the cast is safe */  				} else {  					uint64_t v =  #ifndef PHP_WIN32 @@ -1690,9 +1689,9 @@ php_mysqlnd_rowp_read_text_protocol_aux(MYSQLND_MEMORY_POOL_CHUNK * row_buffer,  #endif  					zend_bool uns = fields_metadata[i].flags & UNSIGNED_FLAG? TRUE:FALSE;  					/* We have to make it ASCIIZ temporarily */ -#if SIZEOF_LONG==8 +#if SIZEOF_ZEND_LONG==8  					if (uns == TRUE && v > 9223372036854775807L) -#elif SIZEOF_LONG==4 +#elif SIZEOF_ZEND_LONG==4  					if ((uns == TRUE && v > L64(2147483647)) ||  						(uns == FALSE && (( L64(2147483647) < (int64_t) v) ||  						(L64(-2147483648) > (int64_t) v)))) @@ -1700,9 +1699,9 @@ php_mysqlnd_rowp_read_text_protocol_aux(MYSQLND_MEMORY_POOL_CHUNK * row_buffer,  #error Need fix for this architecture  #endif /* SIZEOF */  					{ -						ZVAL_STRINGL(*current_field, (char *)p, len, 0); +						ZVAL_STRINGL(current_field, (char *)p, len);  					} else { -						ZVAL_LONG(*current_field, (long) v); /* the cast is safe */ +						ZVAL_LONG(current_field, (zend_long) v); /* the cast is safe */  					}  				}  				*(p + len) = save; @@ -1710,7 +1709,7 @@ php_mysqlnd_rowp_read_text_protocol_aux(MYSQLND_MEMORY_POOL_CHUNK * row_buffer,  				zend_uchar save = *(p + len);  				/* We have to make it ASCIIZ temporarily */  				*(p + len) = '\0'; -				ZVAL_DOUBLE(*current_field, atof((char *) p)); +				ZVAL_DOUBLE(current_field, atof((char *) p));  				*(p + len) = save;  			} else  #endif /* MYSQLND_STRING_TO_INT_CONVERSION */ @@ -1725,33 +1724,28 @@ php_mysqlnd_rowp_read_text_protocol_aux(MYSQLND_MEMORY_POOL_CHUNK * row_buffer,  				  Definitely not nice, _hackish_ :(, but works.  				*/  				zend_uchar *start = bit_area; -				ps_fetch_from_1_to_8_bytes(*current_field, &(fields_metadata[i]), 0, &p, len TSRMLS_CC); +				ps_fetch_from_1_to_8_bytes(current_field, &(fields_metadata[i]), 0, &p, len);  				/*  				  We have advanced in ps_fetch_from_1_to_8_bytes. We should go back because  				  later in this function there will be an advancement.  				*/  				p -= len; -				if (Z_TYPE_PP(current_field) == IS_LONG) { -					bit_area += 1 + sprintf((char *)start, "%ld", Z_LVAL_PP(current_field)); -					ZVAL_STRINGL(*current_field, (char *) start, bit_area - start - 1, copy_data); -				} else if (Z_TYPE_PP(current_field) == IS_STRING){ -					memcpy(bit_area, Z_STRVAL_PP(current_field), Z_STRLEN_PP(current_field)); -					bit_area += Z_STRLEN_PP(current_field); +				if (Z_TYPE_P(current_field) == IS_LONG) { +					bit_area += 1 + sprintf((char *)start, ZEND_LONG_FMT, Z_LVAL_P(current_field)); +					ZVAL_STRINGL(current_field, (char *) start, bit_area - start - 1); +				} else if (Z_TYPE_P(current_field) == IS_STRING){ +					memcpy(bit_area, Z_STRVAL_P(current_field), Z_STRLEN_P(current_field)); +					bit_area += Z_STRLEN_P(current_field);  					*bit_area++ = '\0'; -					zval_dtor(*current_field); -					ZVAL_STRINGL(*current_field, (char *) start, bit_area - start - 1, copy_data); +					zval_dtor(current_field); +					ZVAL_STRINGL(current_field, (char *) start, bit_area - start - 1);  				}  			} else { -				ZVAL_STRINGL(*current_field, (char *)p, len, copy_data); +				ZVAL_STRINGL(current_field, (char *)p, len);  			}  			p += len; -			last_field_was_string = TRUE;  		}  	} -	if (copy_data == FALSE && last_field_was_string) { -		/* Normal queries: The buffer has one more byte at the end, because we need it */ -		row_buffer->ptr[data_size] = '\0'; -	}  	DBG_RETURN(PASS);  } @@ -1760,13 +1754,13 @@ php_mysqlnd_rowp_read_text_protocol_aux(MYSQLND_MEMORY_POOL_CHUNK * row_buffer,  /* {{{ php_mysqlnd_rowp_read_text_protocol_zval */  enum_func_status -php_mysqlnd_rowp_read_text_protocol_zval(MYSQLND_MEMORY_POOL_CHUNK * row_buffer, zval ** fields, +php_mysqlnd_rowp_read_text_protocol_zval(MYSQLND_MEMORY_POOL_CHUNK * row_buffer, zval * fields,  									unsigned int field_count, const MYSQLND_FIELD * fields_metadata, -									zend_bool as_int_or_float, MYSQLND_STATS * stats TSRMLS_DC) +									zend_bool as_int_or_float, MYSQLND_STATS * stats)  {  	enum_func_status ret;  	DBG_ENTER("php_mysqlnd_rowp_read_text_protocol_zval"); -	ret = php_mysqlnd_rowp_read_text_protocol_aux(row_buffer, fields, field_count, fields_metadata, as_int_or_float, FALSE, stats TSRMLS_CC); +	ret = php_mysqlnd_rowp_read_text_protocol_aux(row_buffer, fields, field_count, fields_metadata, as_int_or_float, stats);  	DBG_RETURN(ret);  }  /* }}} */ @@ -1774,27 +1768,25 @@ php_mysqlnd_rowp_read_text_protocol_zval(MYSQLND_MEMORY_POOL_CHUNK * row_buffer,  /* {{{ php_mysqlnd_rowp_read_text_protocol_c */  enum_func_status -php_mysqlnd_rowp_read_text_protocol_c(MYSQLND_MEMORY_POOL_CHUNK * row_buffer, zval ** fields, +php_mysqlnd_rowp_read_text_protocol_c(MYSQLND_MEMORY_POOL_CHUNK * row_buffer, zval * fields,  									unsigned int field_count, const MYSQLND_FIELD * fields_metadata, -									zend_bool as_int_or_float, MYSQLND_STATS * stats TSRMLS_DC) +									zend_bool as_int_or_float, MYSQLND_STATS * stats)  {  	enum_func_status ret;  	DBG_ENTER("php_mysqlnd_rowp_read_text_protocol_c"); -	ret = php_mysqlnd_rowp_read_text_protocol_aux(row_buffer, fields, field_count, fields_metadata, as_int_or_float, TRUE, stats TSRMLS_CC); +	ret = php_mysqlnd_rowp_read_text_protocol_aux(row_buffer, fields, field_count, fields_metadata, as_int_or_float, stats);  	DBG_RETURN(ret);  }  /* }}} */ - -  /* {{{ php_mysqlnd_rowp_read */  /*    if normal statements => packet->fields is created by this function,    if PS => packet->fields is passed from outside  */  static enum_func_status -php_mysqlnd_rowp_read(void * _packet, MYSQLND_CONN_DATA * conn TSRMLS_DC) +php_mysqlnd_rowp_read(void * _packet, MYSQLND_CONN_DATA * conn)  {  	zend_uchar *p;  	enum_func_status ret = PASS; @@ -1811,7 +1803,7 @@ php_mysqlnd_rowp_read(void * _packet, MYSQLND_CONN_DATA * conn TSRMLS_DC)  	ret = php_mysqlnd_read_row_ex(conn, packet->result_set_memory_pool, &packet->row_buffer, &data_size,  								  packet->persistent_alloc, post_alloc_for_bit_fields -								  TSRMLS_CC); +								 );  	if (FAIL == ret) {  		goto end;  	} @@ -1836,7 +1828,7 @@ php_mysqlnd_rowp_read(void * _packet, MYSQLND_CONN_DATA * conn TSRMLS_DC)  										 sizeof(packet->error_info.error),  										 &packet->error_info.error_no,  										 packet->error_info.sqlstate -										 TSRMLS_CC); +										);  	} else if (EODATA_MARKER == *p && data_size < 8) { /* EOF */  		packet->eof = TRUE;  		p++; @@ -1868,7 +1860,7 @@ php_mysqlnd_rowp_read(void * _packet, MYSQLND_CONN_DATA * conn TSRMLS_DC)  				  but mostly like old-API unbuffered and thus will populate this array with  				  value.  				*/ -				packet->fields = (zval **) mnd_pecalloc(packet->field_count, sizeof(zval *), +				packet->fields = mnd_pecalloc(packet->field_count, sizeof(zval),  														packet->persistent_alloc);  			}  		} else { @@ -1886,14 +1878,14 @@ end:  /* {{{ php_mysqlnd_rowp_free_mem */  static void -php_mysqlnd_rowp_free_mem(void * _packet, zend_bool stack_allocation TSRMLS_DC) +php_mysqlnd_rowp_free_mem(void * _packet, zend_bool stack_allocation)  {  	MYSQLND_PACKET_ROW *p;  	DBG_ENTER("php_mysqlnd_rowp_free_mem");  	p = (MYSQLND_PACKET_ROW *) _packet;  	if (p->row_buffer) { -		p->row_buffer->free_chunk(p->row_buffer TSRMLS_CC); +		p->row_buffer->free_chunk(p->row_buffer);  		p->row_buffer = NULL;  	}  	DBG_INF_FMT("stack_allocation=%u persistent=%u", (int)stack_allocation, (int)p->header.persistent); @@ -1914,7 +1906,7 @@ php_mysqlnd_rowp_free_mem(void * _packet, zend_bool stack_allocation TSRMLS_DC)  /* {{{ php_mysqlnd_stats_read */  static enum_func_status -php_mysqlnd_stats_read(void * _packet, MYSQLND_CONN_DATA * conn TSRMLS_DC) +php_mysqlnd_stats_read(void * _packet, MYSQLND_CONN_DATA * conn)  {  	MYSQLND_PACKET_STATS *packet= (MYSQLND_PACKET_STATS *) _packet;  	size_t buf_len = conn->net->cmd_buffer.length; @@ -1936,7 +1928,7 @@ php_mysqlnd_stats_read(void * _packet, MYSQLND_CONN_DATA * conn TSRMLS_DC)  /* {{{ php_mysqlnd_stats_free_mem */  static -void php_mysqlnd_stats_free_mem(void * _packet, zend_bool stack_allocation TSRMLS_DC) +void php_mysqlnd_stats_free_mem(void * _packet, zend_bool stack_allocation)  {  	MYSQLND_PACKET_STATS *p= (MYSQLND_PACKET_STATS *) _packet;  	if (p->message) { @@ -1956,7 +1948,7 @@ void php_mysqlnd_stats_free_mem(void * _packet, zend_bool stack_allocation TSRML  /* {{{ php_mysqlnd_prepare_read */  static enum_func_status -php_mysqlnd_prepare_read(void * _packet, MYSQLND_CONN_DATA * conn TSRMLS_DC) +php_mysqlnd_prepare_read(void * _packet, MYSQLND_CONN_DATA * conn)  {  	/* In case of an error, we should have place to put it */  	size_t buf_len = conn->net->cmd_buffer.length; @@ -1982,7 +1974,7 @@ php_mysqlnd_prepare_read(void * _packet, MYSQLND_CONN_DATA * conn TSRMLS_DC)  										 sizeof(packet->error_info.error),  										 &packet->error_info.error_no,  										 packet->error_info.sqlstate -										 TSRMLS_CC); +										);  		DBG_RETURN(PASS);  	} @@ -2023,7 +2015,7 @@ php_mysqlnd_prepare_read(void * _packet, MYSQLND_CONN_DATA * conn TSRMLS_DC)  	DBG_RETURN(PASS);  premature_end:  	DBG_ERR_FMT("PREPARE packet %d bytes shorter than expected", p - begin - packet->header.size); -	php_error_docref(NULL TSRMLS_CC, E_WARNING, "PREPARE packet "MYSQLND_SZ_T_SPEC" bytes shorter than expected", +	php_error_docref(NULL, E_WARNING, "PREPARE packet "MYSQLND_SZ_T_SPEC" bytes shorter than expected",  					 p - begin - packet->header.size);  	DBG_RETURN(FAIL);  } @@ -2032,7 +2024,7 @@ premature_end:  /* {{{ php_mysqlnd_prepare_free_mem */  static void -php_mysqlnd_prepare_free_mem(void * _packet, zend_bool stack_allocation TSRMLS_DC) +php_mysqlnd_prepare_free_mem(void * _packet, zend_bool stack_allocation)  {  	MYSQLND_PACKET_PREPARE_RESPONSE *p= (MYSQLND_PACKET_PREPARE_RESPONSE *) _packet;  	if (!stack_allocation) { @@ -2044,7 +2036,7 @@ php_mysqlnd_prepare_free_mem(void * _packet, zend_bool stack_allocation TSRMLS_D  /* {{{ php_mysqlnd_chg_user_read */  static enum_func_status -php_mysqlnd_chg_user_read(void * _packet, MYSQLND_CONN_DATA * conn TSRMLS_DC) +php_mysqlnd_chg_user_read(void * _packet, MYSQLND_CONN_DATA * conn)  {  	/* There could be an error message */  	size_t buf_len = conn->net->cmd_buffer.length; @@ -2079,7 +2071,7 @@ php_mysqlnd_chg_user_read(void * _packet, MYSQLND_CONN_DATA * conn TSRMLS_DC)  										 sizeof(packet->error_info.error),  										 &packet->error_info.error_no,  										 packet->error_info.sqlstate -										 TSRMLS_CC); +										);  	}  	BAIL_IF_NO_MORE_DATA;  	if (packet->response_code == 0xFE && packet->header.size > (size_t) (p - buf)) { @@ -2098,7 +2090,7 @@ php_mysqlnd_chg_user_read(void * _packet, MYSQLND_CONN_DATA * conn TSRMLS_DC)  	DBG_RETURN(PASS);  premature_end:  	DBG_ERR_FMT("CHANGE_USER packet %d bytes shorter than expected", p - begin - packet->header.size); -	php_error_docref(NULL TSRMLS_CC, E_WARNING, "CHANGE_USER packet "MYSQLND_SZ_T_SPEC" bytes shorter than expected", +	php_error_docref(NULL, E_WARNING, "CHANGE_USER packet "MYSQLND_SZ_T_SPEC" bytes shorter than expected",  						 p - begin - packet->header.size);  	DBG_RETURN(FAIL);  } @@ -2107,7 +2099,7 @@ premature_end:  /* {{{ php_mysqlnd_chg_user_free_mem */  static void -php_mysqlnd_chg_user_free_mem(void * _packet, zend_bool stack_allocation TSRMLS_DC) +php_mysqlnd_chg_user_free_mem(void * _packet, zend_bool stack_allocation)  {  	MYSQLND_PACKET_CHG_USER_RESPONSE * p = (MYSQLND_PACKET_CHG_USER_RESPONSE *) _packet; @@ -2132,7 +2124,7 @@ php_mysqlnd_chg_user_free_mem(void * _packet, zend_bool stack_allocation TSRMLS_  /* {{{ php_mysqlnd_sha256_pk_request_write */  static -size_t php_mysqlnd_sha256_pk_request_write(void * _packet, MYSQLND_CONN_DATA * conn TSRMLS_DC) +size_t php_mysqlnd_sha256_pk_request_write(void * _packet, MYSQLND_CONN_DATA * conn)  {  	zend_uchar buffer[MYSQLND_HEADER_SIZE + 1];  	size_t sent; @@ -2140,7 +2132,7 @@ size_t php_mysqlnd_sha256_pk_request_write(void * _packet, MYSQLND_CONN_DATA * c  	DBG_ENTER("php_mysqlnd_sha256_pk_request_write");  	int1store(buffer + MYSQLND_HEADER_SIZE, '\1'); -	sent = conn->net->data->m.send_ex(conn->net, buffer, 1, conn->stats, conn->error_info TSRMLS_CC); +	sent = conn->net->data->m.send_ex(conn->net, buffer, 1, conn->stats, conn->error_info);  	DBG_RETURN(sent);  } @@ -2149,7 +2141,7 @@ size_t php_mysqlnd_sha256_pk_request_write(void * _packet, MYSQLND_CONN_DATA * c  /* {{{ php_mysqlnd_sha256_pk_request_free_mem */  static -void php_mysqlnd_sha256_pk_request_free_mem(void * _packet, zend_bool stack_allocation TSRMLS_DC) +void php_mysqlnd_sha256_pk_request_free_mem(void * _packet, zend_bool stack_allocation)  {  	if (!stack_allocation) {  		MYSQLND_PACKET_SHA256_PK_REQUEST * p = (MYSQLND_PACKET_SHA256_PK_REQUEST *) _packet; @@ -2163,7 +2155,7 @@ void php_mysqlnd_sha256_pk_request_free_mem(void * _packet, zend_bool stack_allo  /* {{{ php_mysqlnd_sha256_pk_request_response_read */  static enum_func_status -php_mysqlnd_sha256_pk_request_response_read(void * _packet, MYSQLND_CONN_DATA * conn TSRMLS_DC) +php_mysqlnd_sha256_pk_request_response_read(void * _packet, MYSQLND_CONN_DATA * conn)  {  	zend_uchar buf[SHA256_PK_REQUEST_RESP_BUFFER_SIZE];  	zend_uchar *p = buf; @@ -2188,7 +2180,7 @@ php_mysqlnd_sha256_pk_request_response_read(void * _packet, MYSQLND_CONN_DATA *  premature_end:  	DBG_ERR_FMT("OK packet %d bytes shorter than expected", p - begin - packet->header.size); -	php_error_docref(NULL TSRMLS_CC, E_WARNING, "SHA256_PK_REQUEST_RESPONSE packet "MYSQLND_SZ_T_SPEC" bytes shorter than expected", +	php_error_docref(NULL, E_WARNING, "SHA256_PK_REQUEST_RESPONSE packet "MYSQLND_SZ_T_SPEC" bytes shorter than expected",  					 p - begin - packet->header.size);  	DBG_RETURN(FAIL);  } @@ -2197,7 +2189,7 @@ premature_end:  /* {{{ php_mysqlnd_sha256_pk_request_response_free_mem */  static void -php_mysqlnd_sha256_pk_request_response_free_mem(void * _packet, zend_bool stack_allocation TSRMLS_DC) +php_mysqlnd_sha256_pk_request_response_free_mem(void * _packet, zend_bool stack_allocation)  {  	MYSQLND_PACKET_SHA256_PK_REQUEST_RESPONSE * p = (MYSQLND_PACKET_SHA256_PK_REQUEST_RESPONSE *) _packet;  	if (p->public_key) { @@ -2313,7 +2305,7 @@ mysqlnd_packet_methods packet_methods[PROT_LAST] =  /* {{{ mysqlnd_protocol::get_greet_packet */  static struct st_mysqlnd_packet_greet * -MYSQLND_METHOD(mysqlnd_protocol, get_greet_packet)(MYSQLND_PROTOCOL * const protocol, zend_bool persistent TSRMLS_DC) +MYSQLND_METHOD(mysqlnd_protocol, get_greet_packet)(MYSQLND_PROTOCOL * const protocol, zend_bool persistent)  {  	struct st_mysqlnd_packet_greet * packet = mnd_pecalloc(1, packet_methods[PROT_GREET_PACKET].struct_size, persistent);  	DBG_ENTER("mysqlnd_protocol::get_greet_packet"); @@ -2328,7 +2320,7 @@ MYSQLND_METHOD(mysqlnd_protocol, get_greet_packet)(MYSQLND_PROTOCOL * const prot  /* {{{ mysqlnd_protocol::get_auth_packet */  static struct st_mysqlnd_packet_auth * -MYSQLND_METHOD(mysqlnd_protocol, get_auth_packet)(MYSQLND_PROTOCOL * const protocol, zend_bool persistent TSRMLS_DC) +MYSQLND_METHOD(mysqlnd_protocol, get_auth_packet)(MYSQLND_PROTOCOL * const protocol, zend_bool persistent)  {  	struct st_mysqlnd_packet_auth * packet = mnd_pecalloc(1, packet_methods[PROT_AUTH_PACKET].struct_size, persistent);  	DBG_ENTER("mysqlnd_protocol::get_auth_packet"); @@ -2343,7 +2335,7 @@ MYSQLND_METHOD(mysqlnd_protocol, get_auth_packet)(MYSQLND_PROTOCOL * const proto  /* {{{ mysqlnd_protocol::get_auth_response_packet */  static struct st_mysqlnd_packet_auth_response * -MYSQLND_METHOD(mysqlnd_protocol, get_auth_response_packet)(MYSQLND_PROTOCOL * const protocol, zend_bool persistent TSRMLS_DC) +MYSQLND_METHOD(mysqlnd_protocol, get_auth_response_packet)(MYSQLND_PROTOCOL * const protocol, zend_bool persistent)  {  	struct st_mysqlnd_packet_auth_response * packet = mnd_pecalloc(1, packet_methods[PROT_AUTH_RESP_PACKET].struct_size, persistent);  	DBG_ENTER("mysqlnd_protocol::get_auth_response_packet"); @@ -2358,7 +2350,7 @@ MYSQLND_METHOD(mysqlnd_protocol, get_auth_response_packet)(MYSQLND_PROTOCOL * co  /* {{{ mysqlnd_protocol::get_change_auth_response_packet */  static struct st_mysqlnd_packet_change_auth_response * -MYSQLND_METHOD(mysqlnd_protocol, get_change_auth_response_packet)(MYSQLND_PROTOCOL * const protocol, zend_bool persistent TSRMLS_DC) +MYSQLND_METHOD(mysqlnd_protocol, get_change_auth_response_packet)(MYSQLND_PROTOCOL * const protocol, zend_bool persistent)  {  	struct st_mysqlnd_packet_change_auth_response * packet = mnd_pecalloc(1, packet_methods[PROT_CHANGE_AUTH_RESP_PACKET].struct_size, persistent);  	DBG_ENTER("mysqlnd_protocol::get_change_auth_response_packet"); @@ -2373,7 +2365,7 @@ MYSQLND_METHOD(mysqlnd_protocol, get_change_auth_response_packet)(MYSQLND_PROTOC  /* {{{ mysqlnd_protocol::get_ok_packet */  static struct st_mysqlnd_packet_ok * -MYSQLND_METHOD(mysqlnd_protocol, get_ok_packet)(MYSQLND_PROTOCOL * const protocol, zend_bool persistent TSRMLS_DC) +MYSQLND_METHOD(mysqlnd_protocol, get_ok_packet)(MYSQLND_PROTOCOL * const protocol, zend_bool persistent)  {  	struct st_mysqlnd_packet_ok * packet = mnd_pecalloc(1, packet_methods[PROT_OK_PACKET].struct_size, persistent);  	DBG_ENTER("mysqlnd_protocol::get_ok_packet"); @@ -2388,7 +2380,7 @@ MYSQLND_METHOD(mysqlnd_protocol, get_ok_packet)(MYSQLND_PROTOCOL * const protoco  /* {{{ mysqlnd_protocol::get_eof_packet */  static struct st_mysqlnd_packet_eof * -MYSQLND_METHOD(mysqlnd_protocol, get_eof_packet)(MYSQLND_PROTOCOL * const protocol, zend_bool persistent TSRMLS_DC) +MYSQLND_METHOD(mysqlnd_protocol, get_eof_packet)(MYSQLND_PROTOCOL * const protocol, zend_bool persistent)  {  	struct st_mysqlnd_packet_eof * packet = mnd_pecalloc(1, packet_methods[PROT_EOF_PACKET].struct_size, persistent);  	DBG_ENTER("mysqlnd_protocol::get_eof_packet"); @@ -2403,7 +2395,7 @@ MYSQLND_METHOD(mysqlnd_protocol, get_eof_packet)(MYSQLND_PROTOCOL * const protoc  /* {{{ mysqlnd_protocol::get_command_packet */  static struct st_mysqlnd_packet_command * -MYSQLND_METHOD(mysqlnd_protocol, get_command_packet)(MYSQLND_PROTOCOL * const protocol, zend_bool persistent TSRMLS_DC) +MYSQLND_METHOD(mysqlnd_protocol, get_command_packet)(MYSQLND_PROTOCOL * const protocol, zend_bool persistent)  {  	struct st_mysqlnd_packet_command * packet = mnd_pecalloc(1, packet_methods[PROT_CMD_PACKET].struct_size, persistent);  	DBG_ENTER("mysqlnd_protocol::get_command_packet"); @@ -2418,7 +2410,7 @@ MYSQLND_METHOD(mysqlnd_protocol, get_command_packet)(MYSQLND_PROTOCOL * const pr  /* {{{ mysqlnd_protocol::get_rset_packet */  static struct st_mysqlnd_packet_rset_header * -MYSQLND_METHOD(mysqlnd_protocol, get_rset_header_packet)(MYSQLND_PROTOCOL * const protocol, zend_bool persistent TSRMLS_DC) +MYSQLND_METHOD(mysqlnd_protocol, get_rset_header_packet)(MYSQLND_PROTOCOL * const protocol, zend_bool persistent)  {  	struct st_mysqlnd_packet_rset_header * packet = mnd_pecalloc(1, packet_methods[PROT_RSET_HEADER_PACKET].struct_size, persistent);  	DBG_ENTER("mysqlnd_protocol::get_rset_header_packet"); @@ -2433,7 +2425,7 @@ MYSQLND_METHOD(mysqlnd_protocol, get_rset_header_packet)(MYSQLND_PROTOCOL * cons  /* {{{ mysqlnd_protocol::get_result_field_packet */  static struct st_mysqlnd_packet_res_field * -MYSQLND_METHOD(mysqlnd_protocol, get_result_field_packet)(MYSQLND_PROTOCOL * const protocol, zend_bool persistent TSRMLS_DC) +MYSQLND_METHOD(mysqlnd_protocol, get_result_field_packet)(MYSQLND_PROTOCOL * const protocol, zend_bool persistent)  {  	struct st_mysqlnd_packet_res_field * packet = mnd_pecalloc(1, packet_methods[PROT_RSET_FLD_PACKET].struct_size, persistent);  	DBG_ENTER("mysqlnd_protocol::get_result_field_packet"); @@ -2448,7 +2440,7 @@ MYSQLND_METHOD(mysqlnd_protocol, get_result_field_packet)(MYSQLND_PROTOCOL * con  /* {{{ mysqlnd_protocol::get_row_packet */  static struct st_mysqlnd_packet_row * -MYSQLND_METHOD(mysqlnd_protocol, get_row_packet)(MYSQLND_PROTOCOL * const protocol, zend_bool persistent TSRMLS_DC) +MYSQLND_METHOD(mysqlnd_protocol, get_row_packet)(MYSQLND_PROTOCOL * const protocol, zend_bool persistent)  {  	struct st_mysqlnd_packet_row * packet = mnd_pecalloc(1, packet_methods[PROT_ROW_PACKET].struct_size, persistent);  	DBG_ENTER("mysqlnd_protocol::get_row_packet"); @@ -2463,7 +2455,7 @@ MYSQLND_METHOD(mysqlnd_protocol, get_row_packet)(MYSQLND_PROTOCOL * const protoc  /* {{{ mysqlnd_protocol::get_stats_packet */  static struct st_mysqlnd_packet_stats * -MYSQLND_METHOD(mysqlnd_protocol, get_stats_packet)(MYSQLND_PROTOCOL * const protocol, zend_bool persistent TSRMLS_DC) +MYSQLND_METHOD(mysqlnd_protocol, get_stats_packet)(MYSQLND_PROTOCOL * const protocol, zend_bool persistent)  {  	struct st_mysqlnd_packet_stats * packet = mnd_pecalloc(1, packet_methods[PROT_STATS_PACKET].struct_size, persistent);  	DBG_ENTER("mysqlnd_protocol::get_stats_packet"); @@ -2478,7 +2470,7 @@ MYSQLND_METHOD(mysqlnd_protocol, get_stats_packet)(MYSQLND_PROTOCOL * const prot  /* {{{ mysqlnd_protocol::get_prepare_response_packet */  static struct st_mysqlnd_packet_prepare_response * -MYSQLND_METHOD(mysqlnd_protocol, get_prepare_response_packet)(MYSQLND_PROTOCOL * const protocol, zend_bool persistent TSRMLS_DC) +MYSQLND_METHOD(mysqlnd_protocol, get_prepare_response_packet)(MYSQLND_PROTOCOL * const protocol, zend_bool persistent)  {  	struct st_mysqlnd_packet_prepare_response * packet = mnd_pecalloc(1, packet_methods[PROT_PREPARE_RESP_PACKET].struct_size, persistent);  	DBG_ENTER("mysqlnd_protocol::get_prepare_response_packet"); @@ -2493,7 +2485,7 @@ MYSQLND_METHOD(mysqlnd_protocol, get_prepare_response_packet)(MYSQLND_PROTOCOL *  /* {{{ mysqlnd_protocol::get_change_user_response_packet */  static struct st_mysqlnd_packet_chg_user_resp* -MYSQLND_METHOD(mysqlnd_protocol, get_change_user_response_packet)(MYSQLND_PROTOCOL * const protocol, zend_bool persistent TSRMLS_DC) +MYSQLND_METHOD(mysqlnd_protocol, get_change_user_response_packet)(MYSQLND_PROTOCOL * const protocol, zend_bool persistent)  {  	struct st_mysqlnd_packet_chg_user_resp * packet = mnd_pecalloc(1, packet_methods[PROT_CHG_USER_RESP_PACKET].struct_size, persistent);  	DBG_ENTER("mysqlnd_protocol::get_change_user_response_packet"); @@ -2508,7 +2500,7 @@ MYSQLND_METHOD(mysqlnd_protocol, get_change_user_response_packet)(MYSQLND_PROTOC  /* {{{ mysqlnd_protocol::get_sha256_pk_request_packet */  static struct st_mysqlnd_packet_sha256_pk_request * -MYSQLND_METHOD(mysqlnd_protocol, get_sha256_pk_request_packet)(MYSQLND_PROTOCOL * const protocol, zend_bool persistent TSRMLS_DC) +MYSQLND_METHOD(mysqlnd_protocol, get_sha256_pk_request_packet)(MYSQLND_PROTOCOL * const protocol, zend_bool persistent)  {  	struct st_mysqlnd_packet_sha256_pk_request * packet = mnd_pecalloc(1, packet_methods[PROT_SHA256_PK_REQUEST_PACKET].struct_size, persistent);  	DBG_ENTER("mysqlnd_protocol::get_sha256_pk_request_packet"); @@ -2523,7 +2515,7 @@ MYSQLND_METHOD(mysqlnd_protocol, get_sha256_pk_request_packet)(MYSQLND_PROTOCOL  /* {{{ mysqlnd_protocol::get_sha256_pk_request_response_packet */  static struct st_mysqlnd_packet_sha256_pk_request_response * -MYSQLND_METHOD(mysqlnd_protocol, get_sha256_pk_request_response_packet)(MYSQLND_PROTOCOL * const protocol, zend_bool persistent TSRMLS_DC) +MYSQLND_METHOD(mysqlnd_protocol, get_sha256_pk_request_response_packet)(MYSQLND_PROTOCOL * const protocol, zend_bool persistent)  {  	struct st_mysqlnd_packet_sha256_pk_request_response * packet = mnd_pecalloc(1, packet_methods[PROT_SHA256_PK_REQUEST_RESPONSE_PACKET].struct_size, persistent);  	DBG_ENTER("mysqlnd_protocol::get_sha256_pk_request_response_packet"); @@ -2558,11 +2550,11 @@ MYSQLND_CLASS_METHODS_END;  /* {{{ mysqlnd_protocol_init */  PHPAPI MYSQLND_PROTOCOL * -mysqlnd_protocol_init(zend_bool persistent TSRMLS_DC) +mysqlnd_protocol_init(zend_bool persistent)  {  	MYSQLND_PROTOCOL * ret;  	DBG_ENTER("mysqlnd_protocol_init"); -	ret = MYSQLND_CLASS_METHOD_TABLE_NAME(mysqlnd_object_factory).get_protocol_decoder(persistent TSRMLS_CC); +	ret = MYSQLND_CLASS_METHOD_TABLE_NAME(mysqlnd_object_factory).get_protocol_decoder(persistent);  	DBG_RETURN(ret);  }  /* }}} */ @@ -2570,7 +2562,7 @@ mysqlnd_protocol_init(zend_bool persistent TSRMLS_DC)  /* {{{ mysqlnd_protocol_free */  PHPAPI void -mysqlnd_protocol_free(MYSQLND_PROTOCOL * const protocol TSRMLS_DC) +mysqlnd_protocol_free(MYSQLND_PROTOCOL * const protocol)  {  	DBG_ENTER("mysqlnd_protocol_free"); | 
