We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
There was an error while loading. Please reload this page.
1 parent 5e8c992 commit 8fb51d4Copy full SHA for 8fb51d4
Zend/zend_closures.c
@@ -58,9 +58,14 @@ ZEND_METHOD(Closure, __invoke) /* {{{ */
58
/* destruct the function also, then - we have allocated it in get_method */
59
zend_string_release_ex(func->internal_function.function_name, 0);
60
efree(func);
61
-#if ZEND_DEBUG
+
62
+ /* Set the func pointer to NULL. Prior to PHP 8.3, this was only done for debug builds,
63
+ * because debug builds check certain properties after the call and needed to know this
64
+ * had been freed.
65
+ * However, extensions can proxy zend_execute_internal, and it's a bit surprising to have
66
+ * an invalid func pointer sitting on there, so this was changed in PHP 8.3.
67
+ */
68
execute_data->func = NULL;
-#endif
69
}
70
/* }}} */
71
0 commit comments