diff options
author | Remi Collet <remi@remirepo.net> | 2019-09-18 14:48:18 +0200 |
---|---|---|
committer | Remi Collet <remi@remirepo.net> | 2019-09-18 14:48:18 +0200 |
commit | acc3bdec92e6470797fc2637a42f17df2aefd378 (patch) | |
tree | 660808cc77038d489c5c6072ed6c57848cbe9c4d | |
parent | 52808b86cde524c9a6f84fc3fdd62ed56b3df08b (diff) |
v3.1.1
-rw-r--r-- | 0f16925652b49bdefaa0ae2264446a845a5bb109.patch | 223 | ||||
-rw-r--r-- | 95120639f0bfb6d4a6fe076ddf1b3016eda5e664.patch | 40 | ||||
-rw-r--r-- | PHPINFO | 2 | ||||
-rw-r--r-- | REFLECTION | 2 | ||||
-rw-r--r-- | php-componere.spec | 13 |
5 files changed, 7 insertions, 273 deletions
diff --git a/0f16925652b49bdefaa0ae2264446a845a5bb109.patch b/0f16925652b49bdefaa0ae2264446a845a5bb109.patch deleted file mode 100644 index c89b304..0000000 --- a/0f16925652b49bdefaa0ae2264446a845a5bb109.patch +++ /dev/null @@ -1,223 +0,0 @@ -From 0f16925652b49bdefaa0ae2264446a845a5bb109 Mon Sep 17 00:00:00 2001 -From: Joe Watkins <krakjoe@php.net> -Date: Thu, 22 Aug 2019 07:38:29 +0200 -Subject: [PATCH] fixes for 7.4 - ---- - src/definition.c | 79 ++++++++++++++++++++++++++++++++++++++---------- - src/definition.h | 5 +++ - src/patch.c | 12 ++++++++ - tests/086.phpt | 5 +-- - 4 files changed, 81 insertions(+), 20 deletions(-) - -diff --git a/src/definition.c b/src/definition.c -index a569af3..ae362d2 100644 ---- a/src/definition.c -+++ b/src/definition.c -@@ -372,15 +372,17 @@ static zend_always_inline void php_componere_relink_objects(zend_objects_store * - } else if (instanceof_function(object->ce, zend_ce_closure)) { - zend_closure_t *closure = (zend_closure_t*) object; - -+ if (closure->func.type == ZEND_USER_FUNCTION) { - #if PHP_VERSION_ID >= 70400 -- if (RUN_TIME_CACHE(&closure->func.op_array)) { -- memset(RUN_TIME_CACHE(&closure->func.op_array), 0, closure->func.op_array.cache_size); -- } -+ if (RUN_TIME_CACHE(&closure->func.op_array)) { -+ memset(RUN_TIME_CACHE(&closure->func.op_array), 0, closure->func.op_array.cache_size); -+ } - #else -- if (closure->func.op_array.run_time_cache) { -- memset(closure->func.op_array.run_time_cache, 0, closure->func.op_array.cache_size); -- } -+ if (closure->func.op_array.run_time_cache) { -+ memset(closure->func.op_array.run_time_cache, 0, closure->func.op_array.cache_size); -+ } - #endif -+ } - - if (closure->called_scope == parent) { - closure->called_scope = def; -@@ -553,9 +555,7 @@ PHP_METHOD(Definition, __construct) - break; - } - -- if (!instanceof_function(o->ce, ce)) { -- zend_do_implement_interface(o->ce, ce); -- } -+ zend_do_implement_interface(o->ce, ce); - } - } ZEND_HASH_FOREACH_END(); - -@@ -565,8 +565,52 @@ PHP_METHOD(Definition, __construct) - if (!o->ce->info.user.filename) { - o->ce->info.user.filename = name; - } -+ -+#if PHP_VERSION_ID >= 70400 -+ o->ce->ce_flags |= ZEND_ACC_RESOLVED_INTERFACES; -+#endif - } - -+#if PHP_VERSION_ID >= 70400 -+void php_componere_definition_properties_table_rebuild(zend_class_entry *ce) -+{ -+ zend_property_info **table, *prop; -+ size_t size; -+ if (ce->default_properties_count == 0 || ce->properties_info_table) { -+ return; -+ } -+ -+ size = sizeof(zend_property_info *) * ce->default_properties_count; -+ if (ce->type == ZEND_USER_CLASS) { -+ ce->properties_info_table = table = zend_arena_alloc(&CG(arena), size); -+ } else { -+ ce->properties_info_table = table = pemalloc(size, 1); -+ } -+ -+ /* Dead slots may be left behind during inheritance. Make sure these are NULLed out. */ -+ memset(table, 0, size); -+ -+ if (ce->parent && ce->parent->default_properties_count != 0) { -+ zend_property_info **parent_table = ce->parent->properties_info_table; -+ memcpy( -+ table, parent_table, -+ sizeof(zend_property_info *) * ce->parent->default_properties_count -+ ); -+ -+ /* Child did not add any new properties, we are done */ -+ if (ce->default_properties_count == ce->parent->default_properties_count) { -+ return; -+ } -+ } -+ -+ ZEND_HASH_FOREACH_PTR(&ce->properties_info, prop) { -+ if (prop->ce == ce && (prop->flags & ZEND_ACC_STATIC) == 0) { -+ table[OBJ_PROP_TO_NUM(prop->offset)] = prop; -+ } -+ } ZEND_HASH_FOREACH_END(); -+} -+#endif -+ - PHP_METHOD(Definition, register) - { - php_componere_definition_t *o = -@@ -626,6 +670,10 @@ PHP_METHOD(Definition, register) - o->registered = 1; - - zend_string_release(name); -+ -+#if PHP_VERSION_ID >= 70400 -+ php_componere_definition_properties_table_rebuild(o->ce); -+#endif - } - - ZEND_BEGIN_ARG_INFO_EX(php_componere_definition_method, 0, 0, 2) -@@ -750,7 +798,7 @@ PHP_METHOD(Definition, addTrait) - - o->ce->ce_flags |= ZEND_ACC_IMPLEMENT_TRAITS; - -- zend_do_link_class(o->ce); -+ zend_do_link_class(o->ce, NULL); - - o->ce->num_traits = num_traits + 1; - o->ce->trait_names -= num_traits; -@@ -788,6 +836,10 @@ PHP_METHOD(Definition, addInterface) - zend_do_implement_interface(o->ce, interface); - } - -+#if PHP_VERSION_ID >= 70400 -+ o->ce->ce_flags |= ZEND_ACC_RESOLVED_INTERFACES; -+#endif -+ - RETURN_ZVAL(getThis(), 1, 0); - } - -@@ -858,7 +910,7 @@ PHP_METHOD(Definition, addProperty) - php_componere_value_addref(value); - - #if PHP_VERSION_ID >= 70400 -- zend_do_link_class(o->ce); -+ zend_do_link_class(o->ce, NULL); - #endif - } - -@@ -909,16 +961,11 @@ PHP_METHOD(Definition, addConstant) - return; - } - -- - zend_declare_class_constant_ex( - o->ce, name, - php_componere_value_default(value), - php_componere_value_access(value), NULL); - --#if PHP_VERSION_ID >= 70400 -- zend_do_link_class(o->ce); --#endif -- - RETURN_ZVAL(getThis(), 1, 0); - } - -diff --git a/src/definition.h b/src/definition.h -index cfa306c..c30da51 100644 ---- a/src/definition.h -+++ b/src/definition.h -@@ -39,4 +39,9 @@ typedef struct _php_componere_definition_t { - extern void php_componere_definition_inherit(zend_class_entry *ce, zend_class_entry *parent); - extern void php_componere_definition_copy(zend_class_entry *ce, zend_class_entry *parent); - extern void php_componere_definition_parent(zend_class_entry *ce, zend_class_entry *parent); -+ -+#if PHP_VERSION_ID >= 70400 -+extern void php_componere_definition_properties_table_rebuild(zend_class_entry *ce); -+#endif -+ - #endif -diff --git a/src/patch.c b/src/patch.c -index 84772d6..79f2dce 100644 ---- a/src/patch.c -+++ b/src/patch.c -@@ -146,6 +146,10 @@ PHP_METHOD(Patch, __construct) - - o->ce->ce_flags &= ~ZEND_ACC_IMPLICIT_ABSTRACT_CLASS; - } -+ -+#if PHP_VERSION_ID >= 70400 -+ o->ce->ce_flags |= ZEND_ACC_RESOLVED_INTERFACES; -+#endif - } - - PHP_METHOD(Patch, apply) -@@ -270,6 +274,14 @@ PHP_METHOD(Patch, derive) - r->saved->refcount++; - - ZVAL_COPY(&r->instance, instance); -+ -+#if PHP_VERSION_ID >= 70400 -+ r->ce->ce_flags |= ZEND_ACC_RESOLVED_INTERFACES; -+#endif -+ -+#if PHP_VERSION_ID >= 70400 -+ php_componere_definition_properties_table_rebuild(r->ce); -+#endif - } - - static zend_function_entry php_componere_patch_methods[] = { -diff --git a/tests/086.phpt b/tests/086.phpt -index 70c8786..a47e857 100644 ---- a/tests/086.phpt -+++ b/tests/086.phpt -@@ -37,12 +37,9 @@ echo "\n"; - $first->revert(); - - printf("first=%d second=%d ", $first->isApplied(), $second->isApplied()); --echo (string) $instance; --echo "\n"; - ?> - --EXPECTF-- - first=1 second=0 ok - first=0 second=1 ko - first=1 second=0 ok --first=0 second=0 --%s fatal error: Object of class DateTime could not be converted to string in %s on line 37 -+first=0 second=0 diff --git a/95120639f0bfb6d4a6fe076ddf1b3016eda5e664.patch b/95120639f0bfb6d4a6fe076ddf1b3016eda5e664.patch deleted file mode 100644 index cff7ace..0000000 --- a/95120639f0bfb6d4a6fe076ddf1b3016eda5e664.patch +++ /dev/null @@ -1,40 +0,0 @@ -From 95120639f0bfb6d4a6fe076ddf1b3016eda5e664 Mon Sep 17 00:00:00 2001 -From: Joe Watkins <krakjoe@php.net> -Date: Sun, 16 Jun 2019 08:34:10 +0200 -Subject: [PATCH] fix 7.4 build - ---- - src/definition.c | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/src/definition.c b/src/definition.c -index 2655a7f..659e65b 100644 ---- a/src/definition.c -+++ b/src/definition.c -@@ -751,7 +751,7 @@ PHP_METHOD(Definition, addTrait) - - o->ce->ce_flags |= ZEND_ACC_IMPLEMENT_TRAITS; - -- zend_do_link_class(o->ce, NULL); -+ zend_do_link_class(o->ce); - - o->ce->num_traits = num_traits + 1; - o->ce->trait_names -= num_traits; -@@ -859,7 +859,7 @@ PHP_METHOD(Definition, addProperty) - php_componere_value_addref(value); - - #if PHP_VERSION_ID >= 70400 -- zend_do_link_class(o->ce, NULL); -+ zend_do_link_class(o->ce); - #endif - } - -@@ -917,7 +917,7 @@ PHP_METHOD(Definition, addConstant) - php_componere_value_access(value), NULL); - - #if PHP_VERSION_ID >= 70400 -- zend_do_link_class(o->ce, NULL); -+ zend_do_link_class(o->ce); - #endif - - RETURN_ZVAL(getThis(), 1, 0); @@ -2,4 +2,4 @@ componere componere support => enabled -componere version => 3.1.0 +componere version => 3.1.1 @@ -1,4 +1,4 @@ -Extension [ <persistent> extension #84 componere version 3.1.0 ] { +Extension [ <persistent> extension #82 componere version 3.1.1 ] { - Dependencies { Dependency [ reflection (Required) ] diff --git a/php-componere.spec b/php-componere.spec index d75d5f9..bfd1231 100644 --- a/php-componere.spec +++ b/php-componere.spec @@ -18,15 +18,12 @@ Summary: Composing PHP classes at runtime Name: %{?scl_prefix}php-componere -Version: 3.1.0 -Release: 4%{?dist}%{!?scl:%{!?nophptag:%(%{__php} -r 'echo ".".PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION;')}} +Version: 3.1.1 +Release: 1%{?dist}%{!?scl:%{!?nophptag:%(%{__php} -r 'echo ".".PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION;')}} License: PHP URL: https://github.com/%{gh_owner}/%{gh_project} Source0: http://pecl.php.net/get/%{pecl_name}-%{version}.tgz -Patch0: https://github.com/krakjoe/componere/commit/95120639f0bfb6d4a6fe076ddf1b3016eda5e664.patch -Patch1: https://github.com/krakjoe/componere/commit/0f16925652b49bdefaa0ae2264446a845a5bb109.patch - BuildRequires: %{?dtsprefix}gcc BuildRequires: %{?scl_prefix}php-devel > 7.1 BuildRequires: %{?scl_prefix}php-pear @@ -98,9 +95,6 @@ sed -e 's/role="test"/role="src"/' \ -i package.xml cd NTS -%patch0 -p1 -b .up1 -%patch1 -p1 -b .up2 - # Sanity check, really often broken extver=$(sed -n '/define PHP_COMPONERE_VERSION/{s/.* "//;s/".*$//;p}' php_componere.h) if test "x${extver}" != "x%{version}"; then @@ -208,6 +202,9 @@ REPORT_EXIT_STATUS=1 \ %changelog +* Wed Sep 18 2019 Remi Collet <remi@remirepo.net> - 3.1.1-1 +- update to 3.1.1 + * Fri Sep 6 2019 Remi Collet <remi@remirepo.net> - 3.1.0-4 - add upstream patches for 7.4.0RC1 |