1
0
mirror of https://github.com/php/php-src.git synced 2026-04-28 02:33:17 +02:00

ChangeLog update

This commit is contained in:
2008-03-19 01:31:36 +00:00
parent 8c039bd8cc
commit eee826d115
2 changed files with 593 additions and 0 deletions
+463
View File
@@ -1,3 +1,466 @@
2008-03-18 Ilia Alshanetsky <ilia@prohost.org>
* (PHP_5_2)
NEWS
ext/filter/logical_filters.c
ext/filter/logical_filters.c
ext/filter/tests/bug44445.phpt
ext/filter/tests/bug44445.phpt:
MFB: Bug #44445 (email validator does not handle domains starting/ending
with a -)
* (PHP_5_3)
ext/filter/logical_filters.c
ext/filter/tests/bug44445.phpt
ext/filter/tests/bug44445.phpt
ext/filter/tests/bug44445.phpt:
Fixed bug #44445 (email validator does not handle domains
starting/ending with a -)
2008-03-18 Elizabeth Marie Smith <emsmith@elizabethmariesmith.com>
* (PHP_5_3)
.cvsignore:
Correct name for the file
2008-03-18 Rasmus Lerdorf <rasmus@lerdorf.com>
* (PHP_5_3)
sapi/aolserver/aolserver.c
sapi/apache2filter/sapi_apache2.c
sapi/apache2handler/sapi_apache2.c
sapi/apache_hooks/mod_php5.c
sapi/caudium/caudium.c
sapi/cgi/cgi_main.c
sapi/cli/php_cli.c
sapi/continuity/capi.c
sapi/embed/php_embed.c
sapi/isapi/php5isapi.c
sapi/milter/php_milter.c
sapi/nsapi/nsapi.c
sapi/phttpd/phttpd.c
sapi/pi3web/pi3web_sapi.c
sapi/roxen/roxen.c
sapi/thttpd/thttpd.c
sapi/tux/php_tux.c
sapi/webjames/webjames.c:
Add new empty child terminate sapi hook to the rest of the sapis
* (PHP_5_3)
ZendEngine2/zend_execute.h
ZendEngine2/zend_execute_API.c
main/SAPI.c
main/SAPI.h
main/main.c
main/php_globals.h
sapi/apache/mod_php5.c:
exit_on_timeout patch
After the sigsetjmp change, this is patch #2 in an effort to get some
sanity restored to signal handling in PHP.
This patch does two things. First, it makes it possible to reset the
timeout without resetting the signal handlers. This is important for
cases where an extension may have deferred signals in its MINIT in order
to implement critical sections. It also lays the groundwork for cleaning
up our signal handling and perhaps eventually implementing our own
signal deferring mechanism so we can have true critical sections.
The second thing this does is to make it possible to terminate the current
child process (only for Apache1 at the moment) on a timeout. There are
a number of extensions that are unhappy about being longjmp'ed out of
and when this happens on a timeout they are left in an inconsistent state.
By turning on exit_on_timeout you can now force the process to terminate
on a timeout which will clean up any hanging locks and/or memory left
hanging after the longjmp.
* (PHP_5_3)
ZendEngine2/Zend.m4
ZendEngine2/zend.c
ZendEngine2/zend.h
ZendEngine2/zend_globals.h
win32/build/config.w32.h.in:
Make the sigsetjmp change more robust. On systems that don't have
sigsetjmp use setjmp. Windows is of course weird in that it seems to
have sigsetjmp but not sigjmp_buf (??) so force it to use setjmp in
config.w32.h.in
* (PHP_5_3)
ZendEngine2/zend.c
ZendEngine2/zend.h
ZendEngine2/zend_globals.h:
Use sigsetjmp and siglongjmp instead of setjmp/longjmp in order to be
consistent in how we deal with the signal mask. POSIX doesn't specify
what to do with the signal mask in setjmp/longjmp which has resulted in
the signal mask getting saved on *BSD and not getting saved on Linux.
Making the behaviour explicit via sigsetjmp/siglongjmp gives us
consistency and saves expensive sigprocmask() syscalls on *BSD.
2008-03-18 Elizabeth Marie Smith <emsmith@elizabethmariesmith.com>
* (PHP_5_3)
.cvsignore:
Ignore steph's pretty batch file
2008-03-18 Andrey Hristov <php@hristov.com>
* ext/mysqli/mysqli.c:
MFB : fix the build
* (PHP_5_3)
ext/mysqli/mysqli.c:
Fix the build
2008-03-18 Steph Fox <steph.fox@virgin.net>
* (PHP_5_3)
win32/build/config.w32:
Generic function for binary probes, kill the other two. And get rid of the
annoying double check for CL.
2008-03-18 Andrey Hristov <php@hristov.com>
* ext/mysqli/mysqli.c
ext/mysqli/mysqli_api.c
ext/mysqli/mysqli_driver.c
ext/mysqli/mysqli_nonapi.c
ext/mysqli/mysqli_prop.c
ext/mysqli/mysqli_report.c
ext/mysqli/mysqli_warning.c
ext/mysqli/php_mysqli_structs.h
ext/mysqli/tests/057.phpt
ext/mysqli/tests/bug34810.phpt
ext/mysqli/tests/mysqli_class_mysqli_driver_interface.phpt
ext/mysqli/tests/mysqli_class_mysqli_driver_reflection.phpt
ext/mysqli/tests/mysqli_class_mysqli_interface.phpt
ext/mysqli/tests/mysqli_class_mysqli_reflection.phpt
ext/mysqli/tests/mysqli_class_mysqli_result_interface.phpt
ext/mysqli/tests/mysqli_class_mysqli_result_reflection.phpt
ext/mysqli/tests/mysqli_class_mysqli_stmt_interface.phpt
ext/mysqli/tests/mysqli_class_mysqli_warning_reflection.phpt
ext/mysqli/tests/mysqli_connect_oo.phpt
ext/mysqli/tests/mysqli_constants.phpt
ext/mysqli/tests/mysqli_debug.phpt
ext/mysqli/tests/mysqli_debug_append.phpt
ext/mysqli/tests/mysqli_debug_control_string.phpt
ext/mysqli/tests/mysqli_debug_ini.phpt
ext/mysqli/tests/mysqli_debug_mysqlnd_control_string.phpt
ext/mysqli/tests/mysqli_debug_mysqlnd_only.phpt
ext/mysqli/tests/mysqli_kill.phpt
ext/mysqli/tests/mysqli_options.phpt
ext/mysqli/tests/mysqli_real_connect.phpt
ext/mysqli/tests/mysqli_result_references.phpt
ext/mysqli/tests/mysqli_stmt_attr_get.phpt
ext/mysqlnd/mysqlnd_priv.h:
MFB - Bug #44352 mysqli_connect_error() false negative for host errors
* (PHP_5_3)
NEWS
ext/mysqli/mysqli.c
ext/mysqli/mysqli_driver.c
ext/mysqli/mysqli_nonapi.c
ext/mysqli/mysqli_prop.c
ext/mysqli/mysqli_warning.c
ext/mysqli/php_mysqli_structs.h
ext/mysqli/tests/057.phpt
ext/mysqli/tests/bug34810.phpt
ext/mysqli/tests/connect.inc
ext/mysqli/tests/mysqli_class_mysqli_driver_interface.phpt
ext/mysqli/tests/mysqli_class_mysqli_driver_reflection.phpt
ext/mysqli/tests/mysqli_class_mysqli_interface.phpt
ext/mysqli/tests/mysqli_class_mysqli_reflection.phpt
ext/mysqli/tests/mysqli_class_mysqli_result_interface.phpt
ext/mysqli/tests/mysqli_class_mysqli_result_reflection.phpt
ext/mysqli/tests/mysqli_class_mysqli_stmt_interface.phpt
ext/mysqli/tests/mysqli_class_mysqli_warning_reflection.phpt
ext/mysqli/tests/mysqli_connect_oo.phpt
ext/mysqli/tests/mysqli_constants.phpt
ext/mysqli/tests/mysqli_debug.phpt
ext/mysqli/tests/mysqli_debug_append.phpt
ext/mysqli/tests/mysqli_debug_control_string.phpt
ext/mysqli/tests/mysqli_debug_ini.phpt
ext/mysqli/tests/mysqli_debug_mysqlnd_control_string.phpt
ext/mysqli/tests/mysqli_debug_mysqlnd_only.phpt
ext/mysqli/tests/mysqli_kill.phpt
ext/mysqli/tests/mysqli_options.phpt
ext/mysqli/tests/mysqli_real_connect.phpt
ext/mysqli/tests/mysqli_result_references.phpt
ext/mysqli/tests/mysqli_stmt_attr_get.phpt
ext/mysqlnd/mysqlnd.c
ext/mysqlnd/mysqlnd_priv.h:
Fixed a bunch of bugs reported in
Bug #44352 mysqli_connect_error() false negative for host errors
From now on the mysqli object doesn't have that magic properties, like
error, which were readable but not visible through isset(),
property_exists()
and var_dump(). All other ext/mysqli classes were fixed too.
Now it will be easier to debug mysqli based applications.
2008-03-18 Robin Fernandes <robin_fernandes@uk.ibm.com>
* ext/standard/tests/serialize/005.phpt
ext/standard/tests/serialize/005.phpt
ext/standard/tests/serialize/005.phpt
ext/standard/tests/serialize/serialization_arrays_001.phpt
ext/standard/tests/serialize/serialization_arrays_001.phpt
ext/standard/tests/serialize/serialization_arrays_002.phpt
ext/standard/tests/serialize/serialization_arrays_002.phpt
ext/standard/tests/serialize/serialization_arrays_003.phpt
ext/standard/tests/serialize/serialization_arrays_003.phpt
ext/standard/tests/serialize/serialization_arrays_004.phpt
ext/standard/tests/serialize/serialization_arrays_004.phpt
ext/standard/tests/serialize/serialization_arrays_005.phpt
ext/standard/tests/serialize/serialization_arrays_005.phpt
ext/standard/tests/serialize/serialization_error_001.phpt
ext/standard/tests/serialize/serialization_error_001.phpt
ext/standard/tests/serialize/serialization_miscTypes_001.phpt
ext/standard/tests/serialize/serialization_miscTypes_001.phpt
ext/standard/tests/serialize/serialization_objects_001.phpt
ext/standard/tests/serialize/serialization_objects_001.phpt
ext/standard/tests/serialize/serialization_objects_002.phpt
ext/standard/tests/serialize/serialization_objects_002.phpt
ext/standard/tests/serialize/serialization_objects_003.phpt
ext/standard/tests/serialize/serialization_objects_003.phpt
ext/standard/tests/serialize/serialization_objects_004.phpt
ext/standard/tests/serialize/serialization_objects_004.phpt
ext/standard/tests/serialize/serialization_objects_005.phpt
ext/standard/tests/serialize/serialization_objects_005.phpt
ext/standard/tests/serialize/serialization_objects_006.phpt
ext/standard/tests/serialize/serialization_objects_006.phpt
ext/standard/tests/serialize/serialization_objects_007.phpt
ext/standard/tests/serialize/serialization_objects_007.phpt
ext/standard/tests/serialize/serialization_objects_008.phpt
ext/standard/tests/serialize/serialization_objects_008.phpt
ext/standard/tests/serialize/serialization_objects_009.phpt
ext/standard/tests/serialize/serialization_objects_009.phpt
ext/standard/tests/serialize/serialization_objects_010.phpt
ext/standard/tests/serialize/serialization_objects_010.phpt
ext/standard/tests/serialize/serialization_objects_011.phpt
ext/standard/tests/serialize/serialization_objects_011.phpt
ext/standard/tests/serialize/serialization_objects_012.phpt
ext/standard/tests/serialize/serialization_objects_012.phpt
ext/standard/tests/serialize/serialization_objects_013.phpt
ext/standard/tests/serialize/serialization_objects_013.phpt
ext/standard/tests/serialize/serialization_objects_014.phpt
ext/standard/tests/serialize/serialization_objects_014.phpt
ext/standard/tests/serialize/serialization_objects_015.phpt
ext/standard/tests/serialize/serialization_objects_015.phpt
ext/standard/tests/serialize/serialization_precision_001.phpt
ext/standard/tests/serialize/serialization_precision_001.phpt
ext/standard/tests/serialize/serialization_precision_002.phpt
ext/standard/tests/serialize/serialization_precision_002.phpt
ext/standard/tests/serialize/serialization_resources_001.phpt
ext/standard/tests/serialize/serialization_resources_001.phpt:
Adding more tests for serialize() and unserialize().
* ext/standard/tests/serialize/serialization_arrays_001.phpt
ext/standard/tests/serialize/serialization_arrays_001.phpt
ext/standard/tests/serialize/serialization_arrays_001.phpt
ext/standard/tests/serialize/serialization_arrays_002.phpt
ext/standard/tests/serialize/serialization_arrays_002.phpt
ext/standard/tests/serialize/serialization_arrays_002.phpt
ext/standard/tests/serialize/serialization_arrays_003.phpt
ext/standard/tests/serialize/serialization_arrays_003.phpt
ext/standard/tests/serialize/serialization_arrays_003.phpt
ext/standard/tests/serialize/serialization_arrays_004.phpt
ext/standard/tests/serialize/serialization_arrays_004.phpt
ext/standard/tests/serialize/serialization_arrays_004.phpt
ext/standard/tests/serialize/serialization_arrays_005.phpt
ext/standard/tests/serialize/serialization_arrays_005.phpt
ext/standard/tests/serialize/serialization_arrays_005.phpt
ext/standard/tests/serialize/serialization_error_001.phpt
ext/standard/tests/serialize/serialization_error_001.phpt
ext/standard/tests/serialize/serialization_error_001.phpt
ext/standard/tests/serialize/serialization_miscTypes_001.phpt
ext/standard/tests/serialize/serialization_miscTypes_001.phpt
ext/standard/tests/serialize/serialization_miscTypes_001.phpt
ext/standard/tests/serialize/serialization_objects_001.phpt
ext/standard/tests/serialize/serialization_objects_001.phpt
ext/standard/tests/serialize/serialization_objects_001.phpt
ext/standard/tests/serialize/serialization_objects_002.phpt
ext/standard/tests/serialize/serialization_objects_002.phpt
ext/standard/tests/serialize/serialization_objects_002.phpt
ext/standard/tests/serialize/serialization_objects_003.phpt
ext/standard/tests/serialize/serialization_objects_003.phpt
ext/standard/tests/serialize/serialization_objects_003.phpt
ext/standard/tests/serialize/serialization_objects_004.phpt
ext/standard/tests/serialize/serialization_objects_004.phpt
ext/standard/tests/serialize/serialization_objects_004.phpt
ext/standard/tests/serialize/serialization_objects_005.phpt
ext/standard/tests/serialize/serialization_objects_005.phpt
ext/standard/tests/serialize/serialization_objects_005.phpt
ext/standard/tests/serialize/serialization_objects_006.phpt
ext/standard/tests/serialize/serialization_objects_006.phpt
ext/standard/tests/serialize/serialization_objects_006.phpt
ext/standard/tests/serialize/serialization_objects_007.phpt
ext/standard/tests/serialize/serialization_objects_007.phpt
ext/standard/tests/serialize/serialization_objects_007.phpt
ext/standard/tests/serialize/serialization_objects_008.phpt
ext/standard/tests/serialize/serialization_objects_008.phpt
ext/standard/tests/serialize/serialization_objects_008.phpt
ext/standard/tests/serialize/serialization_objects_009.phpt
ext/standard/tests/serialize/serialization_objects_009.phpt
ext/standard/tests/serialize/serialization_objects_009.phpt
ext/standard/tests/serialize/serialization_objects_010.phpt
ext/standard/tests/serialize/serialization_objects_010.phpt
ext/standard/tests/serialize/serialization_objects_010.phpt
ext/standard/tests/serialize/serialization_objects_011.phpt
ext/standard/tests/serialize/serialization_objects_011.phpt
ext/standard/tests/serialize/serialization_objects_011.phpt
ext/standard/tests/serialize/serialization_objects_012.phpt
ext/standard/tests/serialize/serialization_objects_012.phpt
ext/standard/tests/serialize/serialization_objects_012.phpt
ext/standard/tests/serialize/serialization_objects_013.phpt
ext/standard/tests/serialize/serialization_objects_013.phpt
ext/standard/tests/serialize/serialization_objects_013.phpt
ext/standard/tests/serialize/serialization_objects_014.phpt
ext/standard/tests/serialize/serialization_objects_014.phpt
ext/standard/tests/serialize/serialization_objects_014.phpt
ext/standard/tests/serialize/serialization_objects_015.phpt
ext/standard/tests/serialize/serialization_objects_015.phpt
ext/standard/tests/serialize/serialization_objects_015.phpt
ext/standard/tests/serialize/serialization_precision_001.phpt
ext/standard/tests/serialize/serialization_precision_001.phpt
ext/standard/tests/serialize/serialization_precision_001.phpt
ext/standard/tests/serialize/serialization_precision_002.phpt
ext/standard/tests/serialize/serialization_precision_002.phpt
ext/standard/tests/serialize/serialization_precision_002.phpt
ext/standard/tests/serialize/serialization_resources_001.phpt
ext/standard/tests/serialize/serialization_resources_001.phpt
ext/standard/tests/serialize/serialization_resources_001.phpt:
1.1.4;
file serialization_arrays_001.phpt was initially added on branch PHP_5_2.
2008-03-18 Antony Dovgal <tony@daylessday.org>
* (PHP_5_3)
ZendEngine2/tests/bug42119.phpt
ZendEngine2/tests/clone_uncloneable.phpt:
remove ze1_compat tests
* (PHP_5_3)
ext/xmlreader/php_xmlreader.c:
one more forgotten ze1_compat leftover
* (PHP_5_3)
ext/pdo/pdo_dbh.c:
remove ze1_compat leftovers
2008-03-18 Felipe Pena <felipensp@gmail.com>
* (PHP_5_3)
NEWS
ZendEngine2/zend.c
ZendEngine2/zend_API.c
ZendEngine2/zend_execute.c
ZendEngine2/zend_execute.h
ZendEngine2/zend_execute_API.c
ZendEngine2/zend_globals.h
ZendEngine2/zend_objects.c
ZendEngine2/zend_operators.c
ZendEngine2/zend_vm_def.h
ZendEngine2/zend_vm_execute.h
ZendEngine2/tests/bug30332.phpt
ZendEngine2/tests/bug31828.phpt
ZendEngine2/tests/bug32080.phpt
ZendEngine2/tests/bug32852.phpt
ZendEngine2/tests/bug33243.phpt
ZendEngine2/tests/bug34712.phpt
ZendEngine2/tests/bug34767.phpt
ext/dom/php_dom.c
ext/simplexml/simplexml.c
main/main.c:
MFH: Dropped zend.ze1_compatibility_mode
[DOC]
2008-03-18 Dmitry Stogov <dmitry@zend.com>
* ZendEngine2/zend_compile.c
ZendEngine2/zend_compile.c:
Removed hack (we don't need to modify class name).
(the problem is covered by Zend/tests/ns_056.phpt)
* (PHP_5_3)
NEWS
ZendEngine2/zend.c
ZendEngine2/zend.c
ZendEngine2/zend_compile.c
ZendEngine2/zend_compile.c
ZendEngine2/zend_compile.h
ZendEngine2/zend_compile.h
ZendEngine2/zend_execute_API.c
ZendEngine2/zend_execute_API.c
ZendEngine2/zend_globals.h
ZendEngine2/zend_globals.h
ZendEngine2/zend_opcode.c
ZendEngine2/zend_opcode.c
ZendEngine2/zend_vm_def.h
ZendEngine2/zend_vm_def.h
ZendEngine2/zend_vm_execute.h
ZendEngine2/zend_vm_execute.h
ZendEngine2/zend_vm_opcodes.h
ZendEngine2/zend_vm_opcodes.h
sapi/cgi/cgi_main.c
sapi/cgi/cgi_main.c
sapi/cli/php_cli.c
sapi/cli/php_cli.c
sapi/milter/php_milter.c
sapi/milter/php_milter.c:
Implemented concept of "delayed early binding" that allows opcode caches to
perform class declaration (early and/or run-time binding) in exactly the
same order as vanila php.
The following pseudo-code explains how it should be used in opcode cache.
function cache_compile_file($filename) {
if (!is_cached($filename)) {
...
orig_compiler_options = CG(compiler_optins);
CG(compiler_options) |=
ZEND_COMPILE_IGNORE_INTERNAL_CLASSES |
ZEND_COMPILE_DELAYED_BINDING;
$op_array = orig_compile_file($filename);
CG(compiler_options) = orig_copiler_options;
...
} else {
$op_array = restore_from_cache($filename);
}
zend_do_delayed_early_binding($op_array);
}
* ZendEngine2/tests/array_unshift_COW.phpt
ext/mysql/tests/mysql_fetch_row.phpt
ext/pdo/tests/bug_43663.phpt
ext/standard/tests/file/fgetss_variation2.phpt
ext/standard/tests/file/unlink_error-win32.phpt
ext/standard/tests/strings/implode1.phpt:
Fixed test
2008-03-18 Steph Fox <steph.fox@virgin.net>
* (PHP_5_3)
win32/build/buildconf.js:
You might as well have 'the Steph special' too :-)
I can never remember the cscript line, so let's just have 'configure'
instead.
* (PHP_5_3)
win32/build/Makefile
win32/build/config.w32:
re2c checking.
If it's not installed, the least scary of messages goes out.
If it's installed but older than the required version, the download link
is given.
2008-03-18 Felipe Pena <felipensp@gmail.com>
* ZendEngine2/zend_compile.c
ext/standard/exec.c
ext/standard/exec.c
ext/standard/exec.c:
Fix build
2008-03-17 Stanislav Malyshev <stas@zend.com>
* (PHP_5_2)
+130
View File
@@ -1,3 +1,133 @@
2008-03-18 Rasmus Lerdorf <rasmus@lerdorf.com>
* (PHP_5_3)
zend_execute.h
zend_execute_API.c:
exit_on_timeout patch
After the sigsetjmp change, this is patch #2 in an effort to get some
sanity restored to signal handling in PHP.
This patch does two things. First, it makes it possible to reset the
timeout without resetting the signal handlers. This is important for
cases where an extension may have deferred signals in its MINIT in order
to implement critical sections. It also lays the groundwork for cleaning
up our signal handling and perhaps eventually implementing our own
signal deferring mechanism so we can have true critical sections.
The second thing this does is to make it possible to terminate the current
child process (only for Apache1 at the moment) on a timeout. There are
a number of extensions that are unhappy about being longjmp'ed out of
and when this happens on a timeout they are left in an inconsistent state.
By turning on exit_on_timeout you can now force the process to terminate
on a timeout which will clean up any hanging locks and/or memory left
hanging after the longjmp.
* (PHP_5_3)
Zend.m4
zend.c
zend.h
zend_globals.h:
Make the sigsetjmp change more robust. On systems that don't have
sigsetjmp use setjmp. Windows is of course weird in that it seems to
have sigsetjmp but not sigjmp_buf (??) so force it to use setjmp in
config.w32.h.in
* (PHP_5_3)
zend.c
zend.h
zend_globals.h:
Use sigsetjmp and siglongjmp instead of setjmp/longjmp in order to be
consistent in how we deal with the signal mask. POSIX doesn't specify
what to do with the signal mask in setjmp/longjmp which has resulted in
the signal mask getting saved on *BSD and not getting saved on Linux.
Making the behaviour explicit via sigsetjmp/siglongjmp gives us
consistency and saves expensive sigprocmask() syscalls on *BSD.
2008-03-18 Antony Dovgal <tony@daylessday.org>
* (PHP_5_3)
tests/bug42119.phpt
tests/clone_uncloneable.phpt:
remove ze1_compat tests
2008-03-18 Felipe Pena <felipensp@gmail.com>
* (PHP_5_3)
zend.c
zend_API.c
zend_execute.c
zend_execute.h
zend_execute_API.c
zend_globals.h
zend_objects.c
zend_operators.c
zend_vm_def.h
zend_vm_execute.h
tests/bug30332.phpt
tests/bug31828.phpt
tests/bug32080.phpt
tests/bug32852.phpt
tests/bug33243.phpt
tests/bug34712.phpt
tests/bug34767.phpt:
MFH: Dropped zend.ze1_compatibility_mode
[DOC]
2008-03-18 Dmitry Stogov <dmitry@zend.com>
* zend_compile.c
zend_compile.c:
Removed hack (we don't need to modify class name).
(the problem is covered by Zend/tests/ns_056.phpt)
* zend.c
zend.c
zend_compile.c
zend_compile.c
zend_compile.h
zend_compile.h
zend_execute_API.c
zend_execute_API.c
zend_globals.h
zend_globals.h
zend_opcode.c
zend_opcode.c
zend_vm_def.h
zend_vm_def.h
zend_vm_execute.h
zend_vm_execute.h
zend_vm_opcodes.h
zend_vm_opcodes.h:
Implemented concept of "delayed early binding" that allows opcode caches to
perform class declaration (early and/or run-time binding) in exactly the
same order as vanila php.
The following pseudo-code explains how it should be used in opcode cache.
function cache_compile_file($filename) {
if (!is_cached($filename)) {
...
orig_compiler_options = CG(compiler_optins);
CG(compiler_options) |=
ZEND_COMPILE_IGNORE_INTERNAL_CLASSES |
ZEND_COMPILE_DELAYED_BINDING;
$op_array = orig_compile_file($filename);
CG(compiler_options) = orig_copiler_options;
...
} else {
$op_array = restore_from_cache($filename);
}
zend_do_delayed_early_binding($op_array);
}
* tests/array_unshift_COW.phpt:
Fixed test
2008-03-18 Felipe Pena <felipensp@gmail.com>
* zend_compile.c:
Fix build
2008-03-17 Nuno Lopes <nunoplopes@sapo.pt>
* (PHP_5_3)