diff options
Diffstat (limited to 'ext/mysql/php_mysql.c')
| -rw-r--r-- | ext/mysql/php_mysql.c | 10 | 
1 files changed, 8 insertions, 2 deletions
| diff --git a/ext/mysql/php_mysql.c b/ext/mysql/php_mysql.c index 580296a3cf..588eaf0539 100644 --- a/ext/mysql/php_mysql.c +++ b/ext/mysql/php_mysql.c @@ -2171,8 +2171,14 @@ static void php_mysql_fetch_hash(INTERNAL_FUNCTION_PARAMETERS, long result_type,  		ZVAL_COPY_VALUE(&dataset, return_value);  		object_and_properties_init(return_value, ce, NULL); -		zend_merge_properties(return_value, Z_ARRVAL(dataset), 0 TSRMLS_CC); -		zval_dtor(&dataset); +		if (!ce->default_properties_count && !ce->__set) { +			ALLOC_HASHTABLE(Z_OBJ_P(return_value)->properties); +			*Z_OBJ_P(return_value)->properties = *Z_ARRVAL(dataset); +			efree(Z_ARR(dataset)); +		} else { +			zend_merge_properties(return_value, Z_ARRVAL(dataset) TSRMLS_CC); +			zval_dtor(&dataset); +		}  		if (ce->constructor) {  			fci.size = sizeof(fci); | 
