- Opcache:
. Fixed bug #77058 (Type inference in opcache causes side effects). (Nikita)
+ . Fixed bug #77092 (array_diff_key() - segmentation fault). (Nikita)
- SOAP:
. Fixed bug #50675 (SoapClient can't handle object references correctly).
static inline int ct_eval_func_call(
zval *result, zend_string *name, uint32_t num_args, zval **args) {
uint32_t i;
- zend_execute_data *execute_data;
+ zend_execute_data *execute_data, *prev_execute_data;
zend_function *func;
int overflow;
execute_data = safe_emalloc(num_args, sizeof(zval), ZEND_CALL_FRAME_SLOT * sizeof(zval));
memset(execute_data, 0, sizeof(zend_execute_data));
+ prev_execute_data = EG(current_execute_data);
+ EG(current_execute_data) = execute_data;
+
EX(func) = func;
EX_NUM_ARGS() = num_args;
for (i = 0; i < num_args; i++) {
zval_ptr_dtor_nogc(EX_VAR_NUM(i));
}
efree(execute_data);
+ EG(current_execute_data) = prev_execute_data;
return SUCCESS;
}
--- /dev/null
+--TEST--
+Bug #77092: array_diff_key() - segmentation fault
+--INI--
+opcache.enable_cli=1
+opcache.optimization_level=-1
+--FILE--
+<?php
+function test() {
+ $anyArrayOne = ['foo' => 'bar', 'bar' => 'baz'];
+ $anyArrayTwo = ['foo' => null];
+
+ print_r(array_diff_key($anyArrayOne, $anyArrayTwo));
+}
+test();
+?>
+--EXPECT--
+Array
+(
+ [bar] => baz
+)