]> granicus.if.org Git - php/commitdiff
Merge branch 'PHP-7.0' into PHP-7.1
authorNikita Popov <nikic@php.net>
Thu, 22 Sep 2016 10:34:55 +0000 (12:34 +0200)
committerNikita Popov <nikic@php.net>
Thu, 22 Sep 2016 10:34:55 +0000 (12:34 +0200)
1  2 
NEWS
Zend/zend_builtin_functions.c
Zend/zend_inheritance.c

diff --cc NEWS
index a22512429c07be7e62225e04e05bd9a2ea3183f1,726b9b76d295f94061cd297c5208a66eae98c2b7..293ff51d0a9e0f79843ac21258ec506897e6577a
--- 1/NEWS
--- 2/NEWS
+++ b/NEWS
@@@ -1,24 -1,6 +1,25 @@@
  PHP                                                                        NEWS
  |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
 -?? ??? 2016 PHP 7.0.12
 +?? ??? 2016, PHP 7.1.0RC3
 +
 +- COM:
 +  . Fixed bug #73126 (Cannot pass parameter 1 by reference). (Anatol)
++  . Fixed bug #69579 (Invalid free in extension trait). (John Boehr)
 +
 +- GD:
 +  . Fixed bug #50194 (imagettftext broken on transparent background w/o
 +    alphablending). (cmb)
 +  . Fixed bug #73003 (Integer Overflow in gdImageWebpCtx of gd_webp.c). (trylab,
 +    cmb)
 +
 +- JSON:
 +  . Fixed bug #73113 (Segfault with throwing JsonSerializable). (julien)
 +
 +- Session:
 +  . Fixed bug #73100 (session_destroy null dereference in ps_files_path_create).
 +    (cmb)
 +
 +15 Sep 2016, PHP 7.1.0RC2
  
  - Core:
    . Fixed bug #73067 (__debugInfo crashes when throwing an exception).
index f118ebd12a35c1697cdd45c2f1c7685c2f1c4a1e,c3160d0a6fec0029cfa3e401e5b92a8bc985cc8b..3943c73fd3290282f3c622bb19144886997794eb
  #undef ZEND_TEST_EXCEPTIONS
  
  #if ZEND_DEBUG
 +static zend_class_entry *zend_test_interface;
 +static zend_class_entry *zend_test_class;
+ static zend_class_entry *zend_test_trait;
 +static zend_object_handlers zend_test_class_handlers;
  #endif
  
  static ZEND_FUNCTION(zend_version);
@@@ -264,48 -262,15 +265,58 @@@ ZEND_END_ARG_INFO(
  /* }}} */
  
  #if ZEND_DEBUG
 +static zend_object *zend_test_class_new(zend_class_entry *class_type) /* {{{ */ {
 +      zend_object *obj = zend_objects_new(class_type);
 +      obj->handlers = &zend_test_class_handlers;
 +      return obj;
 +}
 +/* }}} */
 +
 +static zend_function *zend_test_class_method_get(zend_object **object, zend_string *name, const zval *key) /* {{{ */ {
 +      zend_internal_function *fptr = emalloc(sizeof(zend_internal_function));
 +      fptr->type = ZEND_OVERLOADED_FUNCTION_TEMPORARY;
 +      fptr->num_args = 1;
 +      fptr->arg_info = NULL;
 +      fptr->scope = (*object)->ce;
 +      fptr->fn_flags = ZEND_ACC_CALL_VIA_HANDLER;
 +      fptr->function_name = zend_string_copy(name);
 +      fptr->handler = ZEND_FN(zend_test_func);
 +      zend_set_function_arg_flags((zend_function*)fptr);
 +
 +      return (zend_function*)fptr;
 +}
 +/* }}} */
 +
 +static zend_function *zend_test_class_static_method_get(zend_class_entry *ce, zend_string *name) /* {{{ */ {
 +      zend_internal_function *fptr = emalloc(sizeof(zend_internal_function));
 +      fptr->type = ZEND_OVERLOADED_FUNCTION;
 +      fptr->num_args = 1;
 +      fptr->arg_info = NULL;
 +      fptr->scope = ce;
 +      fptr->fn_flags = ZEND_ACC_CALL_VIA_HANDLER|ZEND_ACC_STATIC;
 +      fptr->function_name = name;
 +      fptr->handler = ZEND_FN(zend_test_func);
 +      zend_set_function_arg_flags((zend_function*)fptr);
 +
 +      return (zend_function*)fptr;
 +}
 +/* }}} */
 +
 +static int zend_test_class_call_method(zend_string *method, zend_object *object, INTERNAL_FUNCTION_PARAMETERS) /* {{{ */ {
 +      RETVAL_STR(zend_string_copy(method));
 +      return 0;
 +}
 +/* }}} */
++
+ static ZEND_METHOD(_ZendTestTrait, testMethod) /* {{{ */ {
+       RETURN_TRUE;
+ }
+ /* }}} */
+ static zend_function_entry zend_test_trait_methods[] = {
+     ZEND_ME(_ZendTestTrait, testMethod, arginfo_zend__void, ZEND_ACC_PUBLIC)
+     ZEND_FE_END
+ };
  #endif
  
  static const zend_function_entry builtin_functions[] = { /* {{{ */
@@@ -391,18 -356,10 +402,23 @@@ ZEND_MINIT_FUNCTION(core) { /* {{{ *
        zend_register_default_classes();
  
  #if ZEND_DEBUG
 +      INIT_CLASS_ENTRY(class_entry, "_ZendTestInterface", NULL);
 +      zend_test_interface = zend_register_internal_interface(&class_entry);
 +      zend_declare_class_constant_long(zend_test_interface, ZEND_STRL("DUMMY"), 0);
 +      INIT_CLASS_ENTRY(class_entry, "_ZendTestClass", NULL);
 +      zend_test_class = zend_register_internal_class_ex(&class_entry, NULL);
 +      zend_class_implements(zend_test_class, 1, zend_test_interface);
 +      zend_test_class->create_object = zend_test_class_new;
 +      zend_test_class->get_static_method = zend_test_class_static_method_get;
 +
 +      memcpy(&zend_test_class_handlers, zend_get_std_object_handlers(), sizeof(zend_object_handlers));
 +      zend_test_class_handlers.get_method = zend_test_class_method_get;
 +      zend_test_class_handlers.call_method = zend_test_class_call_method;
++
+       INIT_CLASS_ENTRY(class_entry, "_ZendTestTrait", zend_test_trait_methods);
+       zend_test_trait = zend_register_internal_class(&class_entry);
+       zend_test_trait->ce_flags |= ZEND_ACC_TRAIT;
+       zend_declare_property_null(zend_test_trait, "testProp", sizeof("testProp")-1, ZEND_ACC_PUBLIC);
  #endif
  
        return SUCCESS;
Simple merge