mirror of
https://github.com/php/php-src.git
synced 2024-10-01 14:56:10 +00:00
Merge branch 'PHP-5.5'
* PHP-5.5: updated NEWS updated NEWS Fixed bug #64934 Apache2 TS crash with get_browser()
This commit is contained in:
commit
c6b569011a
@ -451,6 +451,19 @@ static int browser_reg_compare(zval **browser TSRMLS_DC, int num_args, va_list a
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
static void browscap_zval_copy_ctor(zval **p) /* {{{ */
|
||||
{
|
||||
zval *new;
|
||||
|
||||
ALLOC_ZVAL(new);
|
||||
*new = **p;
|
||||
|
||||
zval_copy_ctor(new);
|
||||
|
||||
INIT_PZVAL(new);
|
||||
*p = new;
|
||||
} /* }}} */
|
||||
|
||||
/* {{{ proto mixed get_browser([string browser_name [, bool return_array]])
|
||||
Get information about the capabilities of a browser. If browser_name is omitted or null, HTTP_USER_AGENT is used. Returns an object by default; if return_array is true, returns an array. */
|
||||
PHP_FUNCTION(get_browser)
|
||||
@ -511,11 +524,11 @@ PHP_FUNCTION(get_browser)
|
||||
|
||||
if (return_array) {
|
||||
array_init(return_value);
|
||||
zend_hash_copy(Z_ARRVAL_P(return_value), Z_ARRVAL_PP(agent), (copy_ctor_func_t) zval_add_ref, (void *) &tmp_copy, sizeof(zval *));
|
||||
zend_hash_copy(Z_ARRVAL_P(return_value), Z_ARRVAL_PP(agent), (copy_ctor_func_t) browscap_zval_copy_ctor, (void *) &tmp_copy, sizeof(zval *));
|
||||
}
|
||||
else {
|
||||
object_init(return_value);
|
||||
zend_hash_copy(Z_OBJPROP_P(return_value), Z_ARRVAL_PP(agent), (copy_ctor_func_t) zval_add_ref, (void *) &tmp_copy, sizeof(zval *));
|
||||
zend_hash_copy(Z_OBJPROP_P(return_value), Z_ARRVAL_PP(agent), (copy_ctor_func_t) browscap_zval_copy_ctor, (void *) &tmp_copy, sizeof(zval *));
|
||||
}
|
||||
|
||||
while (zend_hash_find(Z_ARRVAL_PP(agent), "parent", sizeof("parent"), (void **) &z_agent_name) == SUCCESS) {
|
||||
@ -524,10 +537,10 @@ PHP_FUNCTION(get_browser)
|
||||
}
|
||||
|
||||
if (return_array) {
|
||||
zend_hash_merge(Z_ARRVAL_P(return_value), Z_ARRVAL_PP(agent), (copy_ctor_func_t) zval_add_ref, (void *) &tmp_copy, sizeof(zval *), 0);
|
||||
zend_hash_merge(Z_ARRVAL_P(return_value), Z_ARRVAL_PP(agent), (copy_ctor_func_t) browscap_zval_copy_ctor, (void *) &tmp_copy, sizeof(zval *), 0);
|
||||
}
|
||||
else {
|
||||
zend_hash_merge(Z_OBJPROP_P(return_value), Z_ARRVAL_PP(agent), (copy_ctor_func_t) zval_add_ref, (void *) &tmp_copy, sizeof(zval *), 0);
|
||||
zend_hash_merge(Z_OBJPROP_P(return_value), Z_ARRVAL_PP(agent), (copy_ctor_func_t) browscap_zval_copy_ctor, (void *) &tmp_copy, sizeof(zval *), 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user