summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOndřej Surý <ondrej@sury.org>2012-07-23 10:51:19 +0200
committerOndřej Surý <ondrej@sury.org>2012-07-23 10:51:19 +0200
commit3365f28adf90110ca7475df889720fc244820f4b (patch)
tree5415edde3e396a93f05f887d9f07071871467bdf
parentf0f8d7084aec4be5c07f02f2e29c2820f85c8315 (diff)
downloadphp-3365f28adf90110ca7475df889720fc244820f4b.tar.gz
Imported Upstream version 5.4.5upstream/5.4.5
-rw-r--r--.travis.yml10
-rw-r--r--NEWS220
-rwxr-xr-xUPGRADING30
-rw-r--r--Zend/ChangeLog22097
-rw-r--r--Zend/tests/bug39018.phpt14
-rw-r--r--Zend/tests/offset_string.phpt8
-rw-r--r--Zend/tests/traits/bug61998.phpt68
-rw-r--r--Zend/zend_compile.c25
-rw-r--r--Zend/zend_execute.c4
-rw-r--r--Zend/zend_hash.h2
-rw-r--r--Zend/zend_ini_scanner.c2566
-rw-r--r--Zend/zend_ini_scanner.l33
-rw-r--r--Zend/zend_ini_scanner_defs.h2
-rw-r--r--Zend/zend_language_parser.c2
-rw-r--r--Zend/zend_language_parser.y2
-rw-r--r--Zend/zend_multibyte.c2
-rw-r--r--Zend/zend_opcode.c6
-rw-r--r--Zend/zend_operators.c7
-rwxr-xr-xconfigure115
-rw-r--r--configure.in2
-rw-r--r--ext/curl/tests/bug61948-win32.phpt25
-rw-r--r--ext/curl/tests/bug61948.phpt5
-rw-r--r--ext/dom/xpath.c2
-rw-r--r--ext/exif/exif.c6
-rw-r--r--ext/fileinfo/libmagic.patch124
-rw-r--r--ext/fileinfo/libmagic/softmagic.c25
-rw-r--r--ext/fileinfo/tests/finfo_file_002.phpt4
-rw-r--r--ext/fileinfo/tests/finfo_file_regex-win32.phpt36
-rw-r--r--ext/fileinfo/tests/finfo_file_regex.phpt32
-rw-r--r--ext/fileinfo/tests/finfo_open_error-win32.phpt59
-rw-r--r--ext/fileinfo/tests/finfo_open_error.phpt5
-rw-r--r--ext/fileinfo/tests/resources/test.awk1
-rw-r--r--ext/gmp/tests/022-win32.phpt90
-rw-r--r--ext/gmp/tests/022.phpt6
-rw-r--r--ext/gmp/tests/gmp_nextprime-win32.phpt45
-rw-r--r--ext/gmp/tests/gmp_nextprime.phpt6
-rw-r--r--ext/iconv/iconv.c128
-rw-r--r--ext/imap/tests/imap_errors_basic.phpt2
-rwxr-xr-xext/intl/collator/collator_sort.c4
-rwxr-xr-xext/intl/common/common_error.c4
-rwxr-xr-xext/intl/dateformat/dateformat.c84
-rwxr-xr-xext/intl/doc/collator_api.php8
-rwxr-xr-xext/intl/doc/common_api.php4
-rwxr-xr-xext/intl/doc/datefmt_api.php4
-rwxr-xr-xext/intl/doc/formatter_api.php4
-rwxr-xr-xext/intl/doc/msgfmt_api.php4
-rwxr-xr-xext/intl/grapheme/grapheme_string.c1
-rwxr-xr-xext/intl/intl_convert.c4
-rwxr-xr-xext/intl/msgformat/msgformat.c2
-rwxr-xr-xext/intl/msgformat/msgformat_attr.c2
-rwxr-xr-xext/intl/msgformat/msgformat_class.h12
-rwxr-xr-xext/intl/msgformat/msgformat_data.c4
-rwxr-xr-xext/intl/msgformat/msgformat_data.h7
-rwxr-xr-xext/intl/msgformat/msgformat_format.c2
-rwxr-xr-xext/intl/msgformat/msgformat_parse.c2
-rwxr-xr-xext/intl/normalizer/normalizer_normalize.c6
-rw-r--r--ext/intl/resourcebundle/resourcebundle_class.c24
-rw-r--r--ext/intl/tests/bug62017.phpt22
-rw-r--r--ext/intl/tests/bug62070.phpt16
-rw-r--r--ext/intl/tests/bug62081.phpt14
-rw-r--r--ext/intl/tests/bug62083.phpt12
-rwxr-xr-xext/intl/tests/collator_get_sort_key.phpt71
-rw-r--r--ext/intl/tests/dateformat_calendars.phpt45
-rwxr-xr-xext/intl/tests/formatter_get_error.phpt2
-rwxr-xr-xext/intl/tests/formatter_get_set_attribute.phpt10
-rw-r--r--ext/intl/tests/formatter_get_set_attribute2.phpt194
-rw-r--r--ext/intl/tests/resourcebundle_null_mandatory_args.phpt26
-rw-r--r--ext/intl/tests/resourcebundle_traversable.phpt23
-rw-r--r--ext/json/json.c21
-rw-r--r--ext/libxml/libxml.c13
-rw-r--r--ext/libxml/tests/bug61367-read.phpt5
-rw-r--r--ext/libxml/tests/bug61367-write.phpt2
-rw-r--r--ext/mysqli/mysqli.c2
-rw-r--r--ext/mysqli/tests/bug62046.phpt40
-rw-r--r--ext/mysqli/tests/mysqli_stmt_affected_rows.phpt2
-rw-r--r--ext/mysqlnd/mysqlnd.c7
-rw-r--r--ext/mysqlnd/mysqlnd_charset.c75
-rw-r--r--ext/mysqlnd/mysqlnd_loaddata.c4
-rw-r--r--ext/mysqlnd/mysqlnd_ps.c6
-rw-r--r--ext/odbc/php_odbc.c2
-rwxr-xr-xext/pcntl/pcntl.c8
-rw-r--r--ext/pcntl/tests/pcntl_exec_3.phpt2
-rwxr-xr-xext/pdo_mysql/mysql_statement.c2
-rwxr-xr-xext/pdo_mysql/pdo_mysql.c2
-rw-r--r--ext/pdo_sqlite/sqlite_driver.c2
-rwxr-xr-xext/phar/cgidebug11
-rw-r--r--ext/phar/package.php139
-rw-r--r--ext/phar/package.xml1
-rw-r--r--ext/phar/tests/fatal_error_webphar.phpt2
-rw-r--r--ext/posix/tests/posix_getegid_basic.phpt15
-rw-r--r--ext/readline/readline.c2
-rw-r--r--ext/recode/recode.c2
-rw-r--r--ext/reflection/php_reflection.c11
-rw-r--r--ext/reflection/tests/bug62384.phpt21
-rw-r--r--ext/session/session.c2
-rw-r--r--ext/simplexml/tests/bug48601.phpt2
-rw-r--r--ext/sockets/config.m415
-rw-r--r--ext/sockets/sockets.c3
-rw-r--r--ext/sockets/tests/socket_import_stream-4-win.phpt106
-rw-r--r--ext/sockets/tests/socket_import_stream-4.phpt4
-rw-r--r--ext/sockets/tests/socket_sentto_recvfrom_ipv4_udp.phpt4
-rw-r--r--ext/sockets/tests/socket_sentto_recvfrom_ipv6_udp.phpt4
-rw-r--r--ext/sockets/tests/socket_sentto_recvfrom_unix.phpt4
-rwxr-xr-xext/spl/spl_array.c5
-rwxr-xr-xext/spl/spl_directory.c3
-rw-r--r--ext/spl/spl_heap.c2
-rw-r--r--ext/spl/tests/bug52238.phpt2
-rw-r--r--ext/spl/tests/bug62073.phpt22
-rw-r--r--ext/spl/tests/bug62262.phpt10
-rw-r--r--ext/spl/tests/bug62433.phpt18
-rw-r--r--ext/spl/tests/heap_005.phpt200
-rw-r--r--ext/spl/tests/heap_006.phpt200
-rw-r--r--ext/spl/tests/pqueue_001.phpt24
-rw-r--r--ext/sqlite3/libsqlite/sqlite3.c22
-rw-r--r--ext/sqlite3/sqlite3.c9
-rw-r--r--ext/standard/base64.c4
-rw-r--r--ext/standard/basic_functions.c2
-rw-r--r--ext/standard/browscap.c2
-rw-r--r--ext/standard/crypt.c8
-rw-r--r--ext/standard/proc_open.c2
-rw-r--r--ext/standard/tests/dir/dir_variation8-win32.phpt8
-rw-r--r--ext/standard/tests/file/bug51094.phpt22
-rw-r--r--ext/standard/tests/file/popen_pclose_basic-win32.phpt5
-rw-r--r--ext/standard/tests/file/rename_variation13-win32.phptbin4692 -> 5058 bytes
-rw-r--r--ext/standard/tests/file/tempnam_variation7-win32.phpt4
-rw-r--r--ext/standard/tests/file/umask_basic.phpt2
-rw-r--r--ext/standard/tests/mail/mail_skipif.inc10
-rw-r--r--ext/standard/tests/serialize/bug62373.phpt25
-rw-r--r--ext/standard/tests/strings/bug62443.phpt9
-rw-r--r--ext/standard/var.c7
-rw-r--r--ext/tidy/examples/cleanhtml.php2
-rw-r--r--ext/tidy/examples/cleanhtml5.php2
-rw-r--r--ext/tidy/tests/004.phpt2
-rw-r--r--ext/tidy/tidy.c2
-rw-r--r--ext/wddx/tests/bug48562.phpt6
-rw-r--r--ext/xmlwriter/php_xmlwriter.c2
-rw-r--r--ext/xsl/xsltprocessor.c2
-rw-r--r--ext/zip/config.m49
-rw-r--r--ext/zip/config.w329
-rw-r--r--ext/zip/lib/zip.h108
-rw-r--r--ext/zip/lib/zip_add.c13
-rw-r--r--ext/zip/lib/zip_add_dir.c14
-rw-r--r--ext/zip/lib/zip_close.c341
-rw-r--r--ext/zip/lib/zip_delete.c11
-rw-r--r--ext/zip/lib/zip_dirent.c11
-rw-r--r--ext/zip/lib/zip_entry_free.c3
-rw-r--r--ext/zip/lib/zip_entry_new.c17
-rw-r--r--ext/zip/lib/zip_err_str.c8
-rw-r--r--ext/zip/lib/zip_error.c13
-rw-r--r--ext/zip/lib/zip_error_to_str.c4
-rw-r--r--ext/zip/lib/zip_fclose.c26
-rw-r--r--ext/zip/lib/zip_fdopen.c62
-rw-r--r--ext/zip/lib/zip_filerange_crc.c2
-rw-r--r--ext/zip/lib/zip_fopen.c4
-rw-r--r--ext/zip/lib/zip_fopen_encrypted.c50
-rw-r--r--ext/zip/lib/zip_fopen_index.c174
-rw-r--r--ext/zip/lib/zip_fopen_index_encrypted.c191
-rw-r--r--ext/zip/lib/zip_fread.c91
-rw-r--r--ext/zip/lib/zip_free.c2
-rw-r--r--ext/zip/lib/zip_get_archive_comment.c10
-rw-r--r--ext/zip/lib/zip_get_archive_flag.c2
-rw-r--r--ext/zip/lib/zip_get_compression_implementation.c46
-rw-r--r--ext/zip/lib/zip_get_encryption_implementation.c46
-rw-r--r--ext/zip/lib/zip_get_file_comment.c4
-rw-r--r--ext/zip/lib/zip_get_file_extra.c58
-rw-r--r--ext/zip/lib/zip_get_name.c7
-rw-r--r--ext/zip/lib/zip_get_num_entries.c52
-rw-r--r--ext/zip/lib/zip_name_locate.c14
-rw-r--r--ext/zip/lib/zip_new.c1
-rw-r--r--ext/zip/lib/zip_open.c107
-rw-r--r--ext/zip/lib/zip_rename.c9
-rw-r--r--ext/zip/lib/zip_replace.c19
-rw-r--r--ext/zip/lib/zip_set_archive_comment.c7
-rw-r--r--ext/zip/lib/zip_set_archive_flag.c24
-rw-r--r--ext/zip/lib/zip_set_default_password.c62
-rw-r--r--ext/zip/lib/zip_set_file_comment.c12
-rw-r--r--ext/zip/lib/zip_set_file_extra.c72
-rw-r--r--ext/zip/lib/zip_set_name.c6
-rw-r--r--ext/zip/lib/zip_source_buffer.c22
-rw-r--r--ext/zip/lib/zip_source_close.c54
-rw-r--r--ext/zip/lib/zip_source_crc.c159
-rw-r--r--ext/zip/lib/zip_source_deflate.c394
-rw-r--r--ext/zip/lib/zip_source_error.c87
-rw-r--r--ext/zip/lib/zip_source_file.c7
-rw-r--r--ext/zip/lib/zip_source_filep.c115
-rw-r--r--ext/zip/lib/zip_source_free.c18
-rw-r--r--ext/zip/lib/zip_source_function.c29
-rw-r--r--ext/zip/lib/zip_source_layered.c59
-rw-r--r--ext/zip/lib/zip_source_open.c76
-rw-r--r--ext/zip/lib/zip_source_pkware.c241
-rw-r--r--ext/zip/lib/zip_source_pop.c63
-rw-r--r--ext/zip/lib/zip_source_read.c64
-rw-r--r--ext/zip/lib/zip_source_stat.c72
-rw-r--r--ext/zip/lib/zip_source_zip.c20
-rw-r--r--ext/zip/lib/zip_stat_index.c18
-rw-r--r--ext/zip/lib/zip_stat_init.c9
-rw-r--r--ext/zip/lib/zip_unchange.c9
-rw-r--r--ext/zip/lib/zip_unchange_archive.c2
-rw-r--r--ext/zip/lib/zip_unchange_data.c3
-rw-r--r--ext/zip/lib/zipconf.h51
-rw-r--r--ext/zip/lib/zipint.h148
-rw-r--r--ext/zip/php_zip.c17
-rw-r--r--ext/zip/php_zip.h2
-rw-r--r--ext/zip/tests/pecl12414.phpt3
-rw-r--r--ext/zlib/tests/func.inc17
-rw-r--r--ext/zlib/tests/gzgetc_basic.phpt8
-rw-r--r--ext/zlib/tests/gzgetc_basic_1.phpt43
-rw-r--r--main/main.c2
-rw-r--r--main/php_config.h.in3
-rw-r--r--main/php_version.h6
-rwxr-xr-xmain/streams/streams.c16
-rwxr-xr-xmakedist3
-rw-r--r--php.ini-development4
-rw-r--r--php.ini-production4
-rwxr-xr-xrun-tests.php11
-rw-r--r--sapi/cgi/tests/apache_request_headers.phpt4
-rw-r--r--sapi/cli/php_cli.c3
-rw-r--r--sapi/cli/php_cli_server.c3
-rw-r--r--sapi/cli/tests/bug61546.phpt11
-rw-r--r--sapi/fpm/config.m45
-rw-r--r--sapi/fpm/fpm/fastcgi.c14
-rw-r--r--sapi/fpm/fpm/fpm.c9
-rw-r--r--sapi/fpm/fpm/fpm.h33
-rw-r--r--sapi/fpm/fpm/fpm_children.c4
-rw-r--r--sapi/fpm/fpm/fpm_conf.c48
-rw-r--r--sapi/fpm/fpm/fpm_conf.h2
-rw-r--r--sapi/fpm/fpm/fpm_main.c90
-rw-r--r--sapi/fpm/fpm/fpm_php.c38
-rw-r--r--sapi/fpm/fpm/fpm_php.h1
-rw-r--r--sapi/fpm/fpm/fpm_process_ctl.c4
-rw-r--r--sapi/fpm/fpm/fpm_signals.c12
-rw-r--r--sapi/fpm/fpm/fpm_signals.h3
-rw-r--r--sapi/fpm/fpm/fpm_sockets.c25
-rw-r--r--sapi/fpm/fpm/fpm_sockets.h4
-rw-r--r--sapi/fpm/fpm/fpm_status.c9
-rw-r--r--sapi/fpm/fpm/fpm_unix.c102
-rw-r--r--sapi/fpm/fpm/zlog.c20
-rw-r--r--sapi/fpm/fpm/zlog.h1
-rw-r--r--sapi/fpm/php-fpm.conf.in16
-rw-r--r--win32/registry.c12
-rw-r--r--win32/time.c18
241 files changed, 6485 insertions, 25207 deletions
diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 000000000..a375a359d
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,10 @@
+language: php
+
+php:
+ # We only specify one version so we only get one worker
+ - 5.4
+
+notifications:
+ email: false
+
+script: exit 0
diff --git a/NEWS b/NEWS
index c4e627947..bc4340653 100644
--- a/NEWS
+++ b/NEWS
@@ -1,7 +1,98 @@
PHP NEWS
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+19 Jul 2012, PHP 5.4.5
+
+- Core:
+ . Fixed bug #62443 (Crypt SHA256/512 Segfaults With Malformed
+ Salt). (Anthony Ferrara)
+ . Fixed bug #62432 (ReflectionMethod random corrupt memory on high
+ concurrent). (Johannes)
+ . Fixed bug #62373 (serialize() generates wrong reference to the object).
+ (Moriyoshi)
+ . Fixed bug #62357 (compile failure: (S) Arguments missing for built-in
+ function __memcmp). (Laruence)
+ . Fixed bug #61998 (Using traits with method aliases appears to result in
+ crash during execution). (Dmitry)
+ . Fixed bug #51094 (parse_ini_file() with INI_SCANNER_RAW cuts a value that
+ includes a semi-colon). (Pierrick)
+ . Fixed potential overflow in _php_stream_scandir (CVE-2012-2688).
+ (Jason Powell, Stas)
+
+- EXIF:
+ . Fixed information leak in ext exif (discovered by Martin Noga,
+ Matthew "j00ru" Jurczyk, Gynvael Coldwind)
+
+- FPM:
+ . Fixed bug #62205 (php-fpm segfaults (null passed to strstr)). (fat)
+ . Fixed bug #62160 (Add process.priority to set nice(2) priorities). (fat)
+ . Fixed bug #62153 (when using unix sockets, multiples FPM instances
+ . Fixed bug #62033 (php-fpm exits with status 0 on some failures to start).
+ (fat)
+ . Fixed bug #61839 (Unable to cross-compile PHP with --enable-fpm). (fat)
+ . Fixed bug #61835 (php-fpm is not allowed to run as root). (fat)
+ . Fixed bug #61295 (php-fpm should not fail with commented 'user'
+ . Fixed bug #61218 (FPM drops connection while receiving some binary values
+ in FastCGI requests). (fat)
+ . Fixed bug #61045 (fpm don't send error log to fastcgi clients). (fat)
+ for non-root start). (fat)
+ . Fixed bug #61026 (FPM pools can listen on the same address). (fat)
+ can be launched without errors). (fat)
+
+- Iconv:
+ . Fix bug #55042 (Erealloc in iconv.c unsafe). (Stas)
+
+- Intl:
+ . Fixed bug #62083 (grapheme_extract() memory leaks). (Gustavo)
+ . ResourceBundle constructor now accepts NULL for the first two arguments.
+ (Gustavo)
+ . Fixed bug #62081 (IntlDateFormatter constructor leaks memory when called
+ twice). (Gustavo)
+ . Fixed bug #62070 (Collator::getSortKey() returns garbage). (Gustavo)
+ . Fixed bug #62017 (datefmt_create with incorrectly encoded timezone leaks
+ pattern). (Gustavo)
+ . Fixed bug #60785 (memory leak in IntlDateFormatter constructor). (Gustavo)
+
+- JSON:
+ . Fixed bug #61359 (json_encode() calls too many reallocs). (Stas)
+
+- libxml:
+ . Fixed bug #62266 (Custom extension segfaults during xmlParseFile with FPM
+ SAPI). (Gustavo)
+
+- Phar:
+ . Fixed bug #62227 (Invalid phar stream path causes crash). (Felipe)
+
+- Readline:
+ . Fixed bug #62186 (readline fails to compile - void function should not
+ return a value). (Johannes)
+
+- Reflection:
+ . Fixed bug #62384 (Attempting to invoke a Closure more than once causes
+ segfault). (Felipe)
+ . Fixed bug #62202 (ReflectionParameter::getDefaultValue() memory leaks
+ with constant). (Laruence)
+
+- Sockets:
+ . Fixed bug #62025 (__ss_family was changed on AIX 5.3). (Felipe)
+
+- SPL:
+ . Fixed bug #62433 (Inconsistent behavior of RecursiveDirectoryIterator to
+ dot files). (Laruence)
+ . Fixed bug #62262 (RecursiveArrayIterator does not implement Countable).
+ (Nikita Popov)
+
+- XML Writer:
+ . Fixed bug #62064 (memory leak in the XML Writer module).
+ (jean-pierre dot lozi at lip6 dot fr)
+
+- Zip:
+ . Upgraded libzip to 0.10.1 (Anatoliy)
+
14 Jun 2012, PHP 5.4.4
+- COM:
+ . Fixed bug #62146 com_dotnet cannot be built shared. (Johannes)
+
- CLI Server:
. Implemented FR #61977 (Need CLI web-server support for files with .htm &
svg extensions). (Sixd, Laruence)
@@ -11,9 +102,6 @@ PHP NEWS
. Fixed bug #61546 (functions related to current script failed when chdir()
in cli sapi). (Laruence, reeze.xia@gmail.com)
-- COM:
- . Fixed bug #62146 com_dotnet cannot be built shared. (Johannes)
-
- Core:
. Fixed missing bound check in iptcparse(). (chris at chiappa.net)
. Fixed CVE-2012-2143. (Solar Designer)
@@ -28,12 +116,15 @@ PHP NEWS
. Fixed bug #61827 (incorrect \e processing on Windows) (Anatoliy)
. Fixed bug #61782 (__clone/__destruct do not match other methods when checking
access controls). (Stas)
+ . Fixed bug #61764 ('I' unpacks n as signed if n > 2^31-1 on LP64). (Gustavo)
. Fixed bug #61761 ('Overriding' a private static method with a different
signature causes crash). (Laruence)
. Fixed bug #61730 (Segfault from array_walk modifying an array passed by
reference). (Laruence)
. Fixed bug #61728 (PHP crash when calling ob_start in request_shutdown
phase). (Laruence)
+ . Fixed bug #61713 (Logic error in charset detection for htmlentities).
+ (Anatoliy)
. Fixed bug #61660 (bin2hex(hex2bin($data)) != $data). (Nikita Popov)
. Fixed bug #61650 (ini parser crashes when using ${xxxx} ini variables
(without apache2)). (Laruence)
@@ -47,31 +138,35 @@ PHP NEWS
. Fixed bug #61948 (CURLOPT_COOKIEFILE '' raises open_basedir restriction).
(Laruence)
-- Intl:
+- Fileinfo
+ . Fixed bug #61812 (Uninitialised value used in libmagic).
+ (Laruence, Gustavo)
+ . Fixed bug #61566 failure caused by the posix lseek and read versions
+ under windows in cdf_read(). (Anatoliy)
+ . Fixed bug #61565 where php_stream_open_wrapper_ex tries to open a
+ directory descriptor under windows. (Anatoliy)
+
+- Intl
. Fixed bug #62082 (Memory corruption in internal function
get_icu_disp_value_src_php()). (Gustavo)
+- Libxml:
+ . Fixed bug #61617 (Libxml tests failed(ht is already destroyed)).
+ (Laruence)
+
- PDO:
. Fixed bug #61755 (A parsing bug in the prepared statements can lead to
access violations). (Johannes)
- Phar:
- . Fix bug #61065 (Secunia SA44335, CVE-2012-2386). (Rasmus)
+ . Fixed bug #61065 (Secunia SA44335, CVE-2012-2386). (Rasmus)
- Pgsql:
. Added pg_escape_identifier/pg_escape_literal. (Yasuo Ohgaki)
-- FPM
- . Fixed bug #61812 (Uninitialised value used in libmagic).
- (Laruence, Gustavo)
- . Fixed bug #61565 where php_stream_open_wrapper_ex tries to open a
- directory descriptor under windows. (Anatoliy)
- . Fixed bug #61566 failure caused by the posix lseek and read versions
- under windows in cdf_read(). (Anatoliy)
-
-- Libxml:
- . Fixed bug #61617 (Libxml tests failed(ht is already destroyed)).
- (Laruence)
+- Streams:
+ . Fixed bug #61961 (file_get_contents leaks when access empty file with
+ maxlen set). (Reeze)
- Zlib:
. Fixed bug #61820 (using ob_gzhandler will complain about headers already
@@ -161,23 +256,6 @@ PHP NEWS
. Fixed bug #60948 (mysqlnd FTBFS when -Wformat-security is enabled).
(Johannes)
-- Readline:
- . Fixed bug #61088 (Memory leak in readline_callback_handler_install).
- (Nikic, Laruence)
-
-- Session
- . Fixed bug #60634 (Segmentation fault when trying to die() in
- SessionHandler::write()). (Ilia)
-
-- SOAP
- . Fixed bug #61423 (gzip compression fails). (Ilia)
- . Fixed bug #60887 (SoapClient ignores user_agent option and sends no
- User-Agent header). (carloschilazo at gmail dot com)
- . Fixed bug #60842, #51775 (Chunked response parsing error when
- chunksize length line is > 10 bytes). (Ilia)
- . Fixed bug #49853 (Soap Client stream context header option ignored).
- (Dmitry)
-
- PDO
. Fixed bug #61292 (Segfault while calling a method on an overloaded PDO
object). (Laruence)
@@ -195,12 +273,29 @@ PHP NEWS
. Fixed bug #61184 (Phar::webPhar() generates headers with trailing NUL
bytes). (Nikita Popov)
+- Readline:
+ . Fixed bug #61088 (Memory leak in readline_callback_handler_install).
+ (Nikic, Laruence)
+
- Reflection:
. Implemented FR #61602 (Allow access to the name of constant
used as function/method parameter's default value). (reeze.xia@gmail.com)
. Fixed bug #60968 (Late static binding doesn't work with
ReflectionMethod::invokeArgs()). (Laruence)
+- Session
+ . Fixed bug #60634 (Segmentation fault when trying to die() in
+ SessionHandler::write()). (Ilia)
+
+- SOAP
+ . Fixed bug #61423 (gzip compression fails). (Ilia)
+ . Fixed bug #60887 (SoapClient ignores user_agent option and sends no
+ User-Agent header). (carloschilazo at gmail dot com)
+ . Fixed bug #60842, #51775 (Chunked response parsing error when
+ chunksize length line is > 10 bytes). (Ilia)
+ . Fixed bug #49853 (Soap Client stream context header option ignored).
+ (Dmitry)
+
- SPL:
. Fixed bug #61453 (SplObjectStorage does not identify objects correctly).
(Gustavo)
@@ -657,6 +752,65 @@ PHP NEWS
. Fixed bug #55544 (ob_gzhandler always conflicts with zlib.output_compression).
(Mike)
+14 Jun 2012, PHP 5.3.14
+
+- CLI SAPI:
+ . Fixed bug #61546 (functions related to current script failed when chdir()
+ in cli sapi). (Laruence, reeze.xia@gmail.com)
+
+- CURL:
+ . Fixed bug #61948 (CURLOPT_COOKIEFILE '' raises open_basedir restriction).
+ (Laruence)
+
+- COM:
+ . Fixed bug #62146 com_dotnet cannot be built shared. (Johannes)
+
+- Core:
+ . Fixed CVE-2012-2143. (Solar Designer)
+ . Fixed missing bound check in iptcparse(). (chris at chiappa.net)
+ . Fixed bug #62373 (serialize() generates wrong reference to the object).
+ (Moriyoshi)
+ . Fixed bug #62005 (unexpected behavior when incrementally assigning to a
+ member of a null object). (Laruence)
+ . Fixed bug #61991 (long overflow in realpath_cache_get()). (Anatoliy)
+ . Fixed bug #61764 ('I' unpacks n as signed if n > 2^31-1 on LP64). (Gustavo)
+ . Fixed bug #61730 (Segfault from array_walk modifying an array passed by
+ reference). (Laruence)
+ . Fixed bug #61713 (Logic error in charset detection for htmlentities).
+ (Anatoliy)
+ . Fixed bug #54197 ([PATH=] sections incompatibility with user_ini.filename
+ set to null). (Anatoliy)
+ . Changed php://fd to be available only for CLI.
+
+- Fileinfo:
+ . Fixed bug #61812 (Uninitialised value used in libmagic).
+ (Laruence, Gustavo)
+
+- Iconv extension:
+ . Fixed a bug that iconv extension fails to link to the correct library
+ when another extension makes use of a library that links to the iconv
+ library. See https://bugs.gentoo.org/show_bug.cgi?id=364139 for detail.
+ (Moriyoshi)
+
+- Intl:
+ . Fixed bug #62082 (Memory corruption in internal function
+ get_icu_disp_value_src_php()). (Gustavo)
+
+- JSON
+ . Fixed bug #61537 (json_encode() incorrectly truncates/discards
+ information). (Adam)
+
+- PDO:
+ . Fixed bug #61755 (A parsing bug in the prepared statements can lead to
+ access violations). (Johannes)
+
+- Phar:
+ . Fix bug #61065 (Secunia SA44335). (Rasmus)
+
+- Streams:
+ . Fixed bug #61961 (file_get_contents leaks when access empty file with
+ maxlen set). (Reeze)
+
08 May 2012, PHP 5.3.13
- CGI
. Improve fix for PHP-CGI query string parameter vulnerability, CVE-2012-2311.
diff --git a/UPGRADING b/UPGRADING
index 670018531..a10dca991 100755
--- a/UPGRADING
+++ b/UPGRADING
@@ -37,9 +37,9 @@ PHP 5.4 UPGRADE NOTES
=============================
- PHP 5.4 now checks at compile time if /dev/urandom or /dev/arandom
- are present. If either is available, session.entropy_file now
+ are present. If either is available, session.entropy_file now
defaults to that file and session.entropy_length defaults to 32.
- This provides non-blocking entropy to session id generation. If you
+ This provides non-blocking entropy to session id generation. If you
do not want extra entropy for your session ids, add:
session.entropy_file=
@@ -89,9 +89,9 @@ PHP 5.4 UPGRADE NOTES
session.upload_progress.min_freq
- Added a zend.multibyte directive as a replacement of the PHP compile time
- configuration option --enable-zend-multibyte. Now the Zend Engine always
+ configuration option --enable-zend-multibyte. Now the Zend Engine always
contains code for multibyte support, which can be enabled or disabled at
- runtime. Note: It doesn't make a lot of sense to enable this option if
+ runtime. Note: It doesn't make a lot of sense to enable this option if
ext/mbstring is not enabled, because most functionality is implemented by
mbstrings callbacks.
@@ -107,7 +107,7 @@ PHP 5.4 UPGRADE NOTES
in a stream fashion (through php://input) without having it copied in memory
multiple times.
-- Added windows_show_crt_warning. This directive shows the CRT warnings when
+- Added windows_show_crt_warning. This directive shows the CRT warnings when
enabled. These warnings were displayed by default until now. It is disabled
by default.
@@ -162,7 +162,7 @@ PHP 5.4 UPGRADE NOTES
- Non-numeric string offsets, e.g. $a['foo'] where $a is a string, now
return false on isset() and true on empty(), and produce warning if
- trying to use them. Offsets of types double, bool and null produce
+ trying to use them. Offsets of types double, bool and null produce
notice. Numeric strings ($a['2']) still work as before.
Note that offsets like '12.3' and '5 and a half' are considered
@@ -207,7 +207,7 @@ PHP 5.4 UPGRADE NOTES
- htmlentities() and htmlspecialchars() are stricter in the code units they
accept for the asian encodings. For Big5-HKSCS, the octets 0x80 and 0xFF are
- rejected. For GB2312/EUC-CN, the octets 0x8E, 0x8F, 0xA0 and 0xFF are
+ rejected. For GB2312/EUC-CN, the octets 0x8E, 0x8F, 0xA0 and 0xFF are
rejected. For SJIS, the octets 0x80, 0xA0, 0xFD, 0xFE and 0xFF are rejected,
except maybe after a valid starting byte. For EUC-JP, the octets 0xA0 and
0xFF are rejected.
@@ -233,7 +233,7 @@ PHP 5.4 UPGRADE NOTES
checks on the validity of the entities. Numerical entities are checked for a
valid range (0 to 0x10FFFF); if the flag ENT_DISALLOWED is given, the
validity of such numerical entity in the target document type is also
- checked. Named entities are checked for necessary existence in the target
+ checked. Named entities are checked for necessary existence in the target
document type instead of only checking whether they were constituted by
alphanumeric characters.
@@ -341,6 +341,8 @@ PHP 5.4 UPGRADE NOTES
- Since 5.4.4, "php://fd" stream syntax is available only in CLI build.
+- Since 5.4.5, resourcebundle_create() accepts null for the first two arguments.
+
==============================
5. Changes to existing classes
==============================
@@ -373,6 +375,9 @@ PHP 5.4 UPGRADE NOTES
- FilesystemIterator, GlobIterator and (Recursive)DirectoryIterator now use
the default stream context.
+- Since 5.4.5, the constructor of ResourceBundle accepts NULL for the first two
+ arguments.
+
===========================
7. Deprecated Functionality
===========================
@@ -431,7 +436,7 @@ d. Removed hash algorithms
a. Extensions no longer maintained
- ext/sqlite is no longer part of the base distribution and has been moved
- to PECL. Use sqlite3 or PDO_SQLITE instead.
+ to PECL. Use sqlite3 or PDO_SQLITE instead.
b. Extensions with changed behavior
@@ -485,7 +490,7 @@ b. Extensions with changed behavior
===========================
- A REQUEST_TIME_FLOAT value returns a floating point number indicating the
- time with microsecond precision. All SAPIs providing this value should be
+ time with microsecond precision. All SAPIs providing this value should be
returning float and not time_t.
- apache_child_terminate(), getallheaders(), apache_request_headers()
@@ -508,6 +513,11 @@ b. Extensions with changed behavior
- is_link now works properly for symbolic links on Windows Vista
or later. Earlier systems do not support symbolic links.
+- As of PHP 5.4.5 and above the COM extension isn't compiled statically in PHP
+ anymore but shared. It'll still be delivered with the standard PHP release but
+ must be activated manually with the "extension = php_com_dotnet.dll" directive
+ in php.ini.
+
==================
12. New in PHP 5.4
==================
diff --git a/Zend/ChangeLog b/Zend/ChangeLog
deleted file mode 100644
index ef4e71c87..000000000
--- a/Zend/ChangeLog
+++ /dev/null
@@ -1,22097 +0,0 @@
-2005-08-05 Dmitry Stogov <dmitry@zend.com>
-
- * zend_execute.c
- tests/array_type_hint_001.phpt
- tests/bug33996.phpt:
- Fixed bug #33996 (No information given for fatal error on passing invalid
- value to typed argument)
-
- * zend_operators.c
- tests/bug33999.phpt:
- Fixed bug #33999 (object remains object when cast to int)
-
- * zend_vm_def.h
- zend_vm_execute.h
- zend_vm_opcodes.h:
- Fixed memory leak in foreach() on undefined variable
- (Zend/tests/foreach_undefined.php)
-
-2005-08-04 Antony Dovgal <antony@zend.com>
-
- * tests/foreach_undefined.phpt:
- add test for the last Dmitry's fix
-
-2005-08-04 Dmitry Stogov <dmitry@zend.com>
-
- * zend_compile.c:
- Fixed possible memory corryption during compilation of <?php foreach($a as
- $b); ?>
-
- * (PHP_5_0)
- zend_objects.c:
- Fixed clone bug in ze1_compatibility mode
-
- * zend_objects.c:
- Fixed clone bug in ze1_compatibilty mode
-
-2005-08-03 Jani Taskinen <jani.taskinen@sci.fi>
-
- * LICENSE:
- - Bumber up year
-
- * acconfig.h
- zend.c
- zend.h
- zend_API.c
- zend_API.h
- zend_alloc.c
- zend_alloc.h
- zend_builtin_functions.c
- zend_builtin_functions.h
- zend_compile.c
- zend_compile.h
- zend_config.nw.h
- zend_config.w32.h
- zend_constants.c
- zend_constants.h
- zend_default_classes.c
- zend_dynamic_array.c
- zend_dynamic_array.h
- zend_errors.h
- zend_exceptions.c
- zend_exceptions.h
- zend_execute.c
- zend_execute.h
- zend_execute_API.c
- zend_extensions.c
- zend_extensions.h
- zend_fast_cache.h
- zend_globals.h
- zend_globals_macros.h
- zend_hash.c
- zend_hash.h
- zend_highlight.c
- zend_highlight.h
- zend_indent.c
- zend_indent.h
- zend_ini.c
- zend_ini.h
- zend_ini_parser.y
- zend_ini_scanner.h
- zend_ini_scanner.l
- zend_interfaces.c
- zend_interfaces.h
- zend_istdiostream.h
- zend_iterators.c
- zend_iterators.h
- zend_language_parser.y
- zend_language_scanner.h
- zend_language_scanner.l
- zend_list.c
- zend_list.h
- zend_llist.c
- zend_llist.h
- zend_mm.c
- zend_mm.h
- zend_modules.h
- zend_multibyte.c
- zend_multibyte.h
- zend_multiply.h
- zend_object_handlers.c
- zend_object_handlers.h
- zend_objects.c
- zend_objects.h
- zend_objects_API.c
- zend_objects_API.h
- zend_opcode.c
- zend_operators.c
- zend_operators.h
- zend_ptr_stack.c
- zend_ptr_stack.h
- zend_qsort.c
- zend_qsort.h
- zend_reflection_api.c
- zend_reflection_api.h
- zend_sprintf.c
- zend_stack.c
- zend_stack.h
- zend_static_allocator.c
- zend_static_allocator.h
- zend_stream.c
- zend_stream.h
- zend_strtod.h
- zend_ts_hash.c
- zend_ts_hash.h
- zend_types.h
- zend_variables.c
- zend_variables.h
- zend_vm.h:
- Bump up the year
-
- * README.ZEND_VM:
- Nuked DOS EOLs
-
-2005-08-02 Dmitry Stogov <dmitry@zend.com>
-
- * zend_execute_API.c
- zend_execute_API.c:
- Fixed bug #33942 (the patch to #33156 crash cygwin except cli)
-
-2005-08-02 Jani Taskinen <jani.taskinen@sci.fi>
-
- * zend_exceptions.c:
- - Fixed bug #33967 (misuse of Exception constructor doesn\'t display
- errorfile)
-
-2005-08-02 Dmitry Stogov <dmitry@zend.com>
-
- * bench.php:
- Removed warnings
-
-2005-07-29 Ilia Alshanetsky <ilia@prohost.org>
-
- * zend_vm_def.h
- zend_vm_execute.h:
- Fixed warning message generated when isset() or empty() are given invalid
- offset type.
-
-2005-07-29 Anantha Kesari H Y <hyanantha@novell.com>
-
- * acconfig.h
- acconfig.h:
- In NetWare few of the programs like apache2 and ldap use winsock inclusinf
- sys/socket.h is not desirable.
- --Kamesh
-
-2005-07-29 Jani Taskinen <jani.taskinen@sci.fi>
-
- * zend_vm_execute.h:
- update generated file
-
-2005-07-28 Andi Gutmans <andi@zend.com>
-
- * zend_vm_def.h:
- - Tiny fixlet
-
-2005-07-28 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_API.c
- zend_API.h:
- - Add convenience function zend_is_callable_ex() and base zend_is_callable
- and zend_make_callable on it. This functions allows to check if a php
- variable is a callable function and returns its function pointer as well
- as object if possible.
-
-2005-07-26 Jani Taskinen <jani.taskinen@sci.fi>
-
- * zend_execute_API.c:
- bug #33865
-
-2005-07-25 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_API.c:
- - Fix #33853
-
-2005-07-22 Dmitry Stogov <dmitry@zend.com>
-
- * zend.c
- zend.c
- tests/bug33802.phpt
- tests/bug33802.phpt
- tests/bug33802.phpt:
- Fixed bug #33802 (throw Exception in error handler causes crash)
-
-2005-07-21 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_execute_API.c:
- - Fix error generation logic (found by johannes)
-
-2005-07-21 Dmitry Stogov <dmitry@zend.com>
-
- * zend_vm_def.h:
- Fixed bug with returning from internal function by reference
-
-2005-07-19 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_interfaces.c:
- - Dont't warn in case an exception is pending - in this case it'd
- superflous
-
-2005-07-19 Dmitry Stogov <dmitry@zend.com>
-
- * zend_compile.c
- zend_compile.c
- zend_execute.c
- zend_vm_execute.h
- zend_vm_opcodes.h:
- Fixed bug #33710 (ArrayAccess objects doen't initialize $this)
-
-2005-07-18 Rasmus Lerdorf <rasmus@lerdorf.com>
-
- * zend_language_scanner.l:
- Valgrind is unhappy that this is not initialized
-
-2005-07-18 Dmitry Stogov <dmitry@zend.com>
-
- * zend_API.c
- zend_API.h:
- Fixed bug in new module statrup mechanism
-
- * (PHP_5_0)
- zend_execute.c
- zend_vm_def.h
- zend_vm_execute.h
- zend_vm_opcodes.h
- tests/bug33558.phpt:
- Fixed bug #33558 (warning with nested calls to functions returning by
- reference)
-
- * tests/bug33558.phpt
- tests/bug33558.phpt:
-
- Fixed bug #33558 (warning with nested calls to functions returning by
- reference)
-
- * zend_vm_def.h
- zend_vm_execute.h
- zend_vm_gen.php
- zend_vm_opcodes.h:
- Removed some compilation warnings.
-
-2005-07-18 Jani Taskinen <jani.taskinen@sci.fi>
-
- * tests/bug33710.phpt:
- typo
-
-2005-07-17 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * tests/bug33710.phpt:
- - Add new test
-
-2005-07-17 Ilia Alshanetsky <ilia@prohost.org>
-
- * zend_compile.c:
- Added missing init.
-
-2005-07-14 Andi Gutmans <andi@zend.com>
-
- * zend.h:
- - Back to -dev
-
- * (php_5_1_0b3)
- zend.h:
- - Beta 3
-
-2005-07-12 Andi Gutmans <andi@zend.com>
-
- * zend.h:
- - Back to -dev
-
- * (php_5_1_0b3)
- zend.h:
- - Beta 3
-
-2005-07-12 Dmitry Stogov <dmitry@zend.com>
-
- * (php_5_1_0b3)
- zend_execute_API.c
- zend_execute_API.c:
- Fixed bug #33156 (cygwin version of setitimer doesn't accept ITIMER_PROF).
- (Nuno)
-
-2005-07-11 Ilia Alshanetsky <ilia@prohost.org>
-
- * zend_vm_def.h
- zend_vm_execute.h:
- Make references misuse emit E_NOTICE rather E_STRICT to be compatible with
- PHP 4.4.0
-
-2005-07-08 Jani Taskinen <jani.taskinen@sci.fi>
-
- * tests/unset_cv05.phpt
- tests/unset_cv06.phpt:
- fix test when session.save_handler is "user"
-
-2005-07-07 Dmitry Stogov <dmitry@zend.com>
-
- * zend.h
- zend_API.c
- zend_API.h
- zend_compile.c
- zend_compile.h
- zend_object_handlers.c
- zend_objects.c
- zend_reflection_api.c:
- Fixed bug #33512 (Add missing support for isset()/unset() overloading to
- complement the property get/set methods)
-
-2005-07-07 Anantha Kesari H Y <hyanantha@novell.com>
-
- * zend_stream.c
- zend_stream.c:
- zend_stream_getc uses fread internally. NetWare LibC fread reads 4(Which I
- believe EOT) for EOF(^D) character. This happens when fread is asked to
- read one and only character as is the case with cl interactive mode.
- -- Kamesh
-
-2005-07-07 Dmitry Stogov <dmitry@zend.com>
-
- * zend_execute_API.c
- zend_hash.c
- zend_hash.h
- tests/bug28072.phpt:
- Fixed bug #28072 (static array with some constant keys will be incorrectly
- ordered).
-
-2005-07-04 Dmitry Stogov <dmitry@zend.com>
-
- * zend_compile.h
- zend_execute.c
- zend_language_parser.y
- zend_vm_def.h
- zend_vm_execute.h
- zend_vm_opcodes.h:
- Fixed SIGSEGV on 'global ${"{$blah}_ID"};'
-
- * zend_API.h
- zend_execute_API.c:
- Fixed bug #31158 (array_splice on $GLOBALS crashes)
-
-2005-07-03 Dmitry Stogov <dmitry@zend.com>
-
- * zend_vm_def.h
- zend_vm_execute.h
- zend_vm_opcodes.h:
- Fixed memory leak
-
-2005-06-30 Dmitry Stogov <dmitry@zend.com>
-
- * zend_API.c
- zend_API.h:
- Restored old behavior of zend_statup_module()
-
-2005-06-29 Stanislav Malyshev <stas@zend.com>
-
- * zend_execute.c
- zend_vm_def.h
- zend_vm_execute.h:
- fix conditions for freeing
-
- * zend_API.c
- zend_API.c:
- add comment
-
- * (PHP_5_0)
- zend_execute.c:
- fix conditions
-
-2005-06-28 Antony Dovgal <antony@zend.com>
-
- * zend_execute.c:
- fix leak: when dup was <success>ful zend_std_object_get_class_name()
- returns SUCCESS aka 0
-
-2005-06-28 Stanislav Malyshev <stas@zend.com>
-
- * zend_execute.c
- zend_vm_def.h
- zend_vm_execute.h:
- fix previous patch
-
- * zend_vm_execute.h:
- update
-
- * zend_execute.c
- zend_vm_def.h:
- fixes for non-php objects
-
- * (PHP_5_0)
- zend_execute.c:
- fixes fo rnon-php objects (John Coggeshall)
-
-2005-06-27 Jani Taskinen <jani.taskinen@sci.fi>
-
- * zend.c:
- - Fixed bug #31358 (Older GCC versions do not provide portable va_copy()).
-
-2005-06-27 Stanislav Malyshev <stas@zend.com>
-
- * zend_API.c
- zend_API.c
- zend_API.h
- zend_API.h
- zend_builtin_functions.c
- zend_builtin_functions.c
- zend_exceptions.c
- zend_exceptions.c:
- fix various "Class entry requested for an object without PHP class"
- messages
- when working with non-PHP objects.
-
-2005-06-27 Dmitry Stogov <dmitry@zend.com>
-
- * (PHP_5_0)
- zend_execute.c
- zend_vm_def.h
- zend_vm_execute.h
- zend_vm_opcodes.h:
- Fixed SIGSEGV on assigment string offset by reference
-
- * zend_builtin_functions.c
- zend_builtin_functions.c:
- Fixed wrong include/requre occurrences in debug backtrace.
-
-2005-06-24 Dmitry Stogov <dmitry@zend.com>
-
- * zend_execute.h
- zend_vm_def.h
- zend_vm_execute.h
- zend_vm_gen.php
- zend_vm_opcodes.h:
- Export zend_do_fcall() helper from executor
-
- * zend_compile.c
- zend_compile.c:
- Partial fix for bug #26584 (Class member - array key overflow)
- It doesn't fix integer overflow problem, but allows null, boolean and
- double keys in array constants in the same way as in runtime.
-
- * tests/bug30519.phpt
- tests/bug30519.phpt:
-
- Fixed bug #30519 (Interface not existing says Class not found)
-
- * zend_compile.c
- zend_compile.c
- zend_compile.h
- zend_compile.h
- zend_execute.c
- zend_execute_API.c
- zend_execute_API.c
- zend_vm_def.h
- zend_vm_execute.h
- zend_vm_opcodes.h
- tests/bug30519.phpt:
- Fixed bug #30519 (Interface not existing says Class not found)
-
-2005-06-23 Dmitry Stogov <dmitry@zend.com>
-
- * zend_builtin_functions.c
- zend_builtin_functions.c
- tests/bug28377.phpt:
- Fixed bug #28377 (debug_backtrace is intermittently passing args)
-
- * tests/bug28377.phpt
- tests/bug28377.phpt:
-
- file bug28377.phpt was initially added on branch PHP_5_0.
-
- * (PHP_5_0)
- zend_execute.c
- zend_vm_def.h
- zend_vm_execute.h
- zend_vm_opcodes.h
- tests/bug32660.phpt:
- Fixed bug #32660 (Assignment by reference causes crash when field access is
- overloaded (__get))
-
- * tests/bug32660.phpt
- tests/bug32660.phpt:
-
- Fixed bug #32660 (Assignment by reference causes crash when field access
- is overloaded (__get))
-
- * zend_builtin_functions.c
- zend_builtin_functions.c
- tests/bug30828.phpt:
- Fixed bug #30828 (debug_backtrace() reports incorrect class in overridden
- methods)
-
- * tests/bug30828.phpt
- tests/bug30828.phpt:
-
- file bug30828.phpt was initially added on branch PHP_5_0.
-
- * (PHP_5_0)
- tests/bug27268.phpt:
- Test for bug #27268. It is fixed in HEAD but not in PHP_5_0.
-
- * zend_execute.c
- tests/bug27268.phpt
- tests/bug27268.phpt:
- Fixed bug #27268 (Bad references accentuated by clone).
-
-2005-06-23 Andi Gutmans <andi@zend.com>
-
- * zend.h:
- - Back to -dev
-
- * (php_5_1_0b2)
- zend.h:
- - Beta 2
-
-2005-06-22 Dmitry Stogov <dmitry@zend.com>
-
- * (php_5_1_0b2)
- zend_builtin_functions.c
- zend_builtin_functions.c
- zend_execute_API.c
- zend_execute_API.c
- tests/bug29896.phpt:
- Fixed bug #29896 (Backtrace argument list out of sync)
-
- * tests/bug29896.phpt
- tests/bug29896.phpt:
-
- file bug29896.phpt was initially added on branch PHP_5_0.
-
-2005-06-22 Stanislav Malyshev <stas@zend.com>
-
- * (php_5_1_0b2)
- zend_vm.h
- zend_vm_execute.h
- zend_vm_gen.php:
- export zend_vm_set_opcode_handler
-
-2005-06-22 Antony Dovgal <antony@zend.com>
-
- * (php_5_1_0b2)
- zend_ini.c:
- - allow to use "yes" and "true" with ini_set() and in commandline (through
- -d flag)
- - fix #15854 that was caused by wrong consideration that
- zend_ini_boolean_displayer_cb()
- always recieves converted to "0"/"1" values.
-
-2005-06-22 Dmitry Stogov <dmitry@zend.com>
-
- * (php_5_1_0b2)
- zend_compile.c
- zend_compile.c
- zend_compile.h
- zend_compile.h
- zend_execute.c
- zend_vm_def.h
- zend_vm_execute.h
- zend_vm_opcodes.h
- tests/bug33257.phpt:
- Fixed bug #33257 (array_splice() inconsistent when passed function instead
- of variable)
-
- * tests/bug33257.phpt
- tests/bug33257.phpt:
-
- file bug33257.phpt was initially added on branch PHP_5_0.
-
-2005-06-22 Jani Taskinen <jani.taskinen@sci.fi>
-
- * (php_5_1_0b2)
- tests/unset_cv05.phpt
- tests/unset_cv06.phpt:
- fix tests
-
-2005-06-21 Dmitry Stogov <dmitry@zend.com>
-
- * tests/unset_cv07.phpt:
- Fixed test file
-
-2005-06-21 Andi Gutmans <andi@zend.com>
-
- * zend.h:
- - Back to -dev. Guys (n' Girls), give at least 1 hour before you start
- - complaining about not going back to -dev. I like checking the tarball
- - before I change it back.
-
- * (php_5_1_0b2)
- zend.h:
- - Take #3 :)
-
-2005-06-21 Ilia Alshanetsky <ilia@prohost.org>
-
- * (php_5_1_0b2)
- zend_reflection_api.c:
- Fixed memory leak.
-
-
-2005-06-21 Dmitry Stogov <dmitry@zend.com>
-
- * (PHP_5_0)
- zend_compile.c:
- Remove unnecessary ZEND_FETCH_CLASS together with
- ZEND_DECLARE_INHERITED_CLASS
- in case of early binding
-
- * (php_5_1_0b2)
- zend_compile.c:
- Remove unnecessary ZEND_FETCH_CLASS together with
- ZEND_DECLARE_INHERITED_CLASS in case of early binding
-
-2005-06-20 Andi Gutmans <andi@zend.com>
-
- * zend.h:
- - Back to -dev
-
- * (php_5_1_0b2)
- zend.h:
- - Beta 2
-
-2005-06-20 Dmitry Stogov <dmitry@zend.com>
-
- * (php_5_1_0b2)
- zend_object_handlers.c
- zend_object_handlers.c:
- Fixed possible crash on $x = $obj->$non_string
-
-2005-06-20 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * (php_5_1_0b2)
- zend_reflection_api.c:
- - Fix bug #33389 by fixing copying
-
- * zend_reflection_api.c:
- - Show true/flase
-
-2005-06-19 Derick Rethans <php@derickrethans.nl>
-
- * tests/bug32226.phpt:
- - Fixed layout of test description.
-
-2005-06-17 Jani Taskinen <jani.taskinen@sci.fi>
-
- * tests/bug29368.phpt
- tests/bug30856.phpt
- tests/bug30961.phpt
- tests/bug31720.phpt
- tests/bug32226.phpt
- tests/bug33277.phpt:
- No short-tags!
-
-2005-06-17 Dmitry Stogov <dmitry@zend.com>
-
- * zend_compile.h
- zend_vm_def.h
- zend_vm_execute.h
- zend_vm_opcodes.h:
- Removed EX(fbc_constructor) (it is no longer needed)
-
-2005-06-17 Antony Dovgal <antony@zend.com>
-
- * (PHP_5_0)
- zend_API.c
- zend_list.c:
- MFH: improve error messages in internal classes
-
- * zend_API.c
- zend_list.c:
- improve error messages when error raised from an internal class (do not
- hide class name)
-
-2005-06-17 Dmitry Stogov <dmitry@zend.com>
-
- * zend_object_handlers.c
- zend_object_handlers.c:
- Fixed bug #33277 (private method accessed by child class)
-
-2005-06-17 Antony Dovgal <antony@zend.com>
-
- * zend_hash.c:
- fix bug #33382 (array_reverse() fails after *sort())
- no need to MFH - the bug existed only in HEAD
-
-2005-06-17 Dmitry Stogov <dmitry@zend.com>
-
- * zend_API.c
- zend_API.h
- zend_extensions.h
- zend_modules.h:
- Improved PHP extension loading mechanism with support for module
- dependencies and conflicts.
-
-2005-06-16 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_reflection_api.c:
- - Internal functions/methods can now return by reference
-
- * zend_execute.c:
- - Fix TSRM build
-
-2005-06-16 Dmitry Stogov <dmitry@zend.com>
-
- * bench.php:
- typo
-
- * zend.h
- zend_API.h
- zend_compile.c
- zend_compile.h
- zend_execute.c
- zend_execute_API.c
- zend_extensions.h
- zend_modules.h
- zend_object_handlers.c
- zend_vm_def.h
- zend_vm_execute.h
- zend_vm_opcodes.h:
- Allowed return by refrence from internal functions
-
-2005-06-16 Stanislav Malyshev <stas@zend.com>
-
- * zend_execute.c
- zend_execute.h:
- rename to zend_
-
-2005-06-16 Dmitry Stogov <dmitry@zend.com>
-
- * zend_vm_def.h
- zend_vm_execute.h
- zend_vm_opcodes.h
- tests/bug33318.phpt:
- Fixed bug #33318 (throw 1; results in Invalid opcode 108/1/8)
-
-2005-06-16 Zeev Suraski <zeev@zend.com>
-
- * zend_language_scanner.l:
- Fixlet
-
-2005-06-16 Dmitry Stogov <dmitry@zend.com>
-
- * zend_execute.c
- zend_vm_def.h
- zend_vm_execute.h
- zend_vm_opcodes.h:
- Compilation warnings
-
- * zend_compile.c
- zend_compile.h
- zend_vm_def.h
- zend_vm_execute.h
- zend_vm_opcodes.h:
- ZEND_UNSET_DIM_OBJ is splitted to ZEND_UNSET_DIM and ZEND_UNSET_OBJ.
-
-2005-06-16 Stanislav Malyshev <stas@zend.com>
-
- * zend_execute.c
- zend_execute.h:
- export zval getters
-
-2005-06-16 Dmitry Stogov <dmitry@zend.com>
-
- * zend_execute.h
- zend_vm_def.h
- zend_vm_execute.h
- zend_vm_gen.php
- zend_vm_opcodes.h:
- USER_OPCODE API is improvet.
- Implemented ability to dispatch from user handler to internal handler of
- another opcode.
-
-2005-06-15 Dmitry Stogov <dmitry@zend.com>
-
- * zend.c
- zend.h:
- Fixed OS X compatibility
-
-2005-06-15 Jani Taskinen <jani.taskinen@sci.fi>
-
- * tests/bug32428.phpt:
- typofix
-
-2005-06-14 Ilia Alshanetsky <ilia@prohost.org>
-
- * bench.php:
- more accurate timing function.
-
-2005-06-14 Dmitry Stogov <dmitry@zend.com>
-
- * zend_vm_execute.h
- zend_vm_gen.php
- zend_vm_opcodes.h:
- Removed old executor
-
-2005-06-14 Jani Taskinen <jani.taskinen@sci.fi>
-
- * Zend.m4:
- reordered + added msg to configure output for PHP_ZEND_VM
-
- * Zend.m4:
- typofix
-
- * Zend.m4
- acinclude.m4:
- fix standalone build
-
-2005-06-13 Dmitry Stogov <dmitry@zend.com>
-
- * zend_execute.c
- zend_vm_def.h
- zend_vm_execute.h
- zend_vm_gen.php
- zend_vm_opcodes.h:
- Specializer optimization
-
- * zend.c
- zend.h
- zend_execute.c:
- Fixed bug #33212 ([GCC 4]: 'zend_error_noreturn' aliased to external symbol
- 'zend_error').
- The fix is not tested on Solaris and DARWIN!
-
- * zend_reflection_api.c
- tests/bug33312.phpt:
- Fixed bug #33312 (ReflectionParameter methods do not work correctly)
-
-2005-06-11 Andi Gutmans <andi@zend.com>
-
- * zend.h:
- - Back to -dev
-
- * (php_5_1_0b2)
- zend.h:
- - b2 (will post it to internals@)
-
-2005-06-10 Andi Gutmans <andi@zend.com>
-
- * zend.h:
- - Back to -dev
-
- * (php_5_1_0b1)
- zend.h:
- - Go with 5.1.0b1
-
-2005-06-10 Dmitry Stogov <dmitry@zend.com>
-
- * (php_5_1_0b1)
- tests/bug30162.phpt:
- Added test for bug #30162 (it is already fixed but test file was forgotten)
-
- * (php_5_1_0b1)
- tests/bug31177.phpt:
- Added test file for bug #31177 (not fixed yet)
-
- * tests/bug31177.phpt
- tests/bug31177.phpt:
-
- file bug31177.phpt was initially added on branch PHP_5_0.
-
- * (php_5_1_0b1)
- tests/bug29689.phpt:
- typos
-
- * (php_5_1_0b1)
- zend_reflection_api.c
- zend_reflection_api.c:
- Fixed support for ZEND_ACC_SHADOW in ReflectionProperty constructor
-
- * (php_5_1_0b1)
- zend_execute.c
- zend_execute.h
- zend_extensions.h
- zend_vm_def.h
- zend_vm_execute.h
- zend_vm_gen.php
- zend_vm_opcodes.h:
- Fix so that extensions like xdebug, can overload opcodes in all execution
- modes including goto/switch
-
- * (php_5_1_0b1)
- zend_compile.c
- zend_vm_def.h
- zend_vm_execute.h
- zend_vm_opcodes.h:
- Merge three opcodes (ZEND_NEW, ZEND_JMP_NO_CTOR, ZEND_INIT_CTOR) into one
- (ZEND_NEW). There was no real reason for this anymore and API should be
- changed before 5.1
-
-2005-06-09 Stanislav Malyshev <stas@zend.com>
-
- * zend_compile.c
- zend_compile.h
- zend_object_handlers.c
- zend_reflection_api.c
- tests/bug29689.phpt:
- MF50: fix #29689 and more private property problems
-
- * tests/bug33277.phpt:
- add test for this TBF bug
-
- * zend_compile.c:
- disallow abstrace private methods
-
- * (PHP_5_0)
- zend_compile.c:
- Disallow abstract privae methods
-
- * (PHP_5_0)
- zend_compile.c
- zend_compile.h
- zend_object_handlers.c
- zend_reflection_api.c
- tests/bug29689.phpt:
- fix #29689 and more private property problems
-
-2005-06-09 Dmitry Stogov <dmitry@zend.com>
-
- * zend.c
- zend.c
- zend_execute_API.c
- zend_execute_API.c:
- Fixed double call to php_stream_close() on compiler errors
-
-2005-06-09 Stanislav Malyshev <stas@zend.com>
-
- * tests/bug33277.phpt
- tests/bug33277.phpt:
-
- file bug33277.phpt was initially added on branch PHP_5_0.
-
-2005-06-09 Dmitry Stogov <dmitry@zend.com>
-
- * zend.c
- zend.c:
- Fixed bug #25922 (In error handler, modifying 5th arg (errcontext) may
- result in seg fault)
-
- * zend_language_scanner.l
- zend_language_scanner.l:
- Fixed bug (Crash on Windows and ZTS) that was introduced with fix for bug
- #26456
-
-2005-06-08 Dmitry Stogov <dmitry@zend.com>
-
- * (PHP_5_0)
- zend_execute.c
- zend_vm_def.h
- zend_vm_execute.h
- zend_vm_opcodes.h:
- Fixed exception handling in getIterator() callback (bugs #26229 & #30725)
-
- * zend_compile.c
- zend_compile.c:
- Fixed valgrind errors
-
- * zend_reflection_api.c:
- Fixed ReflectionClass::setStaticPropertyValue()
-
-2005-06-08 Jani Taskinen <jani.taskinen@sci.fi>
-
- * zend_config.w32.h:
- Hopefully fixes win32 builds
-
-2005-06-08 Dmitry Stogov <dmitry@zend.com>
-
- * zend_compile.c:
- Fixed lookups for previos opcodes
-
- * zend_execute_API.c
- zend_execute_API.c
- tests/bug30140.phpt:
- Fixed bug #30140 (Problem with array in static properties)
-
- * tests/bug30140.phpt
- tests/bug30140.phpt:
-
- file bug30140.phpt was initially added on branch PHP_5_0.
-
- * (PHP_5_0)
- tests/bug32322.phpt:
- Added test for bug #32322 (Return values by reference broken( using
- self::),example singleton instance)
-
- * tests/bug32322.phpt
- tests/bug32322.phpt:
-
- Added test for bug #32322 (Return values by reference broken( using
- self::),example singleton instance)
-
- * zend_object_handlers.c
- zend_object_handlers.c
- tests/bug30820.phpt:
- Fixed bug #30820 (static member conflict with $this->member silently
- ignored)
-
- * tests/bug30820.phpt
- tests/bug30820.phpt:
-
- file bug30820.phpt was initially added on branch PHP_5_0.
-
- * zend_compile.c
- zend_compile.c
- zend_language_parser.y
- zend_language_parser.y
- tests/bug30961.phpt:
- Fixed bug #30961 (Wrong linenumber in ReflectionClass getStartLine())
-
- * tests/bug30961.phpt
- tests/bug30961.phpt:
-
- file bug30961.phpt was initially added on branch PHP_5_0.
-
-2005-06-07 Dmitry Stogov <dmitry@zend.com>
-
- * zend_compile.c
- zend_compile.c
- zend_compile.h
- zend_compile.h
- zend_language_scanner.l
- zend_language_scanner.l:
- Fixed bug #26456 (Wrong results from Reflection-API getDocComment() when
- called via STDIN)
-
-2005-06-07 Jani Taskinen <jani.taskinen@sci.fi>
-
- * Zend.m4:
- -Moved --disable-zend-memory-manager where it belongs
-
- * acinclude.m4:
- - Show "none" when nothing is found
-
-2005-06-07 Ilia Alshanetsky <ilia@prohost.org>
-
- * zend_objects.c:
- Fixed ZTS build.
-
-2005-06-07 Derick Rethans <php@derickrethans.nl>
-
- * (PHP_5_0)
- zend_alloc.h:
- - MFH: Added the --disable-zend-memory-manager switch to disable the Zend
- memory manager.
-
- * zend_alloc.h:
- - Added the --disable-zend-memory-manager switch to disable the Zend memory
- manager.
-
-2005-06-07 Dmitry Stogov <dmitry@zend.com>
-
- * zend_builtin_functions.c
- zend_builtin_functions.c:
- Fixed memory leak in debug_print_backtrace()
-
- * zend_execute.c
- zend_execute.c:
- fixed memory leak in bug #28972 ([] operator overflow treatment is
- incorrect), not the bug itself.
-
-2005-06-07 Derick Rethans <php@derickrethans.nl>
-
- * (PHP_5_0)
- zend_execute.c
- zend_vm_def.h
- zend_vm_execute.h
- zend_vm_opcodes.h:
- - MF44: Problems with user defined error handler and references
-
-2005-06-07 Dmitry Stogov <dmitry@zend.com>
-
- * zend_objects.c
- zend_objects.c
- tests/bug33243.phpt:
- Fixed bug #33243 (ze1_compatibility_mode does not work as expected)
-
- * tests/bug33243.phpt
- tests/bug33243.phpt:
-
- file bug33243.phpt was initially added on branch PHP_5_0.
-
-2005-06-07 Dmitry Stogov <dmitry@zend.com>
-
- * zend_compile.c
- zend_compile.c
- zend_compile.h
- zend_compile.h
- zend_language_scanner.l
- zend_language_scanner.l:
- Fixed bug #26456 (Wrong results from Reflection-API getDocComment() when
- called via STDIN)
-
-2005-06-07 Jani Taskinen <jani.taskinen@sci.fi>
-
- * Zend.m4:
- -Moved --disable-zend-memory-manager where it belongs
-
- * acinclude.m4:
- - Show "none" when nothing is found
-
-2005-06-07 Ilia Alshanetsky <ilia@prohost.org>
-
- * zend_objects.c:
- Fixed ZTS build.
-
-2005-06-07 Derick Rethans <php@derickrethans.nl>
-
- * (PHP_5_0)
- zend_alloc.h:
- - MFH: Added the --disable-zend-memory-manager switch to disable the Zend
- memory manager.
-
- * zend_alloc.h:
- - Added the --disable-zend-memory-manager switch to disable the Zend memory
- manager.
-
-2005-06-07 Dmitry Stogov <dmitry@zend.com>
-
- * zend_builtin_functions.c
- zend_builtin_functions.c:
- Fixed memory leak in debug_print_backtrace()
-
- * zend_execute.c
- zend_execute.c:
- fixed memory leak in bug #28972 ([] operator overflow treatment is
- incorrect), not the bug itself.
-
-2005-06-07 Derick Rethans <php@derickrethans.nl>
-
- * (PHP_5_0)
- zend_execute.c
- zend_vm_def.h
- zend_vm_execute.h
- zend_vm_opcodes.h:
- - MF44: Problems with user defined error handler and references
-
-2005-06-07 Dmitry Stogov <dmitry@zend.com>
-
- * zend_objects.c
- zend_objects.c
- tests/bug33243.phpt:
- Fixed bug #33243 (ze1_compatibility_mode does not work as expected)
-
- * tests/bug33243.phpt
- tests/bug33243.phpt:
-
- file bug33243.phpt was initially added on branch PHP_5_0.
-
-2005-06-06 Derick Rethans <php@derickrethans.nl>
-
- * zend_vm_def.h
- zend_vm_execute.h
- zend_vm_opcodes.h:
- - Regenerate VM files and add warning about regeneration
-
- * (PHP_5_0)
- zend_execute.c
- zend_vm_def.h:
- - MH44: Problems with user defined error handler and wrong usage of
- references
-
-2005-06-06 Dmitry Stogov <dmitry@zend.com>
-
- * zend_compile.c
- tests/bug32428.phpt:
- Fixed bug #32428 (The @ warning error supression operator is broken)
-
- * zend_objects_API.c
- zend_objects_API.c
- tests/bug32799.phpt:
- Fixed bug #32799 (crash: calling the corresponding global var during the
- destruct)
-
- * tests/bug32799.phpt
- tests/bug32799.phpt:
-
- file bug32799.phpt was initially added on branch PHP_5_0.
-
- * tests/bug32596.phpt:
- Added test for bug #32596 (Segfault/Memory Leak by getClass (etc) in
- __destruct)
-
- * tests/bug32596.phpt
- tests/bug32596.phpt:
-
- file bug32596.phpt was initially added on branch PHP_5_0.
-
- * (PHP_5_0)
- zend_execute_API.c:
- Fixed bug #32596 (Segfault/Memory Leak by getClass (etc) in __destruct)
-
- * (PHP_5_0)
- tests/bug32993.phpt:
- Added test for bug #32993 (implemented Iterator function current() don't
- throw
- exception)
-
- * tests/bug32993.phpt
- tests/bug32993.phpt:
-
- Fixed bug #32993 (implemented Iterator function current() don't throw
- exception)
-
- * zend_vm_def.h
- zend_vm_execute.h
- zend_vm_opcodes.h:
- Fixed bug #32993 (implemented Iterator function current() don't throw
- exception)
-
- * zend_object_handlers.c
- zend_object_handlers.c
- tests/bug33171.phpt:
- Fixed bug #33171 (foreach enumerates private fields declared in base
- classes)
-
- * tests/bug33171.phpt
- tests/bug33171.phpt:
-
- file bug33171.phpt was initially added on branch PHP_5_0.
-
-2005-06-06 Wez Furlong <wez.php@thebrainroom.net>
-
- * zend_language_scanner.l:
- Avoid double-freeing streams.
- This can happen because all streams are registered as resources;
- the engine also tracks them in the open_files global.
-
- Avoid the potential for double-freeing by simply making streams exposed to
- the
- engine have no closer for the engine to call; they will already be in the
- resource list, and thus will be shut down properly at request end.
-
-2005-06-04 Zeev Suraski <zeev@zend.com>
-
- * zend_compile.h
- zend_language_parser.y
- zend_language_scanner.l
- zend_stream.c
- zend_stream.h
- tests/halt01.phpt
- tests/halt02.phpt
- tests/halt03.phpt:
- Thought I committed it ages ago... Anyway, without further delays, the
- final
- __halt_compiler() patch
-
-2005-06-03 Dmitry Stogov <dmitry@zend.com>
-
- * tests/bug30394.phpt:
- Added test for 5.0 specific bug #30394 (Assignment operators yield wrong
- result with __get/__set)
-
- * (PHP_5_0)
- zend.c
- zend_execute_API.c
- tests/bug30394.phpt
- tests/bug30394.phpt:
- Fixed bug #30394 (Assignment operators yield wrong result with __get/__set)
-
- * zend_compile.c
- zend_compile.c
- tests/bug30080.phpt:
- Fixed bug #30080 (Passing array or non array of objects)
-
- * tests/bug30080.phpt
- tests/bug30080.phpt:
-
- file bug30080.phpt was initially added on branch PHP_5_0.
-
- * zend_compile.c
- zend_compile.c
- zend_execute.c
- tests/bug27598.phpt:
- Fixed bug #27598 (list() array key assignment causes HUGE memory leak)
-
- * tests/bug27598.phpt
- tests/bug27598.phpt:
-
- file bug27598.phpt was initially added on branch PHP_5_0.
-
- * zend_execute.c
- zend_object_handlers.c
- zend_vm_def.h
- zend_vm_execute.h
- zend_vm_opcodes.h
- tests/object_handlers.phpt:
- Fixed memory allocation bugs related to magic object handlers (__get(),
- __set(),
- ...)
-
- * tests/object_handlers.phpt
- tests/object_handlers.phpt:
-
- file object_handlers.phpt was initially added on branch PHP_5_0.
-
- * (PHP_5_0)
- zend_execute.c
- zend_object_handlers.c:
- Fixed memory allocation bugs related to magic object handlers (__get(),
- __set(), ...)
-
-2005-06-01 Dmitry Stogov <dmitry@zend.com>
-
- * zend_object_handlers.c
- zend_object_handlers.c
- tests/bug30791.phpt:
- Fixed bug #30791 (magic methods (__sleep/__wakeup/__toString) call __call
- if object is overloaded)
-
- * tests/bug30791.phpt
- tests/bug30791.phpt:
-
- file bug30791.phpt was initially added on branch PHP_5_0.
-
-2005-05-31 Magnus Mtt <novell@kiruna.se>
-
- * tests/bug27304.phpt:
- Fix test
-
-2005-05-31 Dmitry Stogov <dmitry@zend.com>
-
- * zend_operators.c:
- Reverted wrong fix for bug #30572.
- Seems the bug was already fixed in other way.
- But reverted patch produced a lot of valgrind errors, because IS_TMP_VAR
- operands don't initialize refcount.
-
-2005-05-31 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_compile.c:
- - Only allow changing return ref agnostic when a script method overrides an
- internal method (found by dmitry)
-
-2005-05-29 Jani Taskinen <jani.taskinen@sci.fi>
-
- * Zend.m4:
- - Unify the "configure --help" texts
-
-2005-05-29 Hartmut Holzgraefe <hartmut@php-groupies.de>
-
- * acinclude.m4:
- forgot to re-add 1.875 as a valid bison version after testing
-
- * acinclude.m4:
- bison may be installed under a different executable name, e.g.
-
- YACC="bison-1.75" configure ...
-
- removing the check for "bison -y" allows for this
- the check was redundant anyway as the following one filters
- for "GNU Bison" in the --version output
-
- * Zend.m4
- acinclude.m4:
- avoid code duplication in bison version test
-
-2005-05-28 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_compile.c
- zend_compile.h:
- - Make zend_do_inheritance ZEND_API
-
-2005-05-27 Dmitry Stogov <dmitry@zend.com>
-
- * (PHP_5_0)
- zend_execute.c
- zend_vm_def.h
- zend_vm_execute.h
- zend_vm_opcodes.h
- tests/bug22836.phpt
- tests/bug22836.phpt:
- Fixed bug #22836 (returning reference to uninitialized variable)
-
-2005-05-26 Dmitry Stogov <dmitry@zend.com>
-
- * (PHP_5_0)
- zend_execute_API.c
- tests/bug33116.phpt:
- Fixed bug #33116 (crash when assigning class name to global variable in
- __autoload)
-
- * tests/bug33116.phpt
- tests/bug33116.phpt:
-
- Fixed bug #33116 (crash when assigning class name to global variable in
- __autoload).
-
- * zend_execute_API.c:
- Fixed bug #33116 (crash when assigning class name to global variable in
- __autoload).
-
- * zend_API.h
- zend_compile.c
- zend_compile.h
- zend_execute.c
- zend_language_parser.y
- zend_reflection_api.c
- tests/array_type_hint_001.phpt:
- Added array type hinting. (This patch requires full re-make)
-
-2005-05-26 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * (PHP_5_0)
- tests/bug27304.phpt
- tests/bug32981.phpt:
- - Add new tests
-
- * tests/bug27304.phpt
- tests/bug27304.phpt
- tests/bug32981.phpt
- tests/bug32981.phpt:
-
- - Add new tests
-
-2005-05-22 Ilia Alshanetsky <ilia@prohost.org>
-
- * (PHP_5_0)
- zend_highlight.c:
- MFH: Fixed bug #29338 (unencoded spaces get ignored after certain tags).
-
- * zend_highlight.c:
- Fixed bug #29338 (unencoded spaces get ignored after certain tags).
-
-2005-05-22 Stanislav Malyshev <stas@zend.com>
-
- * zend.c
- zend.c:
- fix leak
-
-2005-05-19 Dmitry Stogov <dmitry@zend.com>
-
- * (PHP_5_0)
- zend_object_handlers.c:
- Backported fix for bug #30451
-
- * tests/bug31828.phpt
- tests/bug31828.phpt
- tests/bug32080.phpt
- tests/bug32080.phpt:
- Strict warnings
-
-2005-05-18 Stanislav Malyshev <stas@zend.com>
-
- * zend.c
- zend.c:
- fix for #29890 - part 2
-
- * (PHP_5_0)
- tests/bug29890.phpt:
- test
-
- * tests/bug29890.phpt
- tests/bug29890.phpt:
-
- test
-
- * zend_execute_API.c
- zend_execute_API.c:
- fix #29890 - crash when function call fails
-
- * zend_object_handlers.c:
- revert - seems to be fixed elsewhere
-
- * zend_object_handlers.c:
- fix #30451 static properties don't work properly
-
- * tests/bug29689.phpt
- tests/bug30451.phpt:
- tests
-
- * tests/bug29689.phpt
- tests/bug29689.phpt
- tests/bug30451.phpt
- tests/bug30451.phpt:
-
- file bug29689.phpt was initially added on branch PHP_5_0.
-
-2005-05-17 Magnus Mtt <novell@kiruna.se>
-
- * tests/bug31828.phpt
- tests/bug32080.phpt:
- Fix tests.
-
-2005-05-13 Antony Dovgal <tony2001@phpclub.net>
-
- * (PHP_5_0)
- zend.c:
- MFH: fix bug #29975 (memory leaks when set_error_handler() is used inside
- error handler)
-
- * zend.c:
- fix bug #29975 (memory leaks when set_error_handler() is used inside error
- handler)
-
-2005-05-12 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_reflection_api.c:
- - Make ReflectionObject::hasProperty() recognize dynamically added props
-
-2005-05-06 Jani Taskinen <jani.taskinen@sci.fi>
-
- * zend_object_handlers.h:
- typofix :)
-
-2005-05-05 Dmitry Stogov <dmitry@zend.com>
-
- * zend_compile.c
- zend_compile.c
- zend_execute.c
- zend_vm_def.h
- zend_vm_execute.h
- zend_vm_opcodes.h
- tests/bug31525.phpt:
- Fixed bug #31525 (object reference being dropped. $this getting lost)
-
- * tests/bug31525.phpt
- tests/bug31525.phpt:
-
- file bug31525.phpt was initially added on branch PHP_5_0.
-
-2005-05-04 Stanislav Malyshev <stas@zend.com>
-
- * zend.c:
- fix bug #32924: prepend does not add file to included files
-
- * (PHP_5_0)
- zend_execute.c:
- clarify some magic
-
-2005-05-04 Dmitry Stogov <dmitry@zend.com>
-
- * zend_execute.c:
- Fixed bug #30641 (Compile error: error: symbol "zend_error" is used but not
- defined)
-
- * tests/bug30707.phpt
- tests/bug30707.phpt:
-
- file bug30707.phpt was initially added on branch PHP_5_0.
-
- * (PHP_5_0)
- zend_execute.c
- zend_vm_def.h
- zend_vm_execute.h
- zend_vm_opcodes.h
- tests/bug30707.phpt:
- Fixed bug #30707 (Segmentation fault on exception in method)
-
- * (PHP_5_0)
- zend_execute.c:
- ws
-
- * tests/bug30162.phpt
- tests/bug30162.phpt:
-
- file bug30162.phpt was initially added on branch PHP_5_0.
-
- * (PHP_5_0)
- zend_execute.c
- zend_vm_def.h
- zend_vm_execute.h
- zend_vm_opcodes.h
- tests/bug30161.phpt:
- Fixed bug #30162 (Catching exception in constructor couses lose of $this)
-
-2005-05-03 Dmitry Stogov <dmitry@zend.com>
-
- * tests/unset_cv07.phpt:
- Fixed notice message
-
-2005-05-03 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * (PHP_5_0)
- tests/bug32252.phpt:
- - Add test
-
-2005-05-03 Dmitry Stogov <dmitry@zend.com>
-
- * zend_object_handlers.c:
- Fixed destruction of zval after returning from __call()
-
- * zend_builtin_functions.c
- zend_builtin_functions.c
- tests/bug32296.phpt:
- Fixed bug #32296 (get_class_methods output has changed between 5.0.2 and
- 5.0.3)
- Now get_class_methods() shows accessible private and protected methods if
- it is called from class scope.
-
- * tests/bug32296.phpt
- tests/bug32296.phpt:
-
- file bug32296.phpt was initially added on branch PHP_5_0.
-
-2005-05-02 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_builtin_functions.c
- zend_object_handlers.c
- zend_object_handlers.h:
- - Extend API to support real existance test without the need to add any new
- functions or change any behavior
-
- * zend_execute_API.c:
- - Part 2 of #30126: Enhancement for error message for abstract classes
-
- * zend_execute_API.c:
- - Part 1 of #30126: Enhancement for error message for abstract classes
-
-2005-04-29 Jani Taskinen <jani.taskinen@sci.fi>
-
- * zend_object_handlers.c:
- compile fix
-
- * tests/bug30332.phpt
- tests/bug32852.phpt:
- Make sure E_STRICT is set always
-
-2005-04-29 Dmitry Stogov <dmitry@zend.com>
-
- * zend_API.c
- zend_API.c
- tests/bug30332.phpt:
- Fixed bug #30332 (zend.ze1_compatibility_mode isnt fully compatable with
- array_push())
-
- * tests/bug30332.phpt
- tests/bug30332.phpt:
-
- file bug30332.phpt was initially added on branch PHP_5_0.
-
- * zend_execute.c
- zend_execute.c
- tests/bug31828.phpt
- tests/bug32080.phpt
- tests/bug32852.phpt:
- Fixed bug #32852 (Crash with singleton and __destruct when
- zend.ze1_compatibility_mode = On)
- Fixed bug #31828 (Crash with zend.ze1_compatibility_mode=On)
- Fixed bug #32080 (segfault when assigning object to itself with
- zend.ze1_compatibility_mode=On)
-
- * tests/bug31828.phpt
- tests/bug31828.phpt
- tests/bug32080.phpt
- tests/bug32080.phpt
- tests/bug32852.phpt
- tests/bug32852.phpt:
-
- file bug31828.phpt was initially added on branch PHP_5_0.
-
-2005-04-29 Jani Taskinen <jani.taskinen@sci.fi>
-
- * tests/bug22836.phpt
- tests/bug27641.phpt:
- - Unify error_reporting setting + make sure E_STRICT is set when wanted
-
-2005-04-28 Dmitry Stogov <dmitry@zend.com>
-
- * zend_object_handlers.c
- zend_object_handlers.c
- tests/bug29015.phpt:
- Fixed bug #29015 (Incorrect behavior of member vars(non string
- ones)-numeric mem vars und others)
-
- * tests/bug29015.phpt
- tests/bug29015.phpt:
-
- file bug29015.phpt was initially added on branch PHP_5_0.
-
-2005-04-27 Dmitry Stogov <dmitry@zend.com>
-
- * zend_API.c
- zend_API.h
- zend_object_handlers.c
- zend_object_handlers.h
- tests/bug29210.phpt:
- Fixed bug #29210 (Function: is_callable - no support for private and
- protected classes)
-
- * (PHP_5_0)
- zend_API.c
- zend_API.h
- zend_object_handlers.c
- zend_object_handlers.h
- tests/bug29210.phpt
- tests/bug29210.phpt:
- Fixed bug #29210 (Function: is_callable - no support for private and
- protected classes).
-
- * zend_compile.c
- zend_compile.c
- tests/bug29104.phpt
- tests/bug29104.phpt
- tests/bug29104.phpt:
- Fixed bug #29104 (Function declaration in method doesn't work)
-
- * zend_vm_def.h
- zend_vm_execute.h
- zend_vm_opcodes.h
- tests/bug32833.phpt:
- Fixed bug #32833 (Invalid opcode)
-
- * tests/bug32674.phpt
- tests/bug32674.phpt:
-
- file bug32674.phpt was initially added on branch PHP_5_0.
-
- * (PHP_5_0)
- zend_execute.c
- zend_vm_def.h
- zend_vm_execute.h
- zend_vm_opcodes.h
- tests/bug32674.phpt:
- Fixed bug #32674 (exception in iterator causes crash)
-
-2005-04-26 Dmitry Stogov <dmitry@zend.com>
-
- * tests/bug30889.phpt
- tests/bug30889.phpt:
-
- file bug30889.phpt was initially added on branch PHP_5_0.
-
- * (PHP_5_0)
- zend_execute.c
- zend_vm_def.h
- zend_vm_execute.h
- zend_vm_opcodes.h
- tests/bug30889.phpt:
- Fixed bug #30889 (Conflict between __get/__set and ++ operator)
-
- * tests/bug32429.phpt:
- fix
-
- * zend_API.c
- zend_API.c
- tests/bug30702.phpt:
- Fixed bug #30702 (cannot initialize class variable from class constant)
-
- * tests/bug30702.phpt
- tests/bug30702.phpt:
-
- file bug30702.phpt was initially added on branch PHP_5_0.
-
- * zend_compile.c
- tests/bug32427.phpt:
- Fixed bug #32427 (Interfaces are not allowed 'static' access modifier).
-
- * zend_builtin_functions.c
- tests/bug32429.phpt:
- Fixed bug #32429 (method_exists() always return TRUE if __call method
- exists)
-
-2005-04-25 Andrei Zmievski <andrei@gravitonic.com>
-
- * zend_object_handlers.c:
- Reverting. Let's not introduce major BC breakage like this without a
- good reason.
-
-2005-04-25 Dmitry Stogov <dmitry@zend.com>
-
- * tests/bug29944.phpt
- tests/bug29944.phpt:
-
- Fixed bug #29944 (Function defined in switch, crashes).
-
- * zend_compile.c
- zend_compile.c
- tests/bug29944.phpt:
- Fixed bug #29944 (Function defined in switch, crashes).
-
-2005-04-25 Jani Taskinen <jani.taskinen@sci.fi>
-
- * zend_hash.c:
- ws
-
-2005-04-25 Dmitry Stogov <dmitry@zend.com>
-
- * zend_hash.c:
- Fixed call to estrndup() with invalid length
-
- * (PHP_5_0)
- zend_hash.c:
- Fixed call to estrndup() with invalid lengt
-
-2005-04-25 Sebastian Bergmann <sb@sebastian-bergmann.de>
-
- * zend_reflection_api.c:
- Correct grammar.
-
-2005-04-24 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_compile.c:
- - Need to copy doc comments correct for properties
-
-2005-04-23 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * tests/bug29674.phpt
- tests/bug30161.phpt
- tests/bug30346.phpt:
- - Add new tests
-
-2005-04-21 Jani Taskinen <jani.taskinen@sci.fi>
-
- * tests/unset_cv05.phpt:
- Fix test when register_long_arrays is off in your php.ini
-
-2005-04-19 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_API.c
- zend_API.h
- zend_compile.c
- zend_compile.h
- zend_reflection_api.c:
- - Add ReflectionProperty::getDocComment()
-
-2005-04-19 Jani Taskinen <jani.taskinen@sci.fi>
-
- * zend_compile.c
- zend_exceptions.c:
- No c++ comments in C code
-
-2005-04-18 Dmitry Stogov <dmitry@zend.com>
-
- * zend_builtin_functions.c
- zend_builtin_functions.c
- zend_execute.c:
- Fixed memory leak in debug_backtrace()
-
-2005-04-17 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_builtin_functions.c:
- - Fix special cases of property_exists()
-
- * zend_object_handlers.c:
- - Fix logic
-
-2005-04-16 Sara Golemon <php@alphaweb.net>
-
- * tests/method_exists.phpt:
- method_exists() regression test
-
- * zend_builtin_functions.c:
- Fix method_exists(), pce is fetched, but ce is used
-
-2005-04-15 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_builtin_functions.c:
- - Fix even though we already know that the function will be renamed
-
-2005-04-15 Andrei Zmievski <andrei@gravitonic.com>
-
- * zend_execute.c
- zend_vm_def.h
- zend_vm_execute.h
- zend_vm_opcodes.h:
- Fix certain operations to stop relying on presence of read_property and
- write_property handlers. They may be NULL'ed out by certain objects
- pretending to be pure arrays, for example. Do checks first.
-
-2005-04-12 Stanislav Malyshev <stas@zend.com>
-
- * zend_ini.c:
- fix memory corruption if one on the on_modify handlers errors out
-
- * (PHP_5_0)
- zend_ini.c:
- fi memory corruption if one on the on_modify handlers errors out
-
-2005-04-08 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_operators.c:
- - Fix memory corruption found by rob
-
- * tests/bug22836.phpt:
- - Ensure we see all errors. No need for () in return
-
- * zend_builtin_functions.c:
- - Add property_exits()
-
- * zend_object_handlers.c:
- - No E_ERROR when we just check (where did my 0->1 change go on first
- commit?)
-
- * zend_object_handlers.c:
- - No E_ERROR when we just check, here visibility simply means there is none
-
- * zend_object_handlers.c
- zend_object_handlers.h:
- - Simplify getting property info and make it an api function
-
-2005-04-07 Jani Taskinen <jani.taskinen@sci.fi>
-
- * zend_alloc.c
- zend_alloc.h:
- - Nuke the code duplication
-
- * zend_alloc.h:
- Fix build when USE_ZEND_ALLOC is 0
-
-2005-04-07 Zeev Suraski <zeev@zend.com>
-
- * (PHP_5_0)
- zend_alloc.c
- zend_alloc.h:
- MFH (Fix strdup() bug when USE_ZEND_ALLOC was disabled)
-
- * zend_alloc.c
- zend_alloc.h:
- Fix strdup() bug when USE_ZEND_ALLOC is disabled
-
-2005-04-05 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_interfaces.c:
- - Just return FAILURE & allow NULL without emmidiate error
-
-2005-04-04 Stanislav Malyshev <stas@zend.com>
-
- * zend_builtin_functions.c:
- MF50: fix backtraces - non-Zend classes have names too
-
- * (PHP_5_0)
- zend_builtin_functions.c:
- fix backtraces - non-Zend classes have names too
-
-2005-04-03 Jani Taskinen <jani.taskinen@sci.fi>
-
- * (PHP_5_0)
- zend_execute_API.c:
- MFH: - Fixed bug #28839 (SIGSEGV in interactive mode (php -a)).
- MFH: (kameshj at fastmail dot fm)
-
-2005-03-31 Derick Rethans <php@derickrethans.nl>
-
- * (PHP_5_0)
- zend_API.c:
- - MFH: internal_function->fn_flags is not initialized at this point
-
-2005-03-26 Jani Taskinen <jani.taskinen@sci.fi>
-
- * zend_execute_API.c:
- - Fixed bug #28839 (SIGSEGV in interactive mode (php -a))
- (kameshj at fastmail dot fm)
-
-2005-03-24 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_vm_execute.h:
- - Second part of removing temp solution
-
- * zend_vm_def.h:
- - Remove potential bad solution for now
-
-2005-03-23 Andrei Zmievski <andrei@gravitonic.com>
-
- * zend_execute.c:
- Consolidate: call _get_zval_ptr_var() for IS_VAR case in
- _get_zval_ptr().
-
-2005-03-21 Andi Gutmans <andi@zend.com>
-
- * (PHP_5_0)
- zend_execute.c:
- - Fix memset() bug (Joe Orton)
-
-2005-03-21 Andrei Zmievski <andrei@gravitonic.com>
-
- * zend_API.c:
- internal_function->fn_flags is not initialized at this point
-
-2005-03-20 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * tests/bug31102.phpt:
- - Added missing description (thanks jani)
-
- * tests/bug31102.phpt:
- - Add new test
-
-2005-03-19 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_object_handlers.c:
- - More fixes to gracefully act on exception thrown in overload methods
-
- * zend_object_handlers.c:
- - Fix #31185
-
- * zend_execute_API.c:
- - Fix all incarnations of bug #30266
-
-2005-03-19 Andi Gutmans <andi@zend.com>
-
- * zend_interfaces.c
- zend_interfaces.h:
- - Fix typos
-
-2005-03-16 Wez Furlong <wez.php@thebrainroom.net>
-
- * (PHP_5_0)
- zend_API.c:
- MFH: don't call rshutdown twice for dl()'d modules.
-
- * zend_API.c:
- don't call rshutdown twice for dl()'d modules.
- Spotted by Andrei.
-
-2005-03-15 Wez Furlong <wez.php@thebrainroom.net>
-
- * zend.c
- zend_API.c
- zend_modules.h:
- fix shutdown so that dl()'d modules are unloaded after all the dtors have
- been called.
-
-2005-03-14 Zeev Suraski <zeev@zend.com>
-
- * zend_ini.c:
- Clarify logic
-
-2005-03-14 Stanislav Malyshev <stas@zend.com>
-
- * zend_builtin_functions.c
- zend_builtin_functions.c:
- ws
-
-2005-03-13 Stanislav Malyshev <stas@zend.com>
-
- * zend_stream.c
- zend_stream.c:
- Do not convert ZEND_HANDLE_FP to ZEND_HANDLE_STREAM but allow using
- reader/closer
- on it
-
-2005-03-13 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_interfaces.c:
- - More exact signatures (even though complete correct not possible atm)
-
-2005-03-13 Stanislav Malyshev <stas@zend.com>
-
- * zend_builtin_functions.c
- zend_builtin_functions.c:
- Fix get_extension_funcs() - extension names are now lowercased, so should
- be function arguments.
-
-2005-03-13 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_execute_API.c:
- - Actually this is a much better error decription
-
- * zend_execute_API.c
- tests/bug32290.phpt
- tests/bug32290.phpt:
- - Bugfix #32290
-
-2005-03-12 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_vm_def.h
- zend_vm_execute.h:
- - If an exception is pending we don't bail out but show the unhandled
- exception
-
-2005-03-11 Anantha Kesari H Y <hyanantha@novell.com>
-
- * (PHP_5_0)
- acconfig.h:
- NetWare LibC's sys/types.h does not include sys/select.h implicitly as it
- is the case with Linux LibC
-
-2005-03-11 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * tests/bug32252.phpt:
- - Add new test
-
- * tests/bug27145.phpt
- tests/bug27145.phpt:
- - Irrelevant
-
- * zend_object_handlers.c:
- - Don't touch refcount/is_ref
-
-2005-03-10 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * tests/bug28442.phpt
- tests/bug28442.phpt:
-
- - Bugfix #28442
-
- * zend_compile.c:
- - Bugfix #28442
-
-2005-03-10 Anantha Kesari H Y <hyanantha@novell.com>
-
- * (PHP_5_0)
- acconfig.h:
- Autoconf based build can be used for NetWare
-
- * (PHP_5_0)
- zend.h:
- NetWare can make use of ./configure generated zend_config.h
-
- * (PHP_5_0)
- Zend.m4:
- This patch is needed for cross compilation to go through
-
-2005-03-10 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_vm_execute.h:
- - #31562 2nd part
-
- * zend_vm_def.h:
- - Fix #31562
-
-2005-03-07 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend.h
- zend_compile.c
- zend_interfaces.c
- zend_interfaces.h:
- - New Interface Serializeable
- - Change signature of unserialize() callback to ease inheritance and
- support code reuse of handlers
-
- * tests/bug32226.phpt
- tests/bug32226.phpt:
-
- - Add updated description
-
- * zend_builtin_functions.c
- tests/bug32226.phpt:
- - Fix #32226
-
-2005-03-07 Zeev Suraski <zeev@zend.com>
-
- * zend_language_scanner.l
- zend_language_scanner.l:
- Revert // </script> patch
-
-2005-03-06 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_reflection_api.c:
- - Fix by Tim
-
-2005-03-06 Jani Taskinen <jani.taskinen@kolumbus.fi>
-
- * zend_compile.c
- zend_compile.c:
- Fixed compile warning (bug #32046)
-
- * zend_mm.c:
- Fix compile warning (bug #32047)
-
-2005-03-01 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_interfaces.c:
- - Support statuc methods/functions
-
-2005-03-01 Jani Taskinen <jani.taskinen@kolumbus.fi>
-
- * (PHP_5_0)
- zend_language_scanner.l:
- MFH: - Fixed bug #31672 (</script> not considered closing tag if
- MFH: preceded by one-line comment)
-
- * zend_language_scanner.l:
- Fix the fix for one line comments with <script..> </script> tags
-
-2005-02-28 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_builtin_functions.c:
- - Add support for methods dynamically added through object handlers
-
-2005-02-27 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_object_handlers.c:
- - If silence if wanted we do not error out
-
- * zend_reflection_api.c:
- - Add two new methods
- - Fix signature, no need to cast it
-
- * zend_API.h:
- - These must be initailized
-
- * zend_builtin_functions.c:
- - Update method_exists to new handlers and allow first parameter as string
-
-2005-02-27 Jani Taskinen <jani.taskinen@kolumbus.fi>
-
- * Zend.m4:
- - Cache the version check results
-
-2005-02-24 Andi Gutmans <andi@zend.com>
-
- * zend_language_scanner.l:
- - Make one line comments work the same with <script ...> </script> as with
- - other tags. This will break scripts that have whitespace at the end
- - of the closing tag </script > but this is barely used as it is
- - and I doubt ppl used whitespace. (patch by Jani)
-
- * zend_objects_API.h:
- - This part of the patch was right
-
-2005-02-24 Dmitry Stogov <dmitry@zend.com>
-
- * (PHP_5_0)
- zend_execute.c
- zend_vm_def.h
- zend_vm_execute.h
- zend_vm_opcodes.h:
- Fixed bug in ZEND_POST_INC/ZEND_POST_DEC handlers.
- These opcodes assume IS_TMP_VAR as result.
-
-2005-02-24 Andi Gutmans <andi@zend.com>
-
- * zend_modules.h:
- - Need zend_Compile.h for struct _zend_arg_info definiton (thanks to Joe
- Orton)
-
- * zend_objects.c
- zend_objects.h
- zend_objects_API.h:
- - Revert following patch until we decide what is the right way to handle
- - this:
- - Fix signatures they are all meant to be able to deal with any type in
- any
- object storage (though we are still missing several parts)
-
-2005-02-23 Derick Rethans <php@derickrethans.nl>
-
- * (PHP_5_0)
- zend_reflection_api.c:
- - MFH: fixed bug #32076 (ReflectionMethod :: isDestructor() always return
- true).
-
- * zend_reflection_api.c:
- - Fixed bug #32076 (ReflectionMethod :: isDestructor() always return true)
- (Patch by Antony Dogval)
-
-2005-02-23 Stanislav Malyshev <stas@zend.com>
-
- * zend.h
- zend_compile.c:
- Custom object serializer infrastructure
-
-2005-02-23 Jani Taskinen <jani.taskinen@kolumbus.fi>
-
- * Zend.m4:
- Hack the planet
-
-2005-02-23 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_interfaces.c:
- - Allow to convert Traversable into Aggregate
-
-2005-02-22 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_objects_API.c:
- - We cannot provide this fallback becuase it requires zend_object ptr's.
-
-2005-02-22 Jani Taskinen <jani.taskinen@kolumbus.fi>
-
- * Zend.m4:
- Fix cross-compile
-
- * acconfig.h:
- Fix build (it was #ifNdef NETWARE..)
-
-2005-02-22 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_objects.c
- zend_objects.h
- zend_objects_API.h:
- - Fix signatures they are all meant to be able to deal with any type in any
- object storage (though we are still missing several parts)
-
- * zend_objects_API.c:
- - Force calling of dtors unless otherwise specified (fixes several
- __destruct bugs)
-
-2005-02-22 Anantha Kesari H Y <hyanantha@novell.com>
-
- * zend.h:
- NetWare can include autoconf generated config headers
-
- * acconfig.h:
- NetWare can make use of the configure script generated header file.
-
-2005-02-21 Moriyoshi Koizumi <moriyoshi@at.wakwak.com>
-
- * Makefile.am:
- - Add missing entry.
-
-2005-02-20 Dmitry Stogov <dmitry@zend.com>
-
- * zend_compile.c:
- Fixed possible memory corruption
-
-2005-02-19 Rui Hirokawa <rui_hirokawa@ybb.ne.jp>
-
- * (PHP_5_0)
- zend_language_scanner.l:
- MFH: fixed #31987 zend-multibyte in ZTS.
-
- * zend_language_scanner.l:
- fixed #31987 zend-multibyte in ZTS.
-
-2005-02-17 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_API.c:
- - A little optimization to prevent problems when trying to reimplement an
- interface inherited from an interfaces that was just implemented......
-
- * zend_API.c:
- - No C++ ruleZ here
-
- * zend_API.c:
- - Actually we must do this in two steps: 1st resize the table and set all
- interfaces, 2nd implement the interfaces
-
- * zend_API.c:
- - Incrementation is done elsewhere
-
- * zend_API.c:
- - Fix windows build (funny MS compiler)
-
-2005-02-17 Jani Taskinen <jani.taskinen@kolumbus.fi>
-
- * (PHP_5_0)
- Zend.m4
- zend_strtod.c:
- MFH: - Compile fix for systems without int32_t typedef
-
- * Zend.m4
- zend_strtod.c:
- - Compile fix for systems without int32_t typedef
-
-2005-02-13 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_execute_API.c
- zend_reflection_api.c:
- - Be more gracious in reflection API
-
- * zend_language_scanner.l:
- - Fix doc comment handling
-
-2005-02-12 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_execute_API.c:
- - Bugfix #30682 (autoconversion from false/true to 0/1 missing in case of
- static property default value)
-
-2005-02-11 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_compile.c
- zend_compile.h
- zend_language_parser.y:
- - Cleanup foreach handling
-
-2005-02-10 Jani Taskinen <jani.taskinen@kolumbus.fi>
-
- * zend_strtod.c
- zend_strtod.c:
- - Fixed bug #31920 (zend_strtod.c error: conflicting types for 'int8_t')
-
-2005-02-10 Dmitry Stogov <dmitry@zend.com>
-
- * zend_vm_def.h
- zend_vm_execute.h
- zend_vm_opcodes.h
- tests/bug30407.phpt:
- Fixed bug #30407 (Strange behaviour of default arguments)
-
-2005-02-07 Dmitry Stogov <dmitry@zend.com>
-
- * zend_compile.c:
- Fixed bug introduced with foreach() optimization patch
-
- * zend_compile.c:
- Fixed FE_RESET/FE_FETCH bug.
- Now FE_RESET instruction takes jump-address from itself, not from the
- following FE_FETCH instruction.
-
- * zend_compile.c
- zend_compile.h
- zend_language_parser.y
- zend_vm_def.h
- zend_vm_execute.h
- zend_vm_opcodes.h:
- foreash($a as $key => $val) optimization
- Removed temorary array creation on each iteration.
-
-2005-02-07 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_compile.c
- zend_compile.h
- zend_language_parser.y:
- - Remove part of the cleanup which causes a problem with unnormal code
- like tests/lang/040.phpt
-
-2005-02-06 Zeev Suraski <zeev@zend.com>
-
- * (PHP_5_0)
- zend_ini_scanner.l:
- Correct fix for #28803
-
- * zend_ini_scanner.l:
- Correct fix for #28804
-
-2005-02-05 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_compile.c
- zend_compile.h
- zend_language_parser.y
- zend_vm_def.h
- zend_vm_execute.h
- zend_vm_opcodes.h:
- - Cleanup foreach statement
-
-2005-02-04 Hartmut Holzgraefe <hartmut@php-groupies.de>
-
- * zend_API.c
- zend_API.h:
- added some missing zend_[declare|update]_property_...() convenience
- functions for bool, double and binary safe string data
-
-2005-02-03 Jani Taskinen <jani.taskinen@kolumbus.fi>
-
- * (PHP_5_0)
- zend_ini_scanner.l:
- MFH: Fixed bug #28804 (ini-file section parsing pattern is buggy).
-
- * zend_ini_scanner.l:
- - Fixed bug #28804 (ini-file section parsing pattern is buggy).
-
- * zend_ini_scanner.l
- zend_ini_scanner.l:
- ws fix
-
-2005-02-02 Stanislav Malyshev <stas@zend.com>
-
- * zend_execute_API.c:
- Fix #31720 Invalid object callbacks not caught in array_walk() (patch
- from Antony Dovgal)
-
- * tests/bug31720.phpt:
- test for Bug #31720
-
- * tests/bug31720.phpt
- tests/bug31720.phpt:
-
- file bug31720.phpt was initially added on branch PHP_5_0.
-
- * (PHP_5_0)
- zend_execute_API.c:
- Fix #31720 Invalid object callbacks not caught in array_walk() (patch
- from Antony Dovgal)
-
-2005-02-02 Dmitry Stogov <dmitry@zend.com>
-
- * zend.h
- zend.h
- zend_object_handlers.c
- zend_object_handlers.c
- tests/bug31683.phpt:
- Fixed bugs #29767 and #31683 (__get and __set methods must not modify
- property name).
-
- * tests/bug31683.phpt
- tests/bug31683.phpt:
-
- file bug31683.phpt was initially added on branch PHP_5_0.
-
-2005-02-01 Stanislav Malyshev <stas@zend.com>
-
- * zend_builtin_functions.c
- zend_builtin_functions.c:
- Fix debug_trace with eval (patch from Antony Dovgal)
-
- * tests/bug_debug_backtrace.phpt:
- test for eval debug_backtrace bug
-
- * tests/bug_debug_backtrace.phpt
- tests/bug_debug_backtrace.phpt:
-
- file bug_debug_backtrace.phpt was initially added on branch PHP_5_0.
-
-2005-01-31 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_reflection_api.c:
- - Add ReclectionClass:hasProperty(), ReflectionClass::hasConstant()
- to complete api (johannes@php.net)
-
-2005-01-28 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_execute_API.c:
- - Fix severity (found by johannes)
-
-2005-01-25 Jani Taskinen <jani.taskinen@kolumbus.fi>
-
- * zend.h:
- New versions of glibc support a RTLD_DEEPBIND flag to dlopen. The
- effect of this flag when loading a "foo.so" with undefined symbols is
- that the search that symbol starts at foo.so and its dependencies
- *before* the loading process' global symbol table.
-
- This is an effective workaround for symbol namespace collisions between
- various modules and the libraries on which they depend (where fixing the
- respective modules or libraries is not possible e.g. due to API
- constraints).
-
- (By: Joe Orton)
-
-2005-01-25 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * (PHP_5_0)
- zend_execute.c
- zend_interfaces.c
- tests/bug26229.phpt:
- - MFH #26229 (getIterator() segfaults when it returns arrays or scalars)
-
- * zend_interfaces.c
- zend_vm_def.h
- zend_vm_execute.h
- tests/bug26229.phpt:
- - Bugfix #26229 (getIterator() segfaults when it returns arrays or scalars)
-
- * Makefile.frag:
- - Fix dependency
-
- * zend_vm_def.h
- zend_vm_execute.h:
- - Use correct freeing (thx Dmitry)
-
-2005-01-24 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_vm_def.h
- zend_vm_execute.h
- tests/bug30725.phpt:
- - Second and last part of #30725 fix
-
- * zend_interfaces.c:
- - Allow getIterator() to fail
-
- * tests/bug30725.phpt:
-
- - Add new test
-
-2005-01-22 Jani Taskinen <jani.taskinen@kolumbus.fi>
-
- * (PHP_5_0)
- Zend.m4
- configure.in
- zend_strtod.c:
- MFH: Compile fix for systems without uint32_t typedef
-
- * Zend.m4
- configure.in
- zend_strtod.c:
- - Compile fix for systems without uint32_t typedef
-
-2005-01-22 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_API.c
- zend_API.h
- zend_reflection_api.c:
- - Fix #31651 (ReflectionClass::getDefaultProperties segfaults with arrays.)
-
-2005-01-22 Andi Gutmans <andi@zend.com>
-
- * zend_compile.c
- zend_compile.h
- zend_execute.c
- zend_execute.h:
- - Two new API calls for Derick (retreive CV name and value) by Dmitry
-
-2005-01-20 Jani Taskinen <jani.taskinen@kolumbus.fi>
-
- * zend.h
- zend_constants.c:
- - Revert the weird change of ZEND_STRS() macro and use the correct
- ZEND_STRL() macro.
-
-2005-01-19 Jani Taskinen <jani.taskinen@kolumbus.fi>
-
- * zend_object_handlers.c:
- - Fixed bug #29183 (Undefined symbol zend_check_private with Solaris CC)
-
-2005-01-19 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_ini_parser.y:
- - Fix memleak
-
-2005-01-18 Dmitry Stogov <dmitry@zend.com>
-
- * zend_compile.c:
- Fixed patch for bug #31478 (SegFault/Memory Leak with empty())
-
- * zend_execute.c:
- Fixed bug #28444 (Cannot access undefined property for object with
- overloaded property access).
-
- * (PHP_5_0)
- zend_execute.c:
- Fixed bug #28444 (Cannot access undefined property for object with
- overloaded property access). (Dmitry)
-
-2005-01-18 Ilia Alshanetsky <ilia@prohost.org>
-
- * (PHP_5_0)
- zend_operators.h:
- MFH: Fixed bug #30726 (-.1 like numbers are not being handled correctly).
-
- * zend_operators.h:
- Fixed bug #30726 (-.1 like numbers are not being handled correctly).
-
-2005-01-17 Jani Taskinen <jani.taskinen@kolumbus.fi>
-
- * (PHP_5_0)
- zend_language_scanner.l:
- MFH: - Fixed bug #31444 (Memory leak in zend_language_scanner.c)
-
- * zend_language_scanner.l:
- - Fixed bug #31444 (Memory leak in zend_language_scanner.c)
-
-2005-01-15 Andi Gutmans <andi@zend.com>
-
- * (PHP_5_0)
- zend_API.c:
- - Fix WS
-
- * (PHP_5_0)
- zend_API.c:
- - Change to using DL_UNLOAD macro.
-
- * zend_API.c:
- - Unload on MAC OS X (shouldn't be a reason not to)
-
-2005-01-14 Dmitry Stogov <dmitry@zend.com>
-
- * zend_execute.c
- zend_vm_def.h
- zend_vm_execute.h
- zend_vm_opcodes.h
- tests/bug31098.phpt:
- Restore behavior of $str["str"]. (Now $str["str"] is equivalent to $str[0]
- again)
-
- * (PHP_5_0)
- tests/bug31098.phpt:
- Path -> pattern
-
- * (PHP_5_0)
- zend_execute.c
- tests/bug31098.phpt:
- Revert to old behavior of $str["str"]. ($str["str"] is equivalent of
- $str[0])
-
-2005-01-13 Dmitry Stogov <dmitry@zend.com>
-
- * zend_execute.c
- zend_execute.c:
- Additional fix for fix of bug #29883
-
-2005-01-12 Dmitry Stogov <dmitry@zend.com>
-
- * zend_execute.c
- zend_execute.c
- zend_vm_def.h
- zend_vm_execute.h
- zend_vm_opcodes.h
- tests/bug31098.phpt
- tests/bug31098.phpt:
- Fixed bug #31098 (isset false positive)
-
-2005-01-11 Moriyoshi Koizumi <moriyoshi@at.wakwak.com>
-
- * (PHP_5_0)
- zend_execute.c
- tests/bug31098.phpt:
- - MFH: fix for bug #31098.
-
- * tests/bug31098.phpt
- tests/bug31436.phpt:
-
- - Test renaming
-
- * zend_vm_execute.h
- tests/bug31436.phpt:
- - Fix bug #31436 (isset() incorrectly returns true in dereference of a
- wrong type)
-
- * zend_compile.c:
- - Fix bug #31478 (segfault with empty())
-
-2005-01-10 Rasmus Lerdorf <rasmus@lerdorf.com>
-
- * zend.h
- zend_API.c:
- Fix OSX DL_UNLOAD macro and actually use it to make shared extensions
- work on OSX.
-
-2005-01-10 Jani Taskinen <jani.taskinen@kolumbus.fi>
-
- * header
- zend_arg_defs.c
- zend_strtod.c
- zend_vm_def.h
- zend_vm_execute.h
- zend_vm_gen.php
- zend_vm_opcodes.h:
- - Added missing header sections.
-
- * acinclude.m4
- configure.in:
- - Added AC_ZEND_C_BIGENDIAN macro (as requested by Andi)
-
-2005-01-09 Jani Taskinen <jani.taskinen@kolumbus.fi>
-
- * (PHP_5_0)
- zend.h:
- MFH: - Fix outside-source-tree builds. Always include generated header
- files
- with #include <some_header.h> to make sure the correct file is
- used.
-
- * zend.h:
- - Fix outside-source-tree builds. Always include generated header files
- with #include <some_header.h> to make sure the correct file is used.
-
- * zend.c:
- MFB: - Rationalize code a bit
-
-2005-01-03 Stanislav Malyshev <stas@zend.com>
-
- * (PHP_5_0)
- zend_language_scanner.l:
- MFH:
- Fix the following nasty bug:
- - if compile bails out from the middle of compiling, current_buffer is not
- restored
- - if current_buffer is not null, yy_switch_to_buffer will do: *yy_c_buf_p
- = yy_hold_char; on
- the next request
- - which would lead to memory corruption on next request
-
- * zend_language_scanner.l:
- Fix the following nasty bug:
- - if compile bails out from the middle of compiling, current_buffer is not
- restored
- - if current_buffer is not null, yy_switch_to_buffer will do: *yy_c_buf_p
- = yy_hold_char; on
- the next request
- - which would lead to memory corruption on next request
-
-2005-01-02 Ilia Alshanetsky <ilia@prohost.org>
-
- * (PHP_5_0)
- zend_highlight.c:
- MFH: Fixed bug #31371 (highlight_file() trims new line after heredoc).
-
- * zend_highlight.c:
- Fixed bug #31371 (highlight_file() trims new line after heredoc).
-
-2004-12-30 Jani Taskinen <jani.taskinen@kolumbus.fi>
-
- * (PHP_5_0)
- zend_compile.c
- zend_highlight.c
- zend_indent.c
- zend_ini_scanner.l
- zend_language_scanner.l:
- MFH: - Fixed bug #28930 (PHP sources pick wrong header files generated by
- bison).
-
- * zend_compile.c
- zend_highlight.c
- zend_indent.c
- zend_ini_scanner.l
- zend_language_scanner.l:
- - Fixed bug #28930 (PHP sources pick wrong header files generated by bison)
-
- * Zend.m4
- acinclude.m4:
- MFB_4_3: Quote macro names in AC_DEFUN()
-
-2004-12-27 Zeev Suraski <zeev@zend.com>
-
- * zend_builtin_functions.c:
- MFB
-
- * (PHP_5_0)
- zend_builtin_functions.c:
- Fix desc
-
-2004-12-27 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * (PHP_5_0)
- zend_reflection_api.c:
- - MFH: Need to unmangle the class name here
-
- * zend_reflection_api.c:
- - Need to unmangle the class name here
-
-2004-12-27 Zeev Suraski <zeev@zend.com>
-
- * (PHP_5_0)
- zend_exceptions.c:
- Add descriptions
-
-2004-12-27 Dmitry Stogov <dmitry@zend.com>
-
- * zend_execute.c
- zend_execute.c
- zend_vm_def.h
- zend_vm_execute.h
- tests/bug22836.phpt
- tests/bug22836.phpt
- tests/unset_cv01.phpt
- tests/unset_cv02.phpt
- tests/unset_cv03.phpt
- tests/unset_cv04.phpt
- tests/unset_cv06.phpt
- tests/unset_cv08.phpt
- tests/unset_cv09.phpt
- tests/unset_cv10.phpt:
- "Undefined variable: %s" noticies were fixed to use one space
-
-2004-12-27 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_reflection_api.c:
- - More proto/error message fixes
-
- * zend_reflection_api.c:
- - Small fixlet (by Tony)
-
-2004-12-24 Dmitry Stogov <dmitry@zend.com>
-
- * zend_vm_def.h
- zend_vm_execute.h:
- New sarbage collector's bug was fixed (the behavior should be the same as
- in PHP_5_0)
-
- * zend_execute.c
- tests/unset_cv01.phpt
- tests/unset_cv02.phpt
- tests/unset_cv03.phpt
- tests/unset_cv04.phpt
- tests/unset_cv06.phpt
- tests/unset_cv08.phpt
- tests/unset_cv09.phpt
- tests/unset_cv10.phpt:
- "Undefined variable: %s" noticies were fixed to be compatible with PHP_5_0
-
-2004-12-21 Jani Taskinen <jani.taskinen@kolumbus.fi>
-
- * (PHP_5_0)
- zend_strtod.c:
- MFH: - Use correct header files (in c99 compliant way). uint32_t is
- preferred.
-
- * zend_strtod.c:
- - Use correct header files (in c99 compliant way). uint32_t is preferred.
-
-2004-12-20 Jani Taskinen <jani.taskinen@kolumbus.fi>
-
- * zend_strtod.c:
- Better fix for endian compile problems.
-
-2004-12-17 Andi Gutmans <andi@zend.com>
-
- * zend_object_handlers.c:
- - Fixed Bug #30562 Segmentation fault with __call()
-
-2004-12-17 Derick Rethans <php@derickrethans.nl>
-
- * zend_strtod.c
- zend_strtod.c:
- - MF43: Fixed strtod for Irix and some other strange platform
-
-2004-12-16 Derick Rethans <php@derickrethans.nl>
-
- * zend_strtod.c
- zend_strtod.c:
- - MF43: Make it compile on HPUX on Itanium 2
-
- * zend_strtod.c
- zend_strtod.c:
- - MF43: Fixed bug #31107 (strtod on solaris9/intel)
-
-2004-12-16 Jani Taskinen <jani.taskinen@kolumbus.fi>
-
- * (PHP_5_0)
- ChangeLog:
- - MFH: Fix typo (avaliable -> available). (bug #28725)
-
- * ChangeLog:
- - Fix typo (avaliable -> available). (bug #28725)
-
-2004-12-16 Derick Rethans <php@derickrethans.nl>
-
- * zend_strtod.c:
- - MF43: Fixed bug #31110 and #31111 (Zend/zend_strtod.c problems)
-
- * (PHP_5_0)
- zend_strtod.c:
- - Fixed bug #31110 and #31111 (Zend/zend_strtod.c problems)
-
-2004-12-15 Andi Gutmans <andi@zend.com>
-
- * (PHP_5_0)
- zend.h:
- - 5.0.4-dev
-
- * (PHP_5_0)
- zend.h:
- - Redo 5.0.3
-
- * (PHP_5_0)
- zend.h:
- - Back to -dev
-
- * (PHP_5_0)
- zend.h:
- - Roll PHP 5.0.3
-
-2004-12-14 Derick Rethans <php@derickrethans.nl>
-
- * zend_strtod.c
- zend_strtod.c:
- - MFH: Fixed compile error related to bug #28605.
-
-2004-12-13 Derick Rethans <php@derickrethans.nl>
-
- * zend_operators.c:
- - Added "G" modifier to ini setting number format.
-
-2004-12-10 Andi Gutmans <andi@zend.com>
-
- * (PHP_5_0)
- zend.h:
- - Back to -dev
-
- * (PHP_5_0)
- zend.h:
- - 5.0.3RC2
-
-2004-12-07 Dmitry Stogov <dmitry@zend.com>
-
- * zend_exceptions.c
- zend_exceptions.c:
- Fixed bug #30904 (segfault when recording soapclient into session).
-
-2004-12-06 Stanislav Malyshev <stas@zend.com>
-
- * tests/bug30998.phpt:
- add test
-
- * zend.c
- zend.c:
- port fix for #30998: Crash when user error handler returns false on amd64
-
-2004-12-06 Dmitry Stogov <dmitry@zend.com>
-
- * zend_compile.c
- zend_compile.c
- tests/bug30922.phpt:
- Fixed bug #30922 (reflective functions crash PHP when interfaces extend
- themselves)
-
- * tests/bug30922.phpt
- tests/bug30922.phpt:
-
- file bug30922.phpt was initially added on branch PHP_5_0.
-
-2004-12-06 Stanislav Malyshev <stas@zend.com>
-
- * (PHP_5_0)
- zend_builtin_functions.c:
- if fetch called not from PHP function, ptr can be NULL
-
-2004-12-01 Ilia Alshanetsky <ilia@prohost.org>
-
- * zend_strtod.c:
- MFB: Removed extra space that causes problems for some compilers.
-
- * (PHP_5_0)
- zend_strtod.c:
- Removed extra space that causes problems for some compilers.
-
-2004-12-01 Derick Rethans <php@derickrethans.nl>
-
- * (PHP_5_0)
- zend_strtod.c:
- - revert unwanted change
-
- * zend_strtod.c
- zend_strtod.c:
- - Fixed MacOSX compilation (Patch by Christian)
-
- * (PHP_5_0)
- zend.h:
- - And in Zend/ too.
-
-2004-12-01 Dmitry Stogov <dmitry@zend.com>
-
- * (PHP_5_0)
- zend_execute.c
- zend_vm_def.h
- zend_vm_execute.h
- tests/bug29883.phpt
- tests/bug29883.phpt
- tests/bug29883.phpt:
- Fixed bug #29883 (isset gives invalid values on strings).
-
-2004-11-30 Andi Gutmans <andi@zend.com>
-
- * (PHP_5_0)
- zend.h:
- - Go with 5.0.3RC1
-
-2004-11-29 Derick Rethans <php@derickrethans.nl>
-
- * (PHP_5_0)
- zend_operators.c:
- - MF43: Revert Joe's work around a bug in GCC patch as it breaks too many
- things.
-
- * zend_operators.c:
- - MFH: Revert Joe's work around a bug in GCC patch as it breaks too many
- things.
-
-2004-11-25 Zeev Suraski <zeev@zend.com>
-
- * (PHP_5_0)
- zend_execute.c
- zend_execute_API.c
- zend_extensions.h
- zend_object_handlers.c
- zend_object_handlers.h:
- Reverting get_method() signature change
-
-2004-11-24 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_reflection_api.c:
- - Fix Bug #30856 (ReflectionClass::getStaticProperties segfaults)
-
- * tests/bug30856.phpt:
-
- - Add new test
-
-2004-11-17 Stanislav Malyshev <stas@zend.com>
-
- * (PHP_5_0)
- zend_execute_API.c:
- fix #30543
-
- * zend_execute_API.c:
- fix crash
-
-2004-11-16 Derick Rethans <php@derickrethans.nl>
-
- * zend_strtod.c
- zend_strtod.c:
- - Make this compile for the Mac again
-
-2004-11-15 Derick Rethans <php@derickrethans.nl>
-
- * (PHP_5_0)
- zend_strtod.c:
- - MFH: Fixed bug #30779 (Compile of Zend/zend_strtod.c fails on Sparc)
-
- * zend_strtod.c:
- - Fixed bug #30779 (Compile of Zend/zend_strtod.c fails on Sparc)
-
-2004-11-14 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * (PHP_5_0)
- zend_reflection_api.c:
- MFH #30783 Apache crash when using ReflectionFunction::getStaticVariables()
- MFH proto fixes
-
- * zend_reflection_api.c:
- - Bugix #30783: Apache crash when using
- ReflectionFunction::getStaticVariables()
-
-2004-11-09 Andrei Zmievski <andreiz@gravitonic.com>
-
- * zend_ini_parser.y:
- Revert inadvertent commit.
-
- * zend_ini_parser.y:
- .dylib extension are Mach-O shared libraries that meant for linking
- against. Loadable modules (aka bundles) can have any extension, so we
- should probably stick with .so
-
- http://fink.sourceforge.net/doc/porting/shared.php?phpLang=en#lib-and-mod
-
-2004-11-05 Derick Rethans <php@derickrethans.nl>
-
- * (PHP_5_0)
- zend_execute_API.c:
- - Fix for bug #30367, #30490 and possibly #30011.
-
-2004-11-04 Edin Kadribasic <edink@emini.dk>
-
- * Zend.dsp
- ZendTS.dsp:
- Added zend_strtod.* to the build
-
- * zend_strtod.c
- zend_strtod.h:
- Make zend_strtod compile on windows
-
-2004-11-04 Moriyoshi Koizumi <moriyoshi@at.wakwak.com>
-
- * (PHP_5_0)
- Makefile.am:
- - MFH: Add entry for zend_strtod.c in belief that this is still active.
-
- * Makefile.am:
- - Add entry for zend_strtod.c in belief that this is still active.
-
-2004-11-03 Moriyoshi Koizumi <moriyoshi@at.wakwak.com>
-
- * Zend.m4:
- - Don't show grep outputs
-
-2004-11-03 Derick Rethans <php@derickrethans.nl>
-
- * (PHP_5_0)
- zend_execute_API.c
- zend_globals.h
- zend_ini.c
- zend_language_scanner.l
- zend_operators.c
- zend_operators.h
- zend_strtod.c
- zend_strtod.h:
- - MFH: Fixed bug #30630: Added a BSD based strtod function that is
- locale-independent.
-
- * zend_execute_API.c
- zend_globals.h
- zend_ini.c
- zend_language_scanner.l
- zend_operators.c
- zend_operators.h
- zend_strtod.c
- zend_strtod.h:
- - Fixed bug #30630: Added a BSD based strtod function that is
- locale-independent.
-
-2004-11-03 Moriyoshi Koizumi <moriyoshi@at.wakwak.com>
-
- * Zend.m4
- zend.h
- zend_execute.c:
- - Checks for Darwin'ish systems that uses Mach-O, which apparently doesn't
- support weak symbol aliasing at this time.
-
-2004-11-03 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_reflection_api.c:
- - Trying to invoke function not methot here
-
- * zend_reflection_api.c:
- - Fix invokeargs() with static methods
-
-2004-11-03 Dmitry Stogov <dmitry@zend.com>
-
- * zend_vm_def.h
- zend_vm_execute.h:
- Fixed "isset() and the new VM" bug.
-
-2004-11-02 Sebastian Bergmann <sb@sebastian-bergmann.de>
-
- * (PHP_5_0)
- zend_API.c:
- MFH: Patch by Joe Orton <jorton@redhat.com>.
-
- * zend_API.c:
- Patch by Joe Orton <jorton@redhat.com>.
-
-2004-10-31 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_reflection_api.c:
- - Add ReflectionFunction::invokeArgs(array)
- - Add ReflectionMethod::invokeArgs(obj, array)
-
-2004-10-31 Sebastian Bergmann <sb@sebastian-bergmann.de>
-
- * zend_reflection_api.c:
- Invokation -> Invocation
-
-2004-10-30 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend.h:
- Bump version (as discussed with Andi)
-
- * (PHP_5_0)
- zend_execute.c:
- - Fix (readd function name which got lost during earlier comit)
-
- * zend_reflection_api.c:
- - Be consistent and use names as keys (found by johannes)
-
- * zend_extensions.h
- zend_modules.h:
- - Bump API version
-
- * (PHP_5_0)
- zend_extensions.h
- zend_modules.h:
- Bump api after latest changes
-
- * (PHP_5_0)
- zend_execute.c
- zend_object_handlers.c
- zend_object_handlers.h:
- MFH change zend_object_handlers->get_method()
-
- * zend_execute_API.c
- zend_object_handlers.c
- zend_object_handlers.h
- zend_vm_def.h
- zend_vm_execute.h:
- - Change zend_object_handlers->get_method() to allow aggregation for
- internal classes
-
- * Makefile.frag:
- - New architecture needs one more dependency
-
- * zend_exceptions.c
- zend_reflection_api.c:
- - Fix protos
-
-2004-10-29 Andi Gutmans <andi@zend.com>
-
- * zend_operators.c:
- - For Ilia:
- - MFH: Fixed bug #30572 (crash when comparing SimpleXML attribute to a
- boolean).
- - Hope this works well. I will MFH tomorrow if no one complains.
-
-2004-10-28 Dmitry Stogov <dmitry@zend.com>
-
- * README.ZEND_VM
- zend_vm_gen.php:
- --without-lines changed to --with-lines
-
-2004-10-28 Andi Gutmans <andi@zend.com>
-
- * zend_vm_execute.skl
- zend_vm_gen.php:
- - Fix typo
-
-2004-10-27 Andi Gutmans <andi@zend.com>
-
- * zend_vm_opcodes.h:
- - Oops missed this one
-
- * zend_operators.c:
- - Revert Fixed bug #30228 (crash when comparing SimpleXML attribute to a
- boolean).
- - Need to discuss where the real problem is.
-
- * README.ZEND_VM:
- - Tiny fixes
-
- * README.ZEND_VM
- zend_compile.h
- zend_vm_execute.h
- zend_vm_gen.php:
- - Improve comments, docs, code...
-
-2004-10-26 Andi Gutmans <andi@zend.com>
-
- * zend_builtin_functions.c:
- - Patch from Andrey Hristov:
- I have cooked a small patch which allows is_subclass_of() the accept
- not only an object as first parameter but a string as well. When string
- is passed the function checks whether the class specified is subclass of
- the second parameter
- class a{}
- class b{} extends a{}
- is_subclass_of("a", "a") //false
- is_subclass_of("b", "a") //true
- currently only objects are allowed as first parameter
-
-2004-10-26 Ilia Alshanetsky <ilia@prohost.org>
-
- * (PHP_5_0)
- zend_operators.c:
- MFH: Fixed bug #30572 (crash when comparing SimpleXML attribute to a
- boolean).
-
- * zend_operators.c:
- Fixed bug #30228 (crash when comparing SimpleXML attribute to a boolean).
-
-2004-10-23 Andi Gutmans <andi@zend.com>
-
- * zend_vm_execute.h:
- - Add missing file
-
-2004-10-22 Andi Gutmans <andi@zend.com>
-
- * zend_vm_handlers.h
- zend_vm_spec.h:
- - Nuke another two files
-
- * Makefile.frag
- zend_execute.c
- zend_vm.h
- zend_vm_def.h
- zend_vm_execute.skl
- zend_vm_gen.php:
- - Commit new VM
- - Old one is tagged as PRE_NEW_VM_GEN_PATCH
- - Still doing work so more commits to come. Don't complain (yet) :)
-
- * (PRE_NEW_VM_GEN_PATCH)
- zend_execute.c:
- - Fix crash (MFB PHP5_0)
-
-2004-10-21 Andi Gutmans <andi@zend.com>
-
- * (PHP_5_0)
- zend_execute.c:
- - Fix bug #30395 (Apache Child Segmentation fault in specific PHP-Code)
-
-2004-10-20 Andi Gutmans <andi@zend.com>
-
- * zend_operators.c:
- - If object handles are equal then save the comparison of properties in
- - the == operator.
-
-2004-10-18 Anantha Kesari H Y <hyanantha@novell.com>
-
- * zend_modules.h:
- including zend_compile.h for NetWare as NetWare uses MetroWerks Code
- warrior compiler which does not allow declarations of following kind
- before defining the types.
- extern struct _zend_arg_info first_arg_force_ref[2];
-
-2004-10-16 Andi Gutmans <andi@zend.com>
-
- * zend_compile.c:
- - One more test (WS)
-
- * zend_compile.c:
- - WS fix to test commit
-
-2004-10-16 Anantha Kesari H Y <hyanantha@novell.com>
-
- * zend_compile.c
- zend_compile.c:
- Fix for 30457
-
-2004-10-14 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_builtin_functions.c:
- - Allow to omit object/classname in get_parent_class() which makes it
- compatible with the signature and behavior of get_class()
-
-2004-10-13 Andi Gutmans <andi@zend.com>
-
- * zend_compile.c:
- - Don't allow access modifiers in interfaces. Explicitly stating public
- - should also be disallowed but we don't have a way to detect it today.
-
-2004-10-12 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_builtin_functions.c:
- Bug #30381 Strange results with get_class_vars()
-
- * (PHP_5_0)
- zend_builtin_functions.c:
- MFH Fix visibility of get_class_vars() and get_class_methods()
-
- * zend_builtin_functions.c:
- - Fix visibility in get_class_vars() and get_class_methods()
-
- * zend_builtin_functions.c:
- - Fix set_exception_handler
-
-2004-10-10 Sebastian Bergmann <sb@sebastian-bergmann.de>
-
- * .cvsignore
- tests/.cvsignore:
- Add *.gcda and *.gcno (from gcc -fprofile-{use|generate}) to .cvsignore.
-
-2004-10-08 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_compile.c
- zend_compile.h
- zend_vm_handlers.h:
- - Revert automatic pass arg_info
-
-2004-10-08 Andi Gutmans <andi@zend.com>
-
- * zend_compile.c:
- - Fix BC break with default in switch() having to be at the end.
-
-2004-10-08 Anantha Kesari H Y <hyanantha@novell.com>
-
- * acconfig.h
- zend_config.nw.h:
- explicitly including sys/select.h as NetWare LibC sys/types.h does not
- include sys/select.h implicitly as other LibC
-
-2004-10-06 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_reflection_api.c:
- - Fix Bug #30344
-
-2004-10-05 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_compile.c
- zend_compile.h
- zend_vm_handlers.h:
- - Add arginfo ZEND_ARG_SEND_AUTOMATIC which lets the compiler automatically
- determine whether pass by ref is possible or pass by value is needed.
-
-2004-10-05 Dmitry Stogov <dmitry@zend.com>
-
- * tests/unset_cv06.phpt
- tests/unset_cv07.phpt
- tests/unset_cv07.phpt:
- Test files are fixed.
-
- * zend_execute.c
- zend_vm_handlers.h
- tests/unset_cv11.phpt:
- Fixed unset() bug that was introduced with CV optimization patch
-
- * zend_execute_API.c
- zend_vm_handlers.h
- tests/unset.inc
- tests/unset_cv01.phpt
- tests/unset_cv02.phpt
- tests/unset_cv03.phpt
- tests/unset_cv04.phpt
- tests/unset_cv05.phpt
- tests/unset_cv06.phpt
- tests/unset_cv07.phpt
- tests/unset_cv08.phpt
- tests/unset_cv09.phpt
- tests/unset_cv10.phpt:
- Added test cases for CV optimization patch
-
-2004-10-04 Andi Gutmans <andi@zend.com>
-
- * zend_API.h
- zend_execute_API.c:
- - Rename delete_global_variable() to zend_delete_global_variable()
-
- * Zend.m4
- zend_API.h
- zend_compile.c
- zend_compile.h
- zend_execute.c
- zend_execute_API.c
- zend_language_parser.y
- zend_opcode.c
- zend_vm.h
- zend_vm_handlers.h
- zend_vm_spec.h:
- - Commit the variable fetch optimization.
- - Extensions which delete global variables need to use new special
- function
- - delete_global_variable() (I'm about to rename it) to remove them.
- - Will post to internals@ or via commit messages if there's anything else.
-
-2004-10-04 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_builtin_functions.c:
- - Bugfix #27798
-
- * tests/bug27798.phpt:
-
- - Add new test
-
-2004-10-02 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * (PHP_5_0)
- tests/bug28444.phpt
- tests/bug29368.phpt:
- - Add new tests
-
- * tests/bug28444.phpt
- tests/bug29368.phpt:
-
- - Add new test
-
-2004-10-01 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * Makefile.frag:
- - Add makefile fragment which simplifies working on the executer
-
-2004-09-30 Andi Gutmans <andi@zend.com>
-
- * zend_operators.c:
- - Small improvement to DVAL_TO_ZVAL macro
-
-2004-09-29 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_API.c:
- - MFB (synch correctly not only for one problem)
-
- * zend_API.c:
- - Refix the fix
-
-2004-09-29 Andi Gutmans <andi@zend.com>
-
- * bench.php
- tests/bench.php:
- - Move bench.php to Zend/
-
-2004-09-28 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_API.c
- zend_API.h
- zend_object_handlers.c
- zend_objects.c:
- Simplify/Optmize magic method calls (__get/__set/__call/__clone/__destruct)
-
-2004-09-28 Andi Gutmans <andi@zend.com>
-
- * zend_execute_API.c:
- - Return the warning until we check if we can change the type of str.len
-
-2004-09-28 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_reflection_api.c
- zend_reflection_api.h:
- - publish reflection_class_factory() as zend_reflection_class_factory()
-
-2004-09-27 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * (PHP_5_0)
- zend_reflection_api.c:
- MFH fix several property handling issues
-
- * zend_reflection_api.c:
- - Make internally used properties read-only and fix default properties
-
- * zend_exceptions.c:
- - Fix memeleak
-
- * zend_reflection_api.c:
- - Declare properties
-
-2004-09-27 Andi Gutmans <andi@zend.com>
-
- * README.ZEND_VM:
- - Document zend_vm_use_old_executor() for Derick.
-
-2004-09-27 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_reflection_api.c:
- Fix Reflection_Class to ReflectionClass in docu/messages
-
- * zend_execute_API.c:
- - Fix warning
-
- * zend_compile.c
- zend_stream.c:
- - Fix warning
-
- * zend_builtin_functions.c
- zend_reflection_api.c:
- - Fix warnings
-
- * zend_interfaces.c:
- Fix warnign
-
-2004-09-27 Andi Gutmans <andi@zend.com>
-
- * zend_variables.c
- zend_variables.h:
- - Use zval_ctor_func() for wrapper and update the prototype to void
-
- * zend_variables.c
- zend_variables.h:
- - Make zval_copy_ctor() return void like dtor(). No one ever checks the
- - return value which is SUCCESS always.
-
-2004-09-26 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend.h
- zend_variables.h:
- - Fix build
-
-2004-09-26 Andi Gutmans <andi@zend.com>
-
- * zend.h
- zend_variables.c
- zend_variables.h:
- - Apply Thies and Sterling's patch which doesn't call ctor/dtor functions
- - for types which don't require it (BOOL/NULL/LONG/DOUBLE)
- - Breaks serialization!!!
-
-2004-09-24 Anantha Kesari H Y <hyanantha@novell.com>
-
- * zend_API.c:
- selectively avoiding module cleanup code for apache 1 build and removing a
- duplicate code
-
-2004-09-24 Dmitry Stogov <dmitry@zend.com>
-
- * zend_vm_spec.h:
- Fixed specializer bug.
-
-2004-09-23 Andi Gutmans <andi@zend.com>
-
- * (PHP_5_0)
- zend.h:
- - PHP 5.0.3-dev
-
- * zend_compile.h
- zend_execute.c
- zend_execute.h
- zend_execute_API.c
- zend_opcode.c
- zend_vm.h:
- - Commit new VM architecture. This one allows people (aka Derick) to
- - ask the engine to use function handler mode. Will update the README
- - about that.
-
- * (PHP_5_0)
- zend.h:
- - Roll 5.0.2
-
-2004-09-23 Ilia Alshanetsky <ilia@prohost.org>
-
- * tests/bug20240.phpt:
- Fixed test.
-
-2004-09-23 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_reflection_api.c:
- Bugfix # 30209
-
-2004-09-23 Andi Gutmans <andi@zend.com>
-
- * tests/bench.php:
- - Commit synthetic benchmark
-
-2004-09-23 Anantha Kesari H Y <hyanantha@novell.com>
-
- * zend_execute.c
- zend_execute_API.c
- zend_globals.h:
- Reverted the NetWare Specific Stack limit related patches as asked by Andi
-
-2004-09-22 Anantha Kesari H Y <hyanantha@novell.com>
-
- * zend_execute_API.c
- zend_globals.h:
- NetWare specific stack limit checks
-
- * zend_API.c:
- Aligned the ifdef NETWARE blocks to first column.
-
- * zend_execute.c:
- Stack limit will be checked while executing the script
-
- * zend_config.nw.h:
- To avoid redefinition (of free, alloca etc.) compilation errors in Zend.
-
- * zend_API.c:
- When Apache is unloaded, it calls dlclose on all the PHP extensions
- that are loaded in memory. In the case of Apache 1.3, this call is
- blocking indefinitely. As a work around, this call is bypassed for Apache
- 1.3 build on NetWare only. This means that none of the loaded PHP
- extensions are unloaded. They will have to be manually unloaded before
- re-loading the Apache 1.3 again.
-
- * zend.h:
- defined ZEND_PATHS_SEPERATOR to semicolon for NetWare
-
- * acconfig.h:
- enabled macros to call the proper LibC functions
-
-2004-09-22 Dmitry Stogov <dmitry@zend.com>
-
- * zend_vm_handlers.h
- zend_vm_spec.h:
- Specializer was updated with executor's fixes.
-
- * zend_execute.c
- zend_execute.c:
- Fixed bug #29566 (foreach/string handling strangeness (crash)).
-
- * zend_execute.c:
- Fixed bug in fix for bug #29707
-
-2004-09-21 Andi Gutmans <andi@zend.com>
-
- * zend_execute.c
- zend_execute.h:
- - Fix for bug #29707
-
-2004-09-19 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_reflection_api.c:
- Bugfix #30146 (ReflectionProperty->getValue() requires instance for static
- property)
-
- * zend_reflection_api.c:
- Bugfix #30148 (ReflectionMethod->isConstructor() fails for inherited
- classes)
-
-2004-09-17 Stanislav Malyshev <stas@zend.com>
-
- * zend_execute_API.c
- zend_objects_API.c
- zend_objects_API.h:
- fix crash when dtor is fialing on shutdown
-
-2004-09-16 Andi Gutmans <andi@zend.com>
-
- * (PHP_5_0)
- zend.h:
- - Go with PHP 5.0.2RC1
-
- * tests/bug27669.phpt:
- - Add test for bug #27669
-
-2004-09-16 Sebastian Bergmann <sb@sebastian-bergmann.de>
-
- * zend_language_parser.y:
- ZTS fix.
-
-2004-09-16 Andi Gutmans <andi@zend.com>
-
- * zend_compile.c
- zend_compile.h
- zend_language_parser.y:
- - Fix bug #27669 (Dmitry).
- Fixes:
- <?
- class A
- {
- function hello()
- {
- echo "Hello World\n";
- }
- }
- $y[0] = 'hello';
- A::$y[0]();
- ?>
-
-2004-09-15 Ilia Alshanetsky <ilia@prohost.org>
-
- * zend_operators.h:
- MFH: Fixed a bug causing ".123" * "90" and alike to return a 0.
-
- * (PHP_5_0)
- zend_operators.h:
- Fixed a bug causing ".123" * "90" and alike to return a 0.
-
-2004-09-15 Derick Rethans <php@derickrethans.nl>
-
- * zend_config.w32.h:
- - Windows support strcoll too.
-
-2004-09-13 Stanislav Malyshev <stas@zend.com>
-
- * zend_execute.c:
- Antony Dovgal's error message improvement - #27290
-
-2004-09-11 Derick Rethans <php@derickrethans.nl>
-
- * zend_operators.c
- zend_operators.h:
- - MFB: Added the sorting flag SORT_LOCALE_STRING to the sort() functions
- which
- makes them sort based on the current locale. (Derick)
-
- * (PHP_5_0)
- zend_operators.c
- zend_operators.h:
- - Added the sorting flag SORT_LOCALE_STRING to the sort() functions which
- makes
- them sort based on the current locale. (Derick)
-
-2004-09-11 Andi Gutmans <andi@zend.com>
-
- * zend_operators.c:
- - Resolve undefined behavior (joe at redhat)
-
-2004-09-10 Andi Gutmans <andi@zend.com>
-
- * zend_compile.c:
- - This one fixes rather strange problem - ZE allows multiple declarations
- of the same class constant.
- - It could be a minor BC break, but I'm sure it's a bug. (Antony Dovgal
- aka tony2001)
-
-2004-09-09 Andi Gutmans <andi@zend.com>
-
- * zend_extensions.h:
- - Revert API bump
-
- * README.ZEND_VM:
- - Commit VM explanation.
-
- * zend.c:
- - Recommit
-
- * zend_API.c
- zend_API.h
- zend_compile.c:
- - Recommit:
- - Check signature of magic methods
- - Register __get/__set/__call for internal classes
-
- * zend_extensions.h:
- - Recommit:
- - Bump the API number to work around this major breakage.
-
- * ChangeLog
- zend.c
- zend_API.c
- zend_API.h
- zend_builtin_functions.c
- zend_compile.c
- zend_compile.h
- zend_exceptions.c
- zend_execute.c
- zend_execute.h
- zend_execute_API.c
- zend_extensions.h
- zend_opcode.c:
- - Roll back VM commit
-
-2004-09-09 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend.c:
- - Drop namespace relict
-
- * (PHP_5_0)
- zend_API.c
- zend_API.h
- zend_compile.c:
- MFH signature check/method registration
-
- * zend_API.c
- zend_API.h
- zend_compile.c:
- - Check signature of magic methods
- - Register __get/__set/__call for internal classes
-
-2004-09-09 Derick Rethans <php@derickrethans.nl>
-
- * zend_extensions.h:
- - Bump the API number to work around this major breakage.
-
-2004-09-09 Dmitry Stogov <dmitry@zend.com>
-
- * zend_vm.h:
- We will use CALL dispatch method for compilers other then GCC. It is more
- safe.
-
-2004-09-09 Andi Gutmans <andi@zend.com>
-
- * zend_API.c:
- - Fix the fix.
-
-2004-09-06 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_objects.c:
- - Fix handling of exceptions in dtors
-
-2004-09-05 Zeev Suraski <zeev@zend.com>
-
- * zend.c
- zend.h
- zend_ini_parser.y:
- Fix reverse dependency
-
-2004-09-04 Andi Gutmans <andi@zend.com>
-
- * zend_API.c:
- - Don't destroy object when calling overloaded cast method in
- - zend_parse_parameters()
-
-2004-09-02 Sebastian Bergmann <sb@sebastian-bergmann.de>
-
- * zend_compile.c:
- Fugbix typo.
-
-2004-08-30 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * (PHP_5_0)
- ZEND_CHANGES:
- MFH: Add some information about array overloading
-
- * ZEND_CHANGES:
- Add some information about array overloading
-
-2004-08-30 Stanislav Malyshev <stas@zend.com>
-
- * zend_execute.c:
- fix crash #29893
-
-2004-08-29 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_execute.c:
- String offset starts with 0, fix isset($str[$len])
-
- * (PHP_5_0)
- zend_compile.c:
- MFH: Bugfix #29882 isset crashes on arrays
-
- * zend_compile.c:
- Bugfix #29882 isset crashes on arrays
-
-2004-08-27 Andi Gutmans <andi@zend.com>
-
- * zend_alloc.c:
- - Fix leak report for 0 byte allocations (Dmitry)
-
-2004-08-26 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * (PHP_5_0)
- zend_compile.c:
- MFH: Enforce semantics: Classes cannot extend Interfaces
-
- * zend_compile.c:
- Enforce semantics: Classes cannot extend Interfaces
-
- * tests/bug29828.phpt:
- Fix test: Classes cannot extend Interfaces
-
- * zend_compile.c:
- Drop doubled check
-
- * zend_compile.c:
- - Bugfix #29828 Interfaces no longer work
-
- * tests/bug29828.phpt:
-
- Add new test
-
-2004-08-25 Andi Gutmans <andi@zend.com>
-
- * zend_builtin_functions.c:
- - Add interface_exists() and differentiate between classes and interfaces
- (Andrey Hristov)
-
-2004-08-24 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_API.c:
- - Add missing brackets
-
-2004-08-23 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_compile.c:
- - Drop unused variable
-
- * zend_execute_API.c
- zend_globals.h:
- - Boost up __autoload() calls by caching the lookup
-
-2004-08-23 Andi Gutmans <andi@zend.com>
-
- * zend_compile.c:
- - Improve performance of switch()
-
-2004-08-23 Zeev Suraski <zeev@zend.com>
-
- * (PHP_5_0)
- zend_reflection_api.c:
- Fix names
-
-2004-08-21 Sara Golemon <php@alphaweb.net>
-
- * zend_compile.c:
- Bugfix#29777 Some compilers don't like // style comments
-
-2004-08-20 Sara Golemon <php@alphaweb.net>
-
- * zend_ini_parser.y:
- Fix compile
-
-2004-08-19 Andi Gutmans <andi@zend.com>
-
- * zend_execute.c:
- - Cleanup
-
- * zend.c
- zend_execute_API.c
- zend_globals.h:
- - Second wave of garbage removal.
-
- * zend_compile.h
- zend_execute.c:
- - Stop using garbage. Please let me know if you find any bugs resulting
- - of this patch (very likely). (Dmitry, Andi)
-
-2004-08-19 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_reflection_api.c:
- - Implement #29728: Reflection API Feature: Default parameter value.
- . ReflectionParameter::isDefaultValueAvailable()
- . ReflectionParameter::getDefaultValue()
-
- * zend_reflection_api.c:
- - Nedd to work on copy
-
-2004-08-18 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_reflection_api.c:
- - Show default value of optional parameters of user defined functions.
-
-2004-08-18 Andrei Zmievski <andreiz@gmail.com>
-
- * zend_ini_parser.y:
- Forgot to turn off debugging.
-
- * zend_ini_parser.y
- zend_ini_scanner.l:
- Re-add my patch for .ini variable access.
-
-2004-08-16 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * (PHP_5_0)
- zend_reflection_api.c:
- MFH: Fix bug #29447: Reflection API issues
-
- * zend_reflection_api.c:
- - Fix bug #29447: Reflection API issues
-
-2004-08-15 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_compile.c:
- Remove unnecessary check
-
-2004-08-14 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_compile.c:
- Add missing check
-
-2004-08-12 Andi Gutmans <andi@zend.com>
-
- * (PHP_5_0)
- zend.h:
- - Back to 5.0.2-dev
-
- * (PHP_5_0)
- zend.h:
- - Roll 5.0.1
-
- * (PHP_5_0)
- zend.h:
- - Back to -dev
-
- * (PHP_5_0)
- zend.h:
- - 5.0.1RC2
-
- * zend_compile.c
- zend_compile.h
- zend_execute.c:
- - Don't use magic numbers
-
- * zend_compile.c
- zend_execute.c:
- - Significantly improve performance of foreach($arr as $data). (Marcus)
-
-2004-08-11 Ilia Alshanetsky <ilia@prohost.org>
-
- * zend_highlight.c:
- MFH: Fixed bug #29607 (highlighting code with HEREDOC produces invalid
- output).
-
- * (PHP_5_0)
- zend_highlight.c:
- Fixed bug #29607 (highlighting code with HEREDOC produces invalid output).
-
-2004-08-11 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_execute.c:
- More meaningfull error message
-
-2004-08-11 Derick Rethans <php@derickrethans.nl>
-
- * (PHP_5_0)
- zend_alloc.h:
- - MFH: Patch to allow the Zend memory allocators to be disabled.
-
- * zend_alloc.h:
- - Added missing defines.
-
-2004-08-10 Ilia Alshanetsky <ilia@prohost.org>
-
- * (PHP_5_0)
- zend_highlight.c:
- MFH: Fixed bug #29606 (php_strip_whitespace() prints to stdout rather then
- returning the value).
-
- * zend_highlight.c:
- Fixed bug #29606 (php_strip_whitespace() prints to stdout rather then
- returning the value).
-
-2004-08-10 Andi Gutmans <andi@zend.com>
-
- * (PHP_5_0)
- zend.h:
- - Back to -dev
-
- * (PHP_5_0)
- zend.h:
- - 5.0.1RC1
-
-2004-08-10 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_execute.c:
- - Fix warnings
-
-2004-08-07 Andi Gutmans <andi@zend.com>
-
- * zend_alloc.h:
- - Commit Derick's patch for allowing Zend to use regular libc memory
- - allocation functions. Mainly useful in conjunction with tools such as
- - valgrind which enables us to find bugs we might not find with the
- - current memory managers boundary protection.
-
-2004-08-05 Ilia Alshanetsky <ilia@prohost.org>
-
- * zend_builtin_functions.c:
- Eliminate unneeded variable.
-
-2004-08-04 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_reflection_api.c
- tests/bug29523.phpt:
- - Fix bug #29523 (ReflectionParameter::isOptional() is incorrect)
-
-2004-08-03 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * ZEND_CHANGES:
- Update
-
- * (PHP_5_0)
- zend_builtin_functions.c
- tests/bug29505.phpt:
- - MFH Bug #29505 get_class_vars() severely broken when used with arrays
-
- * tests/bug29505.phpt:
-
- Add new test
-
- * zend_builtin_functions.c:
- - Fixed Bug #29505 get_class_vars() severely broken when used with arrays
-
-2004-08-02 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_reflection_api.c:
- - Add methods to check parameter count
-
- * (PHP_5_0)
- zend_compile.c:
- MFH Change to use memcmp instead of strcmp
-
- * zend_compile.c:
- - Change to use memcmp instead of strcmp
-
-2004-08-02 Andi Gutmans <andi@zend.com>
-
- * zend_compile.c:
- - Fix typo
-
-2004-08-02 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_language_parser.y
- zend_language_scanner.l:
- - Remove all for now
-
- * zend_compile.c
- zend_compile.h
- zend_execute_API.c:
- MFB: Enforce protocol on magic methods/functions
-
-2004-08-02 Ilia Alshanetsky <ilia@prohost.org>
-
- * (PHP_5_0)
- zend_execute.c:
- MFH: A gentler (performance wise) allocation of buffer for temp variables.
-
- * zend_execute.c:
- A gentler (performance wise) allocation of buffer for temp variables.
-
-2004-08-01 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * (PHP_5_0)
- zend_compile.c
- zend_compile.h
- zend_execute_API.c:
- - Enforce protocol on magic methods/functions
-
-2004-07-30 Andi Gutmans <andi@zend.com>
-
- * zend_execute.c
- zend_execute_API.c
- zend_ptr_stack.c
- zend_ptr_stack.h:
- - More ptr_stack optimizations and cleanups
-
- * zend_alloc.c
- zend_alloc.h
- zend_execute.c
- zend_fast_cache.h
- zend_ptr_stack.h:
- - Improve performance by inlining zend_ptr_stack_n_push(). var_args can
- usually not be inlined by compilers.
-
-2004-07-29 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_hash.c:
- - Increase performance of *sort() and some internal sort operations.
-
-2004-07-29 Sara Golemon <php@alphaweb.net>
-
- * zend_compile.c
- zend_compile.h
- zend_execute.c
- zend_language_parser.y
- zend_language_scanner.l
- zend_opcode.c:
- Revert goto opcode
-
- * zend_execute.c:
- &tmp and label are the same thing, don't free it till we're done with it.
-
- * zend_compile.c
- zend_execute.c:
- Plug some memory leaks and promote unknown label to E_ERROR.
- If someone tries to jump to a non-existant label execution really
- shouldn't try to carry on.
-
- * zend_compile.c
- zend_compile.h
- zend_execute.c
- zend_language_parser.y
- zend_language_scanner.l
- zend_opcode.c:
- Add goto operator by popular request.
-
-2004-07-28 Wez Furlong <wez.php@thebrainroom.net>
-
- * zend_ini.c:
- Fix: ini entries for dl()'d modules now work under ZTS
- Side-effect: avoid possible crashes when multiple threads load/unload
- modules and mess with the global hash table.
-
-2004-07-28 Andi Gutmans <andi@zend.com>
-
- * zend.h
- zend.h:
- - Fix MAC OSX to always use native DSO loading
-
-2004-07-27 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_exceptions.c:
- - Be specific about visibility
-
-2004-07-27 Wez Furlong <wez.php@thebrainroom.net>
-
- * zend_builtin_functions.c:
- Fix two possible crashes. Latter is unlikely unless you are doing scary
- things, but former looks nasty.
-
-2004-07-26 Stanislav Malyshev <stas@zend.com>
-
- * zend_interfaces.c:
- quick fix for #29382
-
-2004-07-25 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_reflection_api.c:
- - Show visibility errors (try to fix #29354)
-
- * (PHP_5_0)
- zend_execute.c
- zend_objects_API.c
- zend_objects_API.h:
- - MFH: Fix bug #29368 : The destructor is called when an exception is
- thrown from the constructor
-
- * zend_execute.c
- zend_objects_API.c
- zend_objects_API.h:
- - Fix bug #29368 : The destructor is called when an exception is thrown
- from the constructor
-
- * zend.c
- zend.h
- zend_execute.h
- zend_execute_API.c:
- - Execute destructors earlier (Florian Schaper, fschaper at intux org)
-
- * zend_reflection_api.c:
- - Add ReflectionParameter::isOptional() to test whether a parameter is
- optional and also show this information in export.
-
- * zend_exceptions.c:
- - Add optional parameters $filename and $lineno to ErrorException
- constructor to allow overwriting automatically retrieved information.
-
-2004-07-23 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_execute.c:
- Fix 0 Byte leak after alloca to emalloc change
-
-2004-07-22 Zeev Suraski <zeev@zend.com>
-
- * zend_object_handlers.c:
- Fix bug in handling of protected properties
-
-2004-07-21 Edin Kadribasic <edink@emini.dk>
-
- * zend_builtin_functions.c:
- Fixed build
-
-2004-07-21 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * (PHP_5_0)
- zend_builtin_functions.c:
- MFH: Fixded #29291: get_class_vars() return names with NULLs
-
- * zend_builtin_functions.c:
- - Fixded #29291: get_class_vars() return names with NULLs
-
-2004-07-20 Moriyoshi Koizumi <moriyoshi@at.wakwak.com>
-
- * zend_alloc.c
- zend_alloc.h:
- - Add safe_pemalloc()
-
-2004-07-20 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_reflection_api.c:
- - Fixed bug 28895 again (long live the dead)
-
-2004-07-20 Zeev Suraski <zeev@zend.com>
-
- * zend_exceptions.c:
- Fix prototypes
-
- * zend_exceptions.c:
- Add descriptions
-
-2004-07-20 Stanislav Malyshev <stas@zend.com>
-
- * zend_compile.c:
- add todo
-
- * (PHP_5_0)
- zend_ini.h
- zend_ini_parser.y:
- export ini parser
-
-2004-07-19 Sebastian Bergmann <sb@sebastian-bergmann.de>
-
- * zend_reflection_api.c:
- Fix prototypes: Reflection_* -> Reflection*.
-
- * zend_reflection_api.c:
- Make ReflectionClass::getMethod() and ReflectionClass::getProperty() raise
- an ReflectionException instead of returning NULL on failure.
-
- * zend_reflection_api.c:
- Do not use contracted forms.
-
-2004-07-19 Stanislav Malyshev <stas@zend.com>
-
- * zend_ini.h
- zend_ini_parser.y:
- export INI parser
-
- * zend_object_handlers.c:
- __set and __get will be called not only when variable doesn't exist but
- also when it's
- invisible
-
-2004-07-19 Andi Gutmans <andi@zend.com>
-
- * zend_extensions.h
- zend_modules.h:
- - Bump API number due to empty_string change
-
- * zend.c
- zend.h
- zend_API.h
- zend_alloc.h
- zend_execute.c
- zend_object_handlers.c
- zend_operators.c
- zend_variables.c:
- - Nuke empty_string. It is a reminanent from the time where RETURN_FALSE()
- used to return "" and not bool(false). It's not worth keeping it because
- STR_FREE() and zval_dtor() always have to check for it and it slows down
- the general case. In addition, it seems that empty_string has been
- abused
- quite a lot, and was used not only for setting zval's but generally in
- PHP code instead of "", which wasn't the intention. Last but not least,
- nuking empty_string should improve stability as I doubt every place
- correctly checked if they are not mistakenly erealloc()'ing it or
- calling efree() on it.
- NOTE: Some code is probably broken. Each extension maintainer should
- check and see that my changes are OK. Also, I haven't had time to touch
- PECL yet. Will try and do it tomorrow.
-
-2004-07-18 Wez Furlong <wez.php@thebrainroom.net>
-
- * zend_execute_API.c:
- No point allocating 0 bytes
-
-2004-07-16 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_language_parser.y
- zend_language_scanner.l:
- - Speed up by making null/false/true reserved word which allows to drop
- an opcode (FETCH_CONSTANT) for every usage.
-
- * zend_execute.c:
- Bugfix #28464 catch() does not catch exceptions by interfaces
-
-2004-07-16 Ilia Alshanetsky <ilia@prohost.org>
-
- * zend_operators.h:
- MFB: Fixed bug #28800 (strings beginning with "inf" improperly converted).
-
- * (PHP_5_0)
- zend_operators.h:
- Fixed bug #28800 (strings beginning with "inf" improperly converted).
-
-2004-07-15 Andi Gutmans <andi@zend.com>
-
- * zend_alloc.c
- zend_alloc.h:
- - Improve performance of zend_alloc by stopping the size from being a bit
- - field.
-
-2004-07-15 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_exceptions.c
- zend_exceptions.h:
- - Add new class ErrorException to encapsulate errors in exceptions
-
- * zend_dynamic_array.h:
- - Fix prototype
-
-2004-07-14 Stanislav Malyshev <stas@zend.com>
-
- * zend_object_handlers.c:
- be consistent with write_dimension
-
- * zend_object_handlers.c:
- fix #28957
-
-2004-07-13 Andi Gutmans <andi@zend.com>
-
- * zend.h:
- - 5.0.1-dev
-
-2004-07-13 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_constants.c:
- Bugfix #29116 Zend constant warning uses memory after free (jdolecek at
- NetBSD dot org)
-
-2004-07-13 Andi Gutmans <andi@zend.com>
-
- * (php_5_0_0)
- zend.h:
- - Roll PHP 5.0.0
-
-2004-07-12 Ilia Alshanetsky <ilia@prohost.org>
-
- * (php_5_0_0RC4)
- zend_execute.c:
- Fixed bug #29086 & #28064 (PHP crashes on extremly long scripts).
-
-2004-07-12 Andi Gutmans <andi@zend.com>
-
- * (php_5_0_0RC4)
- zend.c:
- - Convert zend_class_entry -> zend_class_entry *
-
-2004-07-10 Jon Parise <jon+php@csh.rit.edu>
-
- * zend.c:
- DragonFly BSD is derived from FreeBSD and requires the same floating point
- precision fix.
-
-2004-07-10 Andi Gutmans <andi@zend.com>
-
- * zend_alloc.c
- zend_hash.c
- zend_variables.c:
- - Better stability during premature shutdown of request startup
-
-2004-07-05 Andi Gutmans <andi@zend.com>
-
- * zend_mm.h:
- - Disable zend_mm for 5.0.0
-
-2004-07-03 Andi Gutmans <andi@zend.com>
-
- * zend_alloc.c:
- - Should fix mem leak with ZEND_MM. I made this change a while ago and
- - rolled it back but I don't remember why. Please test!
-
-2004-07-01 Ilia Alshanetsky <ilia@prohost.org>
-
- * zend_constants.c:
- Do not use alloca() where it can be easily abused by the users.
-
-
-2004-06-25 Wez Furlong <wez.php@thebrainroom.net>
-
- * zend_stream.c
- zend_stream.h:
- export zend stream functions for zend extensions under windows
-
-2004-06-24 Sara Golemon <php@alphaweb.net>
-
- * zend_execute.c:
- Ease off on severity of new error (Using Resources as array offsets)
-
-2004-06-23 Sara Golemon <php@alphaweb.net>
-
- * zend_execute.c:
- BugFix #28879 Inconsistent behavior between explicit and implicit array
- creation.
-
- Changes:
-
- Throw E_WARNING "Illegal offset type" when explicitly creating
- array elements with objects, arrays, or resorces as indexes.
- This matches implicit creation w/ obj/arr indices.
-
- Throw E_WARNING "Resource ID#%ld used as offset, casting to integer (%ld)"
- when implicitly creating array with resource as index. (BC)
-
-2004-06-19 Sebastian Bergmann <sb@sebastian-bergmann.de>
-
- * zend_reflection_api.c:
- Reflection_* -> Reflection*. Patch by Timm Friebe.
-
-2004-06-18 Sara Golemon <php@alphaweb.net>
-
- * zend_execute.c:
- Another typo in converting array index doubles to long.
-
-2004-06-18 George Schlossnagle <george@omniti.com>
-
- * zend_builtin_functions.c:
- fix for 28213.
-
- class_name and call_type should be reinitialized on every loop iter.
-
-2004-06-17 Sara Golemon <php@alphaweb.net>
-
- * zend_builtin_functions.c:
- String length in parse_parameters should be int
-
-2004-06-15 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_reflection_api.c:
-
-
-2004-06-14 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_language_scanner.l:
- Need {} here
-
-2004-06-10 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_language_scanner.l:
- - Require a single white-space char after /** to start a doc comment that
- way we prevent /*** from becoming a doc comment (as requested Derick).
-
- * zend_API.h:
- Add missing declaration
-
- * zend_reflection_api.c:
- Small code layout change
-
- * zend_language_scanner.l:
- Do not require NEWLINE at start of doccomment
-
- * zend_reflection_api.c:
- Bugfix #28699: Reflection api bugs
-
-2004-06-09 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_reflection_api.c:
- Fix Bug #28694 ReflectionExtension::getFunctions() crashes PHP
-
-2004-06-07 Andi Gutmans <andi@zend.com>
-
- * zend.h:
- - Go back to -dev (Shouldn't need another RC)
-
- * (php_5_0_0RC3)
- zend.h:
- - Roll RC3
-
-2004-06-06 Stefan Esser <sesser@suspekt.org>
-
- * zend_compile.h
- zend_opcode.c:
- Fixed Zend Function Destructor to use correct TSRM handle.
-
-2004-06-05 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_API.c:
- Fix #28641: Instance of Interface
-
-2004-06-03 Andi Gutmans <andi@zend.com>
-
- * (php_5_0_0RC3RC2)
- zend.h:
- - Prepare for RC3RC2
-
-2004-06-02 Andi Gutmans <andi@zend.com>
-
- * zend_mm.h:
- - Don't use ZEND_MM in Windows
-
-2004-06-02 Stanislav Malyshev <stas@zend.com>
-
- * zend_execute.c:
- fix incdec - make value's refcount non-zero when passing to
- write_property - otherwise __set caller cleanup could kill it.
-
-2004-06-01 Andi Gutmans <andi@zend.com>
-
- * zend.c:
- - If user error handler returns "false" then we relay to the built in error
- handler
-
-2004-05-31 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_reflection_api.c:
- Refcount must not be set separatley again.
-
- * zend_reflection_api.c
- zend_reflection_api.c:
- Add missing initialization
-
- * zend_compile.c:
-
-
-2004-05-28 Andrei Zmievski <andreiz@gmail.com>
-
- * zend.c:
- Allow user-defined error handlers to indicate whether default error
- handler should be re-invoked, by returning true or false.
-
-2004-05-28 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_execute.c:
- Prevent possible problems with illegal properties
-
-2004-05-28 Derick Rethans <php@derickrethans.nl>
-
- * zend_builtin_functions.c:
- - Make the default mask for user defined error handlers include ALL errors,
- including E_STRICT.
-
-2004-05-27 Andi Gutmans <andi@zend.com>
-
- * zend.h:
- - Back to RC3-dev until we roll final
-
- * (php_5_0_0RC3RC1)
- zend_execute.c:
- - Fix problem with exceptions returning from include(). (Dmitry)
-
- * (php_5_0_0RC3RC1)
- zend.h:
- - RC3RC1
-
-2004-05-26 Wez Furlong <wez.php@thebrainroom.net>
-
- * zend_object_handlers.c:
- Fix leak on systems where alloca isn't really alloca.
-
-2004-05-26 Andrei Zmievski <andreiz@gmail.com>
-
- * zend_constants.c:
- Avoid unnecessary and silly copying of constant name when registering.
-
-2004-05-26 Andi Gutmans <andi@zend.com>
-
- * zend_alloc.c:
- - Fix memory manager problem
-
-2004-05-26 Sebastian Bergmann <sb@sebastian-bergmann.de>
-
- * ZEND_CHANGES:
- Update Reflection API class names. Whitespace fixes.
-
-2004-05-25 Andi Gutmans <andi@zend.com>
-
- * zend_objects_API.h:
- - Nuke unused decleration
-
- * zend_alloc.c
- zend_alloc.h:
- - More fixes
-
- * zend_alloc.c
- zend_alloc.h:
- - Make fix compile.
-
- * zend_alloc.c
- zend_alloc.h:
- - Fix memory leak in mem cache in conjunction with Zend MM. How come no one
- - noticed this? :)
-
-2004-05-23 Andi Gutmans <andi@zend.com>
-
- * zend_objects_API.c:
- - Fix problem with object being destroyed more than once
-
- * zend_builtin_functions.c:
- - Fix the following script (it crashed):
- <?php
- class ErrorHandler {
- function __construct() {
- set_error_handler(array(&$this, 'handle'));
- }
-
- function __destruct() {
- restore_error_handler();
- }
-
- function handle($code, $msg, $file, $line, $locals) {
- }
- }
-
- new ErrorHandler();
- ?>
-
-2004-05-20 Wez Furlong <wez.php@thebrainroom.net>
-
- * zend_exceptions.c
- zend_exceptions.h:
- Revert; obviously I missed the function at the bottom of the file...
-
- * zend_exceptions.c
- zend_exceptions.h:
- Export this, so extensions may throw their own exception objects that
- they have already instantiated.
-
-2004-05-18 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_API.c:
- - Need to operate on module pointer in hash table
-
-2004-05-18 Wez Furlong <wez.php@thebrainroom.net>
-
- * zend_execute_API.c:
- Fix bug #28438: win32 build fails in non-zts mode
-
-2004-05-18 Stanislav Malyshev <stas@zend.com>
-
- * zend_API.c:
- Z_TYPE_P is for zvals
-
-2004-05-18 Wez Furlong <wez.php@thebrainroom.net>
-
- * zend_API.c:
- Register according to the type specified by the module.
- (Helps to fix dl() bug)
-
-2004-05-18 Sara Golemon <php@alphaweb.net>
-
- * zend_execute.c:
- Bugfix#28404 When type is double we need to access dval, not lval
-
-2004-05-17 Andrei Zmievski <andreiz@gmail.com>
-
- * zend_ini_parser.y
- zend_ini_scanner.l:
- Revert the .ini vars patch. Will have to try again next Christmas
- apparently.
-
- * zend_ini_parser.y:
- Fix the apparent bug (; at the end of parse rule block).
-
-2004-05-17 Wez Furlong <wez.php@thebrainroom.net>
-
- * zend_objects_API.c
- zend_objects_API.h:
- As discussed with Andi, add this helper API for setting the object pointer
- from
- within the constructor.
-
- Please read the comment for notes about how to use it; in general, you
- don't
- need it, so don't use it.
-
-2004-05-14 Andrei Zmievski <andrei@gravitonic.com>
-
- * zend_ini_parser.y
- zend_ini_scanner.l:
- Adding ability to refer to existing .ini variables from within .ini
- files. Example:
-
- open_basedir = ${open_basedir} ":/new/dir"
-
-2004-05-12 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_API.c:
- - Centralize register and hash operations for startup/register_module
- in new zend_register_module_ex().
-
- * zend_API.c:
- - Revert to 1.249
-
-2004-05-11 Andi Gutmans <andi@zend.com>
-
- * zend_compile.c:
- - Don't allow passing NULL to type hinted parameter.
-
-2004-05-10 Zeev Suraski <zeev@zend.com>
-
- * zend_operators.c:
- - Fix comparison of objects
- - Clarify convert_object_to_type()
-
-2004-05-10 Stefan Esser <sesser@suspekt.org>
-
- * zend_alloc.c:
- Checking MEMORY_LIMIT before doing emalloc/erealloc solves several ugly
- problems.
-
-2004-05-04 Wez Furlong <wez.php@thebrainroom.net>
-
- * zend_iterators.c
- zend_object_handlers.c
- zend_object_handlers.h
- zend_objects_API.c:
- Add count_elements handler for overloaded objects.
-
-2004-05-02 Andi Gutmans <andi@zend.com>
-
- * zend_operators.c:
- - Fix comparison of two objects in non-compatibility mode.
-
-2004-05-01 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_API.c:
- Don't load modules twice
-
-2004-04-29 Stanislav Malyshev <stas@zend.com>
-
- * zend_execute.c:
- Fix bug #27876
-
-2004-04-28 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_exceptions.h:
- Fix c++ builds
-
-2004-04-27 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_builtin_functions.c:
- - Optional parameter to class_exists() that can be used to bypass
- __autoload() which can be helpfull in __autoload() itself.
-
- * zend_interfaces.c:
- - Fix warnings
-
- * zend_interfaces.c
- zend_interfaces.h
- zend_iterators.h:
- - no unneccessary retval initialization
- - new c-level iterator handler invalidate_current that is optionally
- used to clear internal caching like in implementation of Iterator
-
-2004-04-27 Andi Gutmans <andi@zend.com>
-
- * zend_reflection_api.c:
- - Fix prototypes
-
-2004-04-26 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_reflection_api.c:
- Fix prototype
-
-2004-04-25 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_builtin_functions.c:
- Skip correct amount of stack entries
-
- * zend_interfaces.c:
- Capture potential problem by error message
-
- * zend_reflection_api.c:
- Show number of classes
-
-2004-04-25 Andi Gutmans <andi@zend.com>
-
- * zend.h:
- - RC3-dev
-
- * (php_5_0_0RC2)
- zend.h:
- - RC2
-
-2004-04-23 Andi Gutmans <andi@zend.com>
-
- * zend_compile.c:
- - Fixed bug #27923. foreach() without a key should not check if the key
- - is a reference (Adam)
-
-2004-04-21 Andi Gutmans <andi@zend.com>
-
- * zend.h:
- - RC2-dev
-
- * (php_5_0_0RC2RC2)
- zend.h:
- - Prepare for RC2RC2 (if everything is OK especially Zeev's interface
- - patch I'll roll RC2 tomorrow).
-
-2004-04-21 Zeev Suraski <zeev@zend.com>
-
- * (php_5_0_0RC2RC2)
- zend_compile.c:
- Restore fatal error in case a method that's supposed to implement an
- interface/abstract method, breaks its prototype
-
-2004-04-20 Andi Gutmans <andi@zend.com>
-
- * zend_language_parser.y:
- - Fix bug #27283 - Exceptions where the last catch() statement was
- sometimes
- - skipped.
-
-2004-04-19 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_reflection_api.c:
- show ini entries and classes for extensions.
-
-2004-04-17 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend.c:
- Retval may not be set when zend_execute() is overloaded
-
-2004-04-15 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_execute.c:
- Handle failure in get_current_data
-
-2004-04-14 Andi Gutmans <andi@zend.com>
-
- * zend_extensions.h:
- - Add comment
-
- * zend.h:
- - RC2-dev
-
- * (php_5_0_0RC2RC1)
- zend.h:
- - RC2RC1
-
-2004-04-13 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_exceptions.c:
- Classnames shall start with an uppercase character
-
-2004-04-13 Zeev Suraski <zeev@zend.com>
-
- * zend_builtin_functions.c:
- Fix debug_backtrace to show arguments again
- We need to merge code from debug_backtrace & debug_print_backtrace at
- some point!
-
-2004-04-13 Andi Gutmans <andi@zend.com>
-
- * zend_extensions.h:
- - Fix API no of Engine 2. The first number is the engine version and the
- - rest is the API_NO. This way engine2_api_no is always greater than
- - engine1_api_no.
-
- * zend.c
- zend_exceptions.c
- zend_exceptions.h:
- - Add hook for exception handler (Derick)
-
-2004-04-12 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_API.h:
- Fix order of macro parameter (synch with other macros)
-
-2004-04-12 Andi Gutmans <andi@zend.com>
-
- * OBJECTS2_HOWTO
- zend_extensions.h
- zend_ini.c
- zend_ini.h
- zend_modules.h:
- - modifyable -> modifiable
-
-2004-04-09 Andi Gutmans <andi@zend.com>
-
- * zend_object_handlers.c:
- - Fix bug #26441 (When __set() returned a value it corrupted it)
-
-2004-04-08 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_reflection_api.c:
- Bugfix #27519 Reflection_Function constructor crashes with non-existant
- function's name
-
-2004-04-07 Andi Gutmans <andi@zend.com>
-
- * zend_builtin_functions.c:
- - Hopefully fix the debug_backtrace() code.
-
- * zend_builtin_functions.c:
- - Fix crash bug in zend_debug_backtrace(). No idea how come this survived
- - for so long....
-
-2004-04-04 Ilia Alshanetsky <ilia@prohost.org>
-
- * zend_objects_API.c:
- Removed unused variable.
-
-2004-04-03 Andi Gutmans <andi@zend.com>
-
- * zend_builtin_functions.c:
- Patch by Timm Friebe:
- It changes
- set_exception_handler() to accept the pseudo-type "callable" (instead of
- a string referring to a global function).
-
-
- Examples:
- set_exception_handler('function_name');
- set_exception_handler(array('class_name', 'static_method'));
- set_exception_handler(array($instance, 'instance_method'));
-
-
- This also makes set_exception_handler() more consistent with all the
- other callback functionality, e.g. set_error_handler().
-
- * zend_operators.c:
- - Nuke more old junk
-
- * zend.h
- zend_operators.c
- zend_operators.h:
- - Nuke code which hasn't been in use for ages.
-
-2004-04-01 Ilia Alshanetsky <ilia@prohost.org>
-
- * zend_builtin_functions.c:
- MFB: Revert patch for bug #27782.
-
- * zend_execute.c
- tests/bug27731.phpt:
- Fixed reversed condition for error reporting.
-
-2004-03-31 Dmitry Stogov <dmitry@zend.com>
-
- * zend_execute.c:
- Fixed BUG in zend_post_incdec_property
-
-2004-03-31 Andi Gutmans <andi@zend.com>
-
- * zend_reflection_api.c:
- - Fix typo
-
-2004-03-30 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * tests/bug26695.phpt:
- Fix test
-
-2004-03-30 Ilia Alshanetsky <ilia@prohost.org>
-
- * zend_builtin_functions.c:
- Fixed bug #27782 (Wrong behaviour of next(), prev() and each()).
-
-2004-03-30 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_reflection_api.c:
- TSRM fix
-
- * zend.c
- zend.h
- zend_API.c
- zend_API.h
- zend_globals.h
- zend_reflection_api.c:
- - Fix Reflection class names
- - Add ability to get the extension an internal class was defined in
-
-2004-03-29 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * acconfig.h:
- NAN==NAN doest work (Ard)
-
- * zend_builtin_functions.c:
- Allow mixed case search for extensions
-
-2004-03-29 Sebastian Bergmann <sb@sebastian-bergmann.de>
-
- * zend_execute.c:
- -clonning+cloning
-
-2004-03-29 Dmitry Stogov <dmitry@zend.com>
-
- * zend_execute.c:
- Implicit clonning strict warning was added for ze1_compatibility_mode
-
-2004-03-29 Ilia Alshanetsky <ilia@prohost.org>
-
- * zend_execute.c
- tests/bug27731.phpt:
- Fixed bug #27731 (error_reporting() inside @ block fails to set
- error_reporting level).
-
-2004-03-28 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_API.c:
- Use lowercasing here
-
- * zend.c:
- Initialize the complete struct
-
-2004-03-28 Stanislav Malyshev <stas@zend.com>
-
- * zend_language_parser.y:
- check writability on =& too
-
- * zend_execute.c:
- - call set handler if assigning to object having this handler
- - cleanup: use macros to access object internal vars
-
- * zend_interfaces.c:
- preserve ZEND_API in definition
-
- * zend_interfaces.h:
- declare as extern
-
-2004-03-28 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_reflection_api.c:
- Fix memleak found by Timm
-
-2004-03-28 Stanislav Malyshev <stas@zend.com>
-
- * zend_operators.c:
- centralize object-to-scalar conversion, make it work with get handler
-
- * zend.c:
- try get handler on printable conversion
-
- * zend_object_handlers.h:
- some more clear comments
-
- * zend_operators.c:
- Use macros for object parts access
-
-2004-03-28 Dmitry Stogov <dmitry@zend.com>
-
- * zend_execute_API.c:
- fix of fix related to __autoload. (ext/standard/tests/network/bug20134.phpt
- passes again)
-
-2004-03-27 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend.c:
- Even though it is uncommented it should be right
-
-2004-03-26 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_API.c
- zend_compile.c:
- Force destructors to have empty signatures
-
-2004-03-26 Andi Gutmans <andi@zend.com>
-
- * zend_execute.c:
- - Fix build (thanks to Timm)
-
-2004-03-25 Derick Rethans <php@derickrethans.nl>
-
- * zend_language_scanner.l:
- - Remove old and deprecated <?php_track_vars?> scanner token.
-
-2004-03-25 Andi Gutmans <andi@zend.com>
-
- * zend_compile.c:
- - If __construct() is defined then it will always take precedence over
- - old style constructors.
-
-2004-03-25 Stanislav Malyshev <stas@zend.com>
-
- * zend_execute.c:
- no need to use result for RECV's - as in PHP4
-
- * zend_execute.c:
- Use get/set handlers for increment.decrement ops on objects
-
-2004-03-25 Andi Gutmans <andi@zend.com>
-
- * zend_execute_API.c:
- /* The compiler is not-reentrant. Make sure we __autoload() only during
- run-time
- * (doesn't impact fuctionality of __autoload()
- */
-
-2004-03-25 Dmitry Stogov <dmitry@zend.com>
-
- * zend_execute_API.c:
- Using ALLOC_HASHTABLE/FREE_HASHTABLE instead of emalloc/free.
-
-2004-03-24 Dmitry Stogov <dmitry@zend.com>
-
- * zend.c
- zend_execute_API.c
- zend_globals.h:
- New autoload protection schema was implemented (Using HashTable instead of
- boolean flag)
-
-2004-03-24 Derick Rethans <php@derickrethans.nl>
-
- * zend_operators.c:
- - Revert bogus commit
-
- * zend_operators.c:
- - Fixed NEWS
-
-2004-03-24 Dmitry Stogov <dmitry@zend.com>
-
- * tests/bug27641.phpt:
- Fixed bug #27641 (Object cloning in ze1_compatibility_mode was
- reimplemented)
-
- * zend_execute.c
- zend_variables.c:
- Object cloning in ze1 compatibility mode (zend.ze1_compatibility_mode) was
- reimplemented (Dmitry, Andi)
-
-2004-03-22 Andi Gutmans <andi@zend.com>
-
- * zend_compile.c:
- - Fix bug
-
- * zend_execute.c:
- - Remove whitespace
-
-2004-03-21 Andi Gutmans <andi@zend.com>
-
- * zend_execute.c:
- - Improve consistency
-
-2004-03-21 Stanislav Malyshev <stas@zend.com>
-
- * zend_objects_API.c
- zend_objects_API.h:
- return zval *, to make it useful for read_property
-
- * zend_objects_API.c:
- update to new API
-
- * zend_execute.c
- zend_object_handlers.c
- zend_object_handlers.h:
- API change for read_property:
- instead of bool silent it now gets fetch type
- This can be used for creating proxy objects for write contexts
-
-2004-03-21 Andi Gutmans <andi@zend.com>
-
- * zend_execute.c:
- - Nuke unused code
-
-2004-03-18 Andi Gutmans <andi@zend.com>
-
- * zend.h:
- - Back to RC2-dev
-
-2004-03-18 Zeev Suraski <zeev@zend.com>
-
- * (php_5_0_0RC1)
- zend.h:
- Prepare to roll RC1
-
- * (php_5_0_0RC1)
- zend_execute.c:
- Fix possible data corruption with __set()
-
-2004-03-18 Stanislav Malyshev <stas@zend.com>
-
- * zend_execute.c:
- Improve error message - on E_STRICT, method is actually called,
- so the error shouldn't say it cannot be called.
-
-2004-03-18 Andi Gutmans <andi@zend.com>
-
- * (php_5_0_0RC1)
- zend_compile.c:
- - Change redefinition of constructor from E_COMPILE_ERROR to E_STRICT.
-
- * (php_5_0_0RC1)
- ZEND_CHANGES:
- - Update Changes
-
-2004-03-17 Sascha Schumann <sascha@schumann.cx>
-
- * zend_multiply.h:
- Readd x86 implementation
-
-2004-03-17 Andi Gutmans <andi@zend.com>
-
- * (php_5_0_0RC1RC2)
- zend_multiply.h:
- - Improved patch for support multiplication on 64bit machines
-
- * (php_5_0_0RC1RC2)
- zend_execute.c:
- - Fix tiny bug (one of the reasons we can't support __toString() for
- - regular objects).
-
- * (php_5_0_0RC1RC2)
- zend.c:
- - Stop make_printable_zval() from calling __toString()
-
- * zend_execute.c:
- - Fixed problem with __toString(). Due to the engine's architecture it is
- - currently not possible to call __toString() anywhere besides print &
- eval.
- - Follow up will be on internals@
-
-2004-03-17 Stanislav Malyshev <stas@zend.com>
-
- * (php_5_0_0RC1RC2)
- zend_compile.c:
- fix typo
-
-2004-03-17 Andi Gutmans <andi@zend.com>
-
- * zend_multiply.h
- zend_operators.c:
- - Apply Ard's patch to support multiplication & overflow on both 32bit
- and 64bit machines
-
-2004-03-16 Derick Rethans <php@derickrethans.nl>
-
- * zend.c
- zend.h
- zend_API.h
- zend_modules.h:
- - Replaced the exec_finished hook by the zend_post_deactive hook for
- extensions. The new hook will be run after the symbol table and
- destructors
- are run. (Derick)
-
- * zend_modules.h:
- - Bump API number so that it actually differs from PHP 4. This is needed
- because we don't want PHP 4 and PHP 5 extensions to be in the same
- directory
- when doing "make install" for shared, or phpize'd extensions.
-
-2004-03-16 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_execute_API.c:
- Fix SEGV in certain conditions while calling static methods
-
-2004-03-16 Zeev Suraski <zeev@zend.com>
-
- * zend_compile.c
- zend_compile.h:
- Add ability to disable JIT for a particular auto global
-
-2004-03-16 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_execute_API.c:
- TSRM fix
-
-2004-03-16 Sascha Schumann <sascha@schumann.cx>
-
- * zend.h:
- Enable ptr format check for GCC 3.1 and higher
-
-2004-03-16 Ilia Alshanetsky <ilia@prohost.org>
-
- * zend.h:
- Do not allow 3.0.4 for __attribute__.
-
- * zend.h:
- Fixed bug #27600 (GCC 3.0.4 does not like __attribute__ directive)
-
-2004-03-16 Andi Gutmans <andi@zend.com>
-
- * zend_compile.c:
- - Fix problem when using old-style constructors it wasn't being inherited
- correctly.
-
-2004-03-16 Derick Rethans <php@derickrethans.nl>
-
- * zend_execute_API.c:
- - Spaces to tabs
-
-2004-03-16 Andi Gutmans <andi@zend.com>
-
- * zend_execute_API.c:
- - If the called method is static then don't define $this
-
- * zend_execute.c
- zend_execute_API.c:
- - Error out if get_method() isn't defined.
- - Use calling scope of internal function callee when calling a method
- using static syntax (array("A", "func"));
-
-2004-03-16 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_execute.c
- zend_execute.h
- zend_execute_API.c:
- Improve error message
-
-2004-03-15 Andi Gutmans <andi@zend.com>
-
- * zend_operators.c:
- - Restore E_NOTICE for longs and doubles.
-
-2004-03-15 Jani Taskinen <jani.taskinen@kolumbus.fi>
-
- * zend.h:
- - Fixed bug #24582 (extensions can not be loaded dynamically in
- Solaris/iPlanet)
-
-2004-03-15 Andi Gutmans <andi@zend.com>
-
- * zend_operators.c:
- - Nuke E_NOTICE. This caused a notice when doing if ($obj == NULL)
-
-2004-03-14 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_builtin_functions.c:
- Make object parameter optional
-
-2004-03-14 Ilia Alshanetsky <ilia@prohost.org>
-
- * zend.c:
- Fixed bug #27590 (crash during shutdown when freeing persistent resources
- in ZTS mode).
-
-2004-03-14 Andi Gutmans <andi@zend.com>
-
- * zend_execute_API.c:
- - Fix windows build
-
- * zend_execute_API.c:
- - Fix for bug #27504
-
- * zend_builtin_functions.c:
- - Fixing bug #27123
-
- * zend_operators.c:
- - Improve compatibility mode and compare objects according to property
- - comparison (sucky but this is how PHP 4 behaved).
-
- * zend.c:
- - Fix flow of logic
-
- * zend_operators.c:
- - Support old style of converting objects to long/double/bool.
- - This is only enabled in compatibility mode, else it calls cast_object()
- - and if that is not available we return 1 (true) so that the following
- - code would work:
- if ($obj) {
- }
-
-2004-03-14 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_operators.c:
- Fix: Add return type void
-
-2004-03-14 Andi Gutmans <andi@zend.com>
-
- * zend.c
- zend_object_handlers.c
- zend_object_handlers.h
- zend_operators.c:
- - Support Cast operator in convert_to_* so that we support internal
- - extensions such as SimpleXML. This is for Sterling.
-
- * zend_operators.c:
- - Fix memory leak in the following code (Dmitry):
- <?php
- $a = array();
- $a .= "x";
- ?>
-
- * zend_operators.c:
- - Initial commit which allows comparing overloaded objects with native
- - types (only for internal classes and not for user-land classes).
-
-2004-03-11 Andi Gutmans <andi@zend.com>
-
- * zend_objects_API.c:
- - Real fix for bug #27535 (Dmitry)
-
- * zend_objects_API.c:
- - Attempt to fix bug #27535
-
-2004-03-09 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * ZEND_CHANGES:
- Rename hasMore() to valid() as discussed. (Part VI)
-
- * zend_API.c
- zend_compile.c
- zend_compile.h
- zend_execute.c
- zend_execute_API.c
- zend_interfaces.c
- zend_language_parser.y
- zend_reflection_api.c:
- Clearify the different method/class flags (as discussed with Andi).
-
- * zend.h:
- No longer needed
-
-2004-03-09 Andi Gutmans <andi@zend.com>
-
- * zend_constants.c:
- - Fix crash:
- <?php
- class ResourceFormat
- {
- const IMG = 1;
- }
-
- class Image
- {
- const RESOURCE_FORMAT = ResourceFormat::IMG;
- }
-
- print_r(constant('Image::RESOURCE_FORMAT'));
- ?>
-
- * zend_compile.c
- zend_compile.h
- zend_execute.c:
- - Nuke unused code.
-
-2004-03-08 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_execute.c
- zend_interfaces.c
- zend_iterators.h:
- Rename hasMore() to valid() as discussed. (Part II)
-
- * zend_interfaces.c:
- Rename hasMore() to valid() as discussed. (Part I)
-
- * zend_execute_API.c:
- Check count.
-
- * zend_reflection_api.c:
- Add another missing conversion
-
-2004-03-05 Andi Gutmans <andi@zend.com>
-
- * zend_compile.c:
- - Fix some small problems I introduce in last patch.
-
- * zend_compile.c:
- - Finally fix the following:
- $xml_mem =
- simplexml_load_string('<bookbody><part><chapter><page>1</page></chapter></part></bookbody>');
- /* The following works fine */
- foreach ($xml_mem->part as $part) {
- foreach($part->chapter->page as $page) {
- print $page;
- }
- }
- /* The following segfaults */
- foreach ($xml_mem->part as $part) {
- foreach($part->chapter as $chapter) { // Difference here from previous
- example
- print $chapter;
- }
- }
-
-2004-03-04 Moriyoshi Koizumi <moriyoshi@at.wakwak.com>
-
- * zend_language_scanner.l:
- - Fix memleak when scanner is called from within tokenizer extension.
-
-2004-03-04 Stanislav Malyshev <stas@zend.com>
-
- * zend_execute.h:
- fix the fix
-
- * zend_execute.h:
- oops, fix cut&paste gone bad
-
- * zend_execute.h:
- Fix object true value: if we are in compat mode and it's Zend object -
- use PHP4 rules. Otherwise, object is always true.
-
-2004-03-04 Derick Rethans <php@derickrethans.nl>
-
- * zend_constants.h
- zend_operators.h:
- - Fixed a 64bit issue (for zend_builtin_functions.c, module_number is an
- int).
- - Change the MAX_LENGTH_OF_LONG constant to 20, as LONG_MAX is 20
- characters.
- (Patches by Ard Biesheuven)
-
- * tests/zend_operators.phpt:
- - Added instance_of test (patch by Ard Biesheuvel)
-
-2004-03-04 Stanislav Malyshev <stas@zend.com>
-
- * zend_compile.c:
- Disallow redefining ctors and cleanup
-
- * zend_mm.c:
- Handle out of memory/bad size situation gracefully, without getting into
- loop
-
-2004-03-03 Andi Gutmans <andi@zend.com>
-
- * zend_objects_API.c:
- - Fix crash:
- <?
- class foo {
- function __destruct() {
- foreach ($this->x as $x);
- }
- }
- new foo();
- echo 'OK';
- ?>
-
-2004-03-02 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_API.c
- zend_API.h:
- Fix zend_parse_method_parameters_ex() and make it consistant with
- zend_parse_method_parameters().
-
-2004-03-02 Andi Gutmans <andi@zend.com>
-
- * zend_compile.c:
- - Fix leaks (although there might be still a problem here).
-
- * zend_execute.c:
- - Fix leak (Dmitry)
-
- * zend_compile.c:
- - Fix crash in:
- <?php
- class Foo {
- public $attributes= array();
-
- function export() {
- foreach ($this->attributes as $name => $attr) {
- }
- }
- }
-
- $f= new Foo();
- $f->export();
- ?>
-
- * zend_objects.c:
- - Improve fix for protecting destructor's from exceptions.
- - I was killing the current exception completely which was wrong.
-
-2004-03-01 Andi Gutmans <andi@zend.com>
-
- * zend_objects.c:
- - Fix crash in destructors(). You can't throw an exception in destructors
- as there is no guaranteed time when the destructor will be called.
-
- * zend_reflection_api.c:
- - Fix leak
-
- * zend_reflection_api.c:
- - Fix crash in reflection API (pierre)
-
- * zend.c
- zend_exceptions.c
- zend_execute_API.c:
- - Fix crash in exception handling (zend_exception_error(...) and
- zend_eval_string_ex() were buggy (Dmitry, Andi)
-
-2004-03-01 Derick Rethans <php@derickrethans.nl>
-
- * zend_compile.h:
- - Typo fix (by Jan)
-
- * zend_builtin_functions.c:
- - Fixed bug #27443 (defined() returns wrong type).
-
-2004-02-29 Andi Gutmans <andi@zend.com>
-
- * zend_reflection_api.c:
- - Apply fixes by Timm.
-
- * zend_compile.c:
- - Change prototype isA check not to check the constructor.
- - Only give an E_STRICT for non-isA compliant code as opposed to
- E_COMPILE_ERROR.
-
-2004-02-29 Stanislav Malyshev <stas@zend.com>
-
- * zend_compile.h:
- add ZEND_API there too for opcode handlers
-
-2004-02-29 Derick Rethans <php@derickrethans.nl>
-
- * zend_execute.c:
- - Initialize memory to \0 so that we can reliable detect whether a specific
- opcode element is in use.
-
-2004-02-29 Stanislav Malyshev <stas@zend.com>
-
- * zend_execute.c:
- export opcode table
-
-2004-02-27 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_API.c
- zend_compile.h:
- Add some comments
-
- * zend_API.c
- zend_compile.c
- zend_execute.c:
- Fixes for abstract classes/methods
-
-2004-02-26 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_language_parser.y
- zend_language_scanner.l:
- Fix __METHOD__ (noticed by Davey Sahfik)
-
- * zend_reflection_api.c:
- Fix problem with Reflection_Property (patch from Timm slightly modified).
-
-2004-02-25 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_objects_API.c:
- As Andi found out the dtor may increase the refcount.
-
-2004-02-25 Jani Taskinen <jani.taskinen@kolumbus.fi>
-
- * zend_builtin_functions.c:
- ws + cs
-
-2004-02-25 Zeev Suraski <zeev@zend.com>
-
- * zend_compile.c
- zend_execute.c:
- Fix leak in foreach ($o->mthd()->arr)
-
- * zend_API.c
- zend_API.h
- zend_compile.c
- zend_compile.h
- zend_execute.c:
- - Improve ARG_INFO() macros to support supplying required_num_args
- - Initial fix for foreach($o->mthd()->arr) crash (now leaks)
-
-2004-02-25 Derick Rethans <php@derickrethans.nl>
-
- * zend_highlight.c:
- - Use <span> instead of <font> in highlight_string(). (Patch by
- mg@iceni.pl)
-
-2004-02-25 Jani Taskinen <jani.taskinen@kolumbus.fi>
-
- * zend_exceptions.c:
- Improve error messages
-
-2004-02-25 Zeev Suraski <zeev@zend.com>
-
- * zend.c
- zend_compile.c
- zend_execute.c
- zend_execute_API.c
- zend_globals.h
- zend_variables.c:
- - Rename compatiblity mode to zend.ze2_compatibility_mode (it doesn't
- only affect auto-clone).
- - Perform implementation checks even with simple inheritance (off when
- compatibility mode is enabled).
- - Restore default arguments in interfaces and handle it correctly.
- - Move registration of internal classes later in the startup sequence
- in order to have INI options available.
-
-2004-02-25 Derick Rethans <php@derickrethans.nl>
-
- * zend_exceptions.c:
- - Fixed bug #27391 (typo in Fatal Error message).
-
-2004-02-25 Zeev Suraski <zeev@zend.com>
-
- * zend_API.c
- zend_compile.c
- zend_compile.h
- zend_opcode.c:
- - Abstract methods cannot have defaults for arguments
- - Make function foo($a, $b=null) satisfy both foo($a) and foo($a, $b)
- prototypes
-
-2004-02-25 Sebastian Bergmann <sb@sebastian-bergmann.de>
-
- * zend_reflection_api.c:
- Proto fixes.
-
-2004-02-25 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_objects_API.c:
- Fix object destruction/free in shutdown
- - set destructor_called even when no dtor is given
- - use free_storage even when no dtor hat to be called
-
- * zend_objects_API.c:
- Checking once for dtor is enough
-
-2004-02-24 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_API.c:
- Fix class flags when handling abstract methods
-
-2004-02-23 Andi Gutmans <andi@zend.com>
-
- * zend_language_parser.y:
- - Improve precendence:
-
- <?php
-
- $obj->foo = "Blah";
-
- if (!$obj instanceof StdClass) {
- print "No";
- } else {
- print "Yes";
- }
-
- * zend_language_parser.y:
- - Decrease precedence of instanceof so that the following is true:
- php -r 'var_export((object)1 instanceof stdClass);';
- Patch by Jan Lehnardt
-
-2004-02-22 Derick Rethans <php@derickrethans.nl>
-
- * zend_operators.c:
- - Fixed bug #27354 (Modulus operator crashes PHP).
-
-2004-02-22 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * ZEND_CHANGES:
- Add some more obviously needed information
-
-2004-02-20 Hartmut Holzgraefe <hartmut@php-groupies.de>
-
- * zend.h
- zend_API.h
- zend_iterators.h
- zend_operators.h
- zend_variables.h:
- more EXTERN_C wrapping of ZEND_API prototypes
-
-2004-02-20 Jani Taskinen <jani.taskinen@kolumbus.fi>
-
- * zend_opcode.c:
- ws fix
-
-2004-02-18 Hartmut Holzgraefe <hartmut@php-groupies.de>
-
- * zend.h
- zend_builtin_functions.h
- zend_extensions.h
- zend_indent.h
- zend_interfaces.h
- zend_object_handlers.h
- zend_objects.h
- zend_objects_API.h
- zend_ptr_stack.h
- zend_stack.h
- zend_stream.h:
- wrap ZEND_API prototypes into BEGIN_EXTERN_C/END_EXTERN_C
- for C++ extension support
-
-2004-02-18 Zeev Suraski <zeev@zend.com>
-
- * zend.c:
- Forward-port fixlet from PHP 4 (thanks to Michael Sisolak)
-
-2004-02-17 Jani Taskinen <jani.taskinen@kolumbus.fi>
-
- * zend_list.c:
- MFB: - Fix bug #26753 (zend_fetch_list_dtor_id() does not check NULL
- strings)
-
-2004-02-16 Derick Rethans <php@derickrethans.nl>
-
- * ZEND_CHANGES:
- - Clearify clone behavior, fixed clone example (Patch by Jan Lehnardt)
-
-2004-02-16 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_compile.c:
- Bugfix #27227 Mixed case class names causes Fatal Error in Constructor call
-
-2004-02-14 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_iterators.c:
- dtor's may not be called from free_storage handlers
-
-2004-02-12 Andi Gutmans <andi@zend.com>
-
- * (php_5_0_0b4)
- zend_execute.c:
- - Remove old code
-
-2004-02-12 Hartmut Holzgraefe <hartmut@php-groupies.de>
-
- * (php_5_0_0b4)
- ZEND_CHANGES:
- making sure that the provided examples actualy work (or at least do not
- generate no parse errors) unless they are really expected to fail
-
-2004-02-12 Andi Gutmans <andi@zend.com>
-
- * (php_5_0_0b4)
- zend_object_handlers.c:
- - This was too strict.
-
-2004-02-12 Zeev Suraski <zeev@zend.com>
-
- * (php_5_0_0b4)
- zend_API.c
- zend_API.h
- zend_compile.c
- zend_compile.h
- zend_interfaces.c
- zend_object_handlers.c:
- - Check return-by-reference bit when implementing interface prototypes
- - Add infrastructure for built-in functions to hint whether they
- return by reference or not. It is NOT currently used for anything,
- except for interface prototypes (you can use it to request that the
- function that implements your prototype returns by reference or
- doesn't return by reference).
- For downwards compatibility - by default, interface prototypes are
- agnostic as to whether the function that implements them returns
- by reference or not. Use ZEND_BEGIN_ARG_INFO_EX() with
- ZEND_RETURN_VALUE/ZEND_RETURN_REFERENCE to change that.
- - Fix ArrayAccess::getOffset() to conduct additional checks.
- If your getOffset() should work with multidimensional arrays - it
- must return by reference.
-
-2004-02-12 Andi Gutmans <andi@zend.com>
-
- * (php_5_0_0b4)
- zend_object_handlers.h:
- - Add comments to read/write property/dimension for extension authors
-
-2004-02-12 Zeev Suraski <zeev@zend.com>
-
- * zend_default_classes.h:
- zend_default_classes.h -> zend_exceptions.h
-
-2004-02-12 Andi Gutmans <andi@zend.com>
-
- * (php_5_0_0b4)
- Makefile.am:
- - Add zend_exceptions.c
-
-2004-02-12 Zeev Suraski <zeev@zend.com>
-
- * (php_5_0_0b4)
- ZendTS.dsp
- zend.c
- zend_default_classes.c
- zend_exceptions.c
- zend_exceptions.h
- zend_execute.c
- zend_execute.h
- zend_execute_API.c
- zend_reflection_api.c:
- Centralize exceptions code in zend_exceptions.[ch].
- Remove zend_default_classes.h (use zend_exceptions.h instead)
-
- NOTE: This currently breaks the build, fixes to php-src and pecl coming
- soon
-
-2004-02-12 Andi Gutmans <andi@zend.com>
-
- * zend_execute.c:
- - Use zend_throw_exception_object() in throw_handler to make sure it
- - does all the checks
-
-2004-02-12 Zeev Suraski <zeev@zend.com>
-
- * zend_default_classes.c
- zend_default_classes.h
- zend_exceptions.c
- zend_exceptions.h
- zend_execute.h
- zend_execute_API.c:
- Exceptions updates:
-
- - Enforce exceptions to be derived from class Exception. This allows
- users to perform catch-all. It's not yet complete, so don't get
- comfortable with it just yet :) Updates are coming soon.
- - Implement zend_throw_exception() using zend_throw_exception_ex()
-
-2004-02-12 Andi Gutmans <andi@zend.com>
-
- * zend_execute.h
- zend_execute_API.c:
- - Add API function to throw exception by using an object
-
-2004-02-11 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend.c:
- Must be initialized in ZTS mode
-
- * ZEND_CHANGES
- ZEND_CHANGES:
- Update
-
- * zend_compile.c
- zend_language_parser.y:
- Fix: <interface> [extends <interface> [, <ineterface>]* ]
-
-2004-02-11 Zeev Suraski <zeev@zend.com>
-
- * zend_execute.c:
- Fix leaks in assignments to overloaded objects
-
- * zend_execute.c:
- Fix leak with overloaded objects, when they're used just "for the hell
- of it" :)
-
- * zend_execute.c:
- Fixed a bug the caused overloaded array indices to be converted to strings
-
- * zend_execute.c:
- Turn off bogus warnings with overloaded dimensions and += (and friends)
-
- * zend_execute.c:
- Improve the implementation of unset() on array dimensions to be more
- consistent with that of regular variables and string offsets
-
- * zend_execute_API.c:
- Fix bug #25038
-
- * zend_reflection_api.c:
- Fix crash (patch by Rob Richards)
-
- * zend.c
- zend_execute_API.c:
- Fix exceptions thrown without a stack frame
- Always enable set_exception_handler()
-
- * zend_list.h:
- Change FETCH_RESOURCE to return false on error instead of null, for
- consistency with other error situations
-
- * zend_compile.c:
- Fix bug #26802 (the right aspects of it found by Marcus, anyway :)
-
- * tests/bug26802.phpt:
- Fix and clarify the test case
-
- * zend_execute_API.c:
- Complete the fix for handling of exceptions happening during the
- argument passing phase of function calls (fixes bug #26866)
-
- * zend_execute_API.c:
- whitespace
-
-2004-02-10 Zeev Suraski <zeev@zend.com>
-
- * tests/bug26698.phpt:
- Ignore the memleak in this test
-
- * zend_execute.c:
- Fix bug #26698 (exceptions handled properly during argument passing to
- functions)
-
- * zend_default_classes.c:
- Fix bug #27186
-
- * zend_execute_API.c:
- Fix bug #26869
-
- * zend_execute.c:
- Fix refcounting of ++/+= overloading (fix leak in __get()/__set()
- based classes)
-
-2004-02-10 Andi Gutmans <andi@zend.com>
-
- * zend_compile.c:
- - Nuke more unused code
-
-2004-02-10 Zeev Suraski <zeev@zend.com>
-
- * zend_execute.c:
- Fix handling in assignment using multidimensional array syntax to string
- offset ($s = "FUBAR"; $s[0][0] = 1;)
-
-2004-02-10 Andi Gutmans <andi@zend.com>
-
- * ZEND_CHANGES:
- - We will go with PHP 4 behavior. With the new object model assigning by
- reference has lost a lot of its importance.
-
- * zend_compile.c:
- - Remove junk
-
-2004-02-10 Zeev Suraski <zeev@zend.com>
-
- * zend_execute.c:
- Fix exception handling in opcodes spanned across multiple oplines (fixes
- the crash in __set())
-
- * zend_execute.c:
- - Fix pre/post increment for overloaded objects
- - Fix binary-assign-op for overloaded objects
-
- NOTE: This requires the implementation of the 'get' callback!
-
-2004-02-10 Moriyoshi Koizumi <moriyoshi@at.wakwak.com>
-
- * tests/bug22836.phpt:
- - Correcting test.
-
-2004-02-08 Zeev Suraski <zeev@zend.com>
-
- * zend_execute.c
- zend_object_handlers.c
- zend_object_handlers.h:
- Fix write-mode of overloaded objects when using array dimensions
-
-2004-02-08 Andi Gutmans <andi@zend.com>
-
- * zend_objects_API.c:
- - Check if free_storage exists
-
-2004-02-05 Sebastian Bergmann <sb@sebastian-bergmann.de>
-
- * ZEND_CHANGES:
- Committing for Jan.
-
-2004-02-05 Ilia Alshanetsky <ilia@prohost.org>
-
- * zend_compile.c
- tests/bug27145.phpt:
- Fixed bug #27145 (Unmangle private/protected property names before printing
- then inside error messages).
-
-2004-02-04 Zeev Suraski <zeev@zend.com>
-
- * zend_execute_API.c:
- Fix exceptions happening inside internal functions called through
- zend_user_function()
-
- * zend_execute_API.c:
- Remove double initialization
-
-2004-02-04 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_objects.h:
- Add new prototype
-
- * zend_reflection_api.c:
- Fix reflection
-
- * zend_iterators.c:
- Fix warnings
-
-2004-02-04 Zeev Suraski <zeev@zend.com>
-
- * zend_compile.c:
- Fixlet
-
- * zend_compile.c:
- Fix handling of $this in some cases
-
- * zend_compile.c:
- Handle additional cases
-
- * zend_compile.c
- zend_compile.h
- zend_execute.c
- zend_execute.h
- zend_execute_API.c
- zend_language_parser.y:
- Reinstate early-binding for classes.
-
- Note that this is available for downwards compatibility only - and it
- doesn't
- work if you use new features (namely, interfaces). Generally, people
- should
- declare their classes before using them, but we just didn't want hell to
- break
- loose (c)
-
- * zend_opcode.c:
- Optimize
-
- * zend_compile.c:
- - Improve $this assignment detection and generalize some code in
- zend_compile.c
-
- * zend_compile.c:
- -Error out when trying to re-assign $this
-
- * zend_objects_API.c
- zend_objects_API.h:
- The valid bit was necessary after all - restored
-
- * zend_objects_API.c:
- Fixlets
-
- * zend_compile.c
- zend_objects.c:
- - Small fixes
-
- * zend_execute.c:
- - Improve wording
-
- * zend_execute_API.c
- zend_iterators.c
- zend_objects.c
- zend_objects_API.c
- zend_objects_API.h
- zend_reflection_api.c:
- Change destructor implementation (details will follow on internals@)
-
-2004-02-03 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * tests/bug24884.phpt:
- Update tests
-
- * zend_objects.c:
- Nuke unused variable
-
- * zend_compile.c:
- Fix Warning
-
-2004-02-03 Sebastian Bergmann <sb@sebastian-bergmann.de>
-
- * ZEND_CHANGES:
- clone/__clone() related changes.
-
-2004-02-03 Zeev Suraski <zeev@zend.com>
-
- * zend_compile.c:
- Remove unused variable
-
- * zend_objects_API.c
- zend_objects_API.h:
- Remove more garbage - valid bit was not really necessary
-
- * zend_execute_API.c
- zend_object_handlers.c
- zend_object_handlers.h
- zend_objects_API.c
- zend_objects_API.h:
- - Clean garbage (delete was nuked a long time ago)
-
-2004-02-03 Ilia Alshanetsky <ilia@prohost.org>
-
- * zend_execute.c:
- More unneeded code removed.
-
-2004-02-03 Zeev Suraski <zeev@zend.com>
-
- * zend_execute.c
- zend_language_scanner.l:
- Abort on parse error in an include file (patch by Ilia)
-
- * zend_compile.c:
- Remove redundant code
-
- * zend_execute.c:
- Fix try/catch block logic
-
- * zend_compile.c
- zend_objects.c:
- Perform a bitwise copy of the object even when __clone() is defined.
- __clone() is back to not requiring any arguments, as $that is no longer
- needed ($this already contains a copy of the original object, by the time
- we __clone() is executed).
- Calling the parent clone is done using parent::__clone()
-
- * zend_compile.c
- zend_compile.h
- zend_default_classes.c
- zend_execute.c
- zend_execute.h
- zend_execute_API.c
- zend_globals.h
- zend_language_parser.y
- zend_language_scanner.l
- zend_opcode.c:
- Rewrote exception support. Fixes a few limitations and bugs in the old
- implementation, and allows exceptions to 'fire' much earlier than before.
-
- Instructions on how to use the new mechanism will follow on internals@
- shortly...
-
- Note - this (most probably) breaks the current implementation of
- set_exception_handler()
-
-2004-02-02 Zeev Suraski <zeev@zend.com>
-
- * zend_compile.c
- zend_compile.h
- zend_language_parser.y
- zend_language_scanner.l
- zend_objects.c:
- Redesign the clone() feature to fix some fundamental flaws in the previous
- implementation.
-
- Using clone directly is now done using
- $replica = clone $src;
-
- Clone methods must now be declared as follows:
- function __clone($that)
- {
- }
-
- Clone methods in derived classes can call the __clone method of their
- parent
- classes using parent::__clone($that)
-
-2004-01-31 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_reflection_api.c:
- Throw an exception in case a reflection object cannot be found and do not
- override the exception from constructors in static method calls.
-
-2004-01-30 Ilia Alshanetsky <ilia@prohost.org>
-
- * zend_execute.c:
- Apply the same parse error handling to (include|require)_once as the one
- for
- their non-once counterparts.
-
-2004-01-28 Zeev Suraski <zeev@zend.com>
-
- * zend_compile.c:
- Tweak checks to detect some additional cases.
- Reorder checks to make more sense.
-
- * zend_compile.c:
- - Error message fix
- - Prevent inheritance of the same constant from two interfaces
-
- * zend_compile.c:
- Fixlets
-
- * zend_compile.c
- zend_compile.h:
- Prevent classes from implementing interfaces that have the same function
-
- * zend_execute.c:
- Whitespace
-
- * zend_compile.c:
- Code relayout
-
- * zend_execute_API.c:
- Forward-port fix for timeouts under Windows
-
-2004-01-26 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_interfaces.c
- zend_interfaces.h:
- - Export struct zend_user_iterator
- - Ad 'it' to function prefix to prevent naming clashes
- - Export zend_user_it_free_current
-
-2004-01-25 Ilia Alshanetsky <ilia@prohost.org>
-
- * zend_execute.c:
- Fixed bug #26814 (On parse error include included file, terminate
- execution script).
-
-2004-01-25 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_execute.c
- zend_iterators.c
- zend_iterators.h:
- Respect proeprty visibility in foreach
-
- * tests/bug26696.phpt:
- Update test
-
-2004-01-24 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_API.c
- zend_compile.c
- zend_compile.h
- zend_execute.c
- zend_execute_API.c:
- Switch from ZEND_ACC_DYNAMIC to ZEND_ACC_ALLOW_STATIC and disallow calling
- internal non-static methods statically.
-
-2004-01-24 Sebastian Bergmann <sb@sebastian-bergmann.de>
-
- * zend_execute.c
- zend_execute_API.c:
- Change message as proposed by Jon.
-
-2004-01-23 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_API.c
- zend_compile.c
- zend_compile.h
- zend_execute.c
- zend_execute_API.c:
- Simplify detection of methods that must be called dynamic (with object)
-
- * zend_execute.c
- zend_execute_API.c:
- Disallow calling __clone/__construct/__destruct static
- Send an E_STRICT when calling a non static method static
-
- * zend_API.c
- zend_compile.c
- zend_compile.h:
- Disallow static declaration of clone
-
-2004-01-23 Jani Taskinen <jani.taskinen@kolumbus.fi>
-
- * zend_constants.h
- zend_ini.h:
- Silence some compile warnings
-
-2004-01-22 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_default_classes.c:
- Fix internal access to exception properties
-
-2004-01-19 Andi Gutmans <andi@zend.com>
-
- * zend_execute.c
- zend_execute.h:
- - Hopefully fix bug #26696.
- - Please let me know if hell-breaks loose
-
-2004-01-19 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_API.c
- zend_API.h:
- Add zend_get_module_started() to quickly check whether a module is present
- and its MINIT function has been called.
-
-2004-01-18 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_execute.h
- zend_execute_API.c:
- Improove debug capabilities
-
- * zend_reflection_api.c:
- Fix some casing issues
-
-2004-01-17 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_interfaces.c:
-
-
- * zend_interfaces.c:
- Fix inheritance rule for interface Traversable
-
-2004-01-17 Jani Taskinen <jani.taskinen@kolumbus.fi>
-
- * tests/bug26802.phpt:
- - Renamed all *php4* files to *php5*, changed all php4/PHP4 to php5/PHP5
-
-2004-01-17 Ilia Alshanetsky <ilia@prohost.org>
-
- * zend_object_handlers.c
- zend_object_handlers.h:
- Expose zend_std_call_user_call(), needed for implementation of things like
- __call handlers.
-
-2004-01-17 Jani Taskinen <jani.taskinen@kolumbus.fi>
-
- * zend_compile.c
- zend_language_scanner.h
- zend_language_scanner.l:
- Nuke compile warning by using the LANG_SCNG macro instead
-
-2004-01-16 Jani Taskinen <jani.taskinen@kolumbus.fi>
-
- * zend_reflection_api.c:
- - Fixed bug #26640 (__autoload() not invoked by Reflection classes)
-
-
-2004-01-15 Zeev Suraski <zeev@zend.com>
-
- * zend.c:
- Nice patch Christian, but it wasn't at all enabled? :)
-
- Fix bug #26883
-
-2004-01-14 Zeev Suraski <zeev@zend.com>
-
- * zend_compile.c:
- Don't allow interfaces to implement anything
-
-2004-01-14 Andi Gutmans <andi@zend.com>
-
- * zend_operators.h:
- - Remove bogus macros
-
-2004-01-13 Wez Furlong <wez.php@thebrainroom.net>
-
- * zend_ini_parser.y:
- Don't treat strings containing : as potential constant names in
- the .ini parser.
- This fixes Bug #26893
-
-2004-01-12 Andi Gutmans <andi@zend.com>
-
- * zend_compile.c:
- - Return the PHP 4 behavior of not allowing class declerations within
- - class declerations. This happened when declaring a class within a
- - method.
- class A {
- function foo() {
- class B {
- }
- }
- }
-
-2004-01-12 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_API.h:
- Add missing macro
-
-2004-01-11 Wez Furlong <wez.php@thebrainroom.net>
-
- * zend_compile.c
- zend_language_scanner.h
- zend_language_scanner.l:
- TSRMLS fix
-
-2004-01-11 Andi Gutmans <andi@zend.com>
-
- * zend_language_parser.y:
- - Re-allow conditional class declerations. Needless to say that I also
- - think it's not great coding.. Use polymorphism instead :)
-
- * zend_compile.c
- zend_language_scanner.h
- zend_language_scanner.l:
- - This should fix the problem of conditional function decleration on the
- - same line of code not to work. You should re-evaluate your coding style
- - if you really code this way :)
-
-2004-01-10 Zeev Suraski <zeev@zend.com>
-
- * zend_operators.c:
- Remove conflict
-
- * zend_builtin_functions.c
- zend_execute_API.c
- zend_globals.h
- zend_operators.c:
- Added error mask to set_error_handler()
- Patch by Christian Schneider <cschneid@cschneid.com>
-
-2004-01-09 Wez Furlong <wez.php@thebrainroom.net>
-
- * acconfig.h:
- support for building asm in the unix buildsys.
- Also, when ZEND_ACCONFIG_H_NO_C_PROTOS is defined,
- omit the C prototypes from the configuration header
- so that it can be included into asm files.
-
-2004-01-09 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * RFCs/002.txt:
- this one is declined
-
-2004-01-09 Wez Furlong <wez.php@thebrainroom.net>
-
- * zend_object_handlers.h:
- must be extern to avoid problems with some compilers
-
-2004-01-09 Stanislav Malyshev <stas@zend.com>
-
- * tests/bug26077.phpt:
- fix expect
-
- * zend_compile.c:
- Bug #25816 - disallow arrays in class constants
-
- * tests/bug26077.phpt:
- add test
-
- * zend_compile.c
- zend_execute.c:
- Fix Bug #26077 - memory leak when new() result is not assigned
- and no constructor defined
-
-2004-01-08 Jani Taskinen <jani.taskinen@kolumbus.fi>
-
- * acconfig.h
- zend.c
- zend.h
- zend_API.c
- zend_API.h
- zend_alloc.c
- zend_alloc.h
- zend_builtin_functions.c
- zend_builtin_functions.h
- zend_compile.c
- zend_compile.h
- zend_config.nw.h
- zend_config.w32.h
- zend_constants.c
- zend_constants.h
- zend_default_classes.c
- zend_default_classes.h
- zend_dynamic_array.c
- zend_dynamic_array.h
- zend_errors.h
- zend_execute.c
- zend_execute.h
- zend_execute_API.c
- zend_extensions.c
- zend_extensions.h
- zend_fast_cache.h
- zend_globals.h
- zend_globals_macros.h
- zend_hash.c
- zend_hash.h
- zend_highlight.c
- zend_highlight.h
- zend_indent.c
- zend_indent.h
- zend_ini.c
- zend_ini.h
- zend_ini_scanner.h
- zend_interfaces.c
- zend_interfaces.h
- zend_istdiostream.h
- zend_iterators.c
- zend_iterators.h
- zend_language_scanner.h
- zend_list.c
- zend_list.h
- zend_llist.c
- zend_llist.h
- zend_mm.c
- zend_mm.h
- zend_modules.h
- zend_multibyte.c
- zend_multibyte.h
- zend_multiply.h
- zend_object_handlers.c
- zend_object_handlers.h
- zend_objects.c
- zend_objects.h
- zend_objects_API.c
- zend_objects_API.h
- zend_opcode.c
- zend_operators.c
- zend_operators.h
- zend_ptr_stack.c
- zend_ptr_stack.h
- zend_qsort.c
- zend_qsort.h
- zend_reflection_api.c
- zend_reflection_api.h
- zend_sprintf.c
- zend_stack.c
- zend_stack.h
- zend_static_allocator.c
- zend_static_allocator.h
- zend_stream.c
- zend_stream.h
- zend_ts_hash.c
- zend_ts_hash.h
- zend_types.h
- zend_variables.c
- zend_variables.h:
- - Happy new year and PHP 5 for rest of the files too..
-
-2004-01-08 Andi Gutmans <andi@zend.com>
-
- * zend_ini_parser.y
- zend_ini_scanner.l
- zend_language_parser.y
- zend_language_scanner.l:
- - - A belated happy holidays (by two years)
-
-2004-01-07 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_execute.c:
- Reimplement part of Bug #24608 that was reverted too
-
- * zend_execute.c:
- Revert patch that allowed to call sttaic methods via $method()
-
-2004-01-06 Ilia Alshanetsky <ilia@prohost.org>
-
- * zend_mm.c:
- Check if realloc() succeeds or not. (Noticed by Andrey)
-
-2004-01-06 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * tests/bug26802.phpt:
- Update
-
-2004-01-05 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_execute.c
- tests/bug26802.phpt:
- Fixed bug #26802
-
- * tests/bug26802.phpt:
- Fix test
-
- * tests/bug26801.phpt
- tests/bug26802.phpt:
- Add new test
-
- * tests/bug26696.phpt:
- Update test
-
-2004-01-05 Stanislav Malyshev <stas@zend.com>
-
- * zend_API.c:
- Fix bug #26543 - check parent:: and self:: in class names
-
- * zend_execute.c
- zend_object_handlers.c:
- Bug #24608 - fix interaction between __accessors and get_property_ptr
-
-2004-01-03 Derick Rethans <php@derickrethans.nl>
-
- * zend.c
- zend_API.c
- zend_compile.c
- zend_compile.h
- zend_execute.c
- zend_object_handlers.c
- zend_reflection_api.c:
- - Fixed var_export() to show public, protected and private modifiers
- properly.
- - Exported (un)mangle_property_name.
-
-2004-01-02 Andrei Zmievski <andrei@gravitonic.com>
-
- * zend_default_classes.c:
- Do not show exception message if it's empty.
-
-
-2003-12-31 Andrei Zmievski <andrei@gravitonic.com>
-
- * zend_default_classes.c:
- Make default message look better.
-
-2003-12-30 Andi Gutmans <andi@zend.com>
-
- * ZEND_CHANGES:
- - Fix typos
-
-2003-12-30 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * ZEND_CHANGES:
- Update
-
-2003-12-30 Ilia Alshanetsky <ilia@prohost.org>
-
- * tests/bug26696.phpt:
- Added test case for bug #26696.
-
-2003-12-29 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_execute.c:
- Fix (string) conversion
-
- * zend.c:
- Add missing notice
-
- * zend_execute_API.c:
- Fix __autoload() with derived classes
-
-2003-12-28 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_API.c:
- WS
-
- * zend_API.h
- zend_compile.c:
- Fix order of class_entry member initialization (needed for example for DOM)
-
-2003-12-27 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_language_parser.y:
- Fixed bug #26065 (Crash when nesting classes)
-
- * tests/bug26698.phpt:
- Add new test
-
- * zend_objects.c:
- Simplify
-
- * zend_object_handlers.c:
- Fix __tostring() and concatenation
-
-2003-12-25 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_execute.c
- zend_execute.c:
- Fix warning
-
-2003-12-25 Ilia Alshanetsky <ilia@prohost.org>
-
- * zend_highlight.c:
- Fixed Bug #26703 (Certain characters inside strings incorrectly treated as
- keywords). Original patch by vrana@php.net.
-
-2003-12-23 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend.c
- zend_execute_API.c
- zend_globals.h
- tests/bug26697.phpt:
- Fixed bug #26697 (calling class_exists on a nonexistent class in __autoload
- results in segfault).
-
-2003-12-22 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * tests/bug26229.phpt
- tests/bug26695.phpt:
- Add more tests
-
- * tests/bug24884.phpt
- tests/bug26166.phpt:
- Fix tests now that class names are shown in correct casing
-
- * zend_compile.c:
- Preserve class name casing.
-
- * zend_reflection_api.c:
- Fixed bug #26695 (Reflection API does not recognize mixed-case class hints)
-
- * zend_object_handlers.c:
- Fixed bug #26675 (Segfault on ArrayAccess use)
- Update NEWS
-
-2003-12-22 Wez Furlong <wez.php@thebrainroom.net>
-
- * zend_API.c
- zend_API.h
- zend_object_handlers.c
- zend_object_handlers.h:
- export these symbols for use by SPL as a shared extension
-
-2003-12-19 Andi Gutmans <andi@zend.com>
-
- * (php_5_0_0b3RC2)
- zend_language_parser.y:
- - Nuke another rule (thanks to Jan for noticing this)
-
-2003-12-19 Dmitry Stogov <dmitry@zend.com>
-
- * (php_5_0_0b3RC2)
- zend.c:
- Bug #25547 (error_handler and array index with function call) was fixed
- tests/lang/bug25547.phpt
-
-2003-12-19 Andi Gutmans <andi@zend.com>
-
- * zend_language_parser.y:
- - Nuke unused code
-
-2003-12-19 Dmitry Stogov <dmitry@zend.com>
-
- * (php_5_0_0b3RC2)
- zend_execute.c:
- Error reporting on unset string offset was added (Bug #24773
- Zend/tests/bug24773.phpt)
-
- * zend_execute.c:
- Assign_op operators (+=) were fixed for elements of overloaded objects
-
-2003-12-18 Andi Gutmans <andi@zend.com>
-
- * zend_execute.c:
- - Nuke C++ comment
-
- * zend_execute.c:
- - Revert patch 1.566
-
-2003-12-18 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_execute.c
- zend_object_handlers.c
- zend_object_handlers.h:
- Fixed bug #24837 Incorrect behaviour of PPP using foreach.
-
-2003-12-17 Zeev Suraski <zeev@zend.com>
-
- * (php_5_0_0b3RC1)
- zend_execute.c:
- This part of the if was necessary after all.
- Refix bug #22510
-
-2003-12-17 Dmitry Stogov <dmitry@zend.com>
-
- * (php_5_0_0b3RC1)
- zend_execute_API.c:
- -** empty log message ***
-
- * (php_5_0_0b3RC1)
- zend_compile.c:
- Dynamic function call from object's property was fixed
- (See "tests/lang/bug24926.phpt" and "tests/lang/bug25652.phpt")
-
- * zend_execute_API.c:
- Access to globals/autoglobals from class __destructor was fixed.
- (see "tests/lang/bug24908.phpt" and
- "tests/classes/destructor_and_globals.phpt")
-
-2003-12-16 Sebastian Bergmann <sb@sebastian-bergmann.de>
-
- * zend_compile.h
- zend_object_handlers.h
- zend_stream.h:
- Sync: Export externally used functions.
-
-2003-12-16 Stanislav Malyshev <stas@zend.com>
-
- * zend_compile.c:
- export class initialization function
-
- * zend_object_handlers.c:
- export externally used functions
-
- * zend_stream.c:
- export function
-
-2003-12-15 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend.c
- zend_object_handlers.c
- zend_object_handlers.h:
- Reenable __tostring() magic for print,echo,concatenation,function naming...
- but not for other internal things.
-
-2003-12-15 Jani Taskinen <jani.taskinen@kolumbus.fi>
-
- * zend_execute.c:
- ws + cs (no c++ comments in c code)
-
-2003-12-15 Dmitry Stogov <dmitry@zend.com>
-
- * zend_execute.c:
- Bug #24773 was fixed (Zend/tests/bug24773.phpt)
- Assign_op operators (+=) were fixed for elements of overloaded objects
- Memory leaks during accessing ptoperies/elements of overloaded objects
- were fixed
-
- * zend_execute_API.c
- zend_reflection_api.c:
- Memory corruptions were fixed in zend_str_tolower_copy()
-
-2003-12-14 Zeev Suraski <zeev@zend.com>
-
- * zend_compile.c
- zend_compile.h
- zend_execute.c
- zend_execute.h:
- Fix behavior of return-by-reference functions. Remove erroneous warnings,
- add E_STRICT warnings in case you return something by reference that
- you're
- not supposed to (anything that's not a variable, or a return-value of a
- function that returned by reference).
-
- * zend.h
- zend_execute.c
- zend_execute.h:
- Some cleanup
-
-2003-12-13 Moriyoshi Koizumi <moriyoshi@at.wakwak.com>
-
- * zend_operators.c:
- Fixes for POSIX compliancy.
-
-2003-12-12 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend.c:
- Free is needed in non ZTS too
-
- * zend.c:
- Fix memleaks in ZTS mode
-
- * zend.c:
- Fix memleaks
-
-2003-12-12 Ilia Alshanetsky <ilia@prohost.org>
-
- * zend_constants.c:
- Do not copy extra byte.
-
-2003-12-11 Ilia Alshanetsky <ilia@prohost.org>
-
- * zend.h:
- Fixed extra byte allocation for TRUE/FALSE/ZEND_THREAD_SAFE/NULL constants.
-
-2003-12-11 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_execute_API.c:
- Bugfix: #26591 [NEW]: "__autoload threw an exception" during an uncaught
- Exception
-
-2003-12-11 Andi Gutmans <andi@zend.com>
-
- * zend_execute.c:
- - Refix bug #24773
-
-2003-12-11 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_object_handlers.c:
- Handle getter failure and allow to bypass thrown exceptions.
-
- * zend_execute.c:
- read_dimension() handler might return 0, handle this.
-
-2003-12-10 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_execute_API.c:
- Do not double copy the string
-
-2003-12-09 Jani Taskinen <jani.taskinen@kolumbus.fi>
-
- * zend_operators.c
- zend_operators.h:
- - Brought ext/bcmath to the new millennium
-
-2003-12-09 Andi Gutmans <andi@zend.com>
-
- * zend_constants.c:
- - Fix overallocation (thanks to Ilia)
-
-2003-12-08 Derick Rethans <php@derickrethans.nl>
-
- * zend_builtin_functions.c:
- - Make it compile again
-
-2003-12-07 Stanislav Malyshev <stas@zend.com>
-
- * zend_builtin_functions.c:
- Apply Andrey Hristov's patch adding get_declared_interfaces()
-
-2003-12-06 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_compile.c:
- This test is against interfaces not abstract classes.
-
- * zend_default_classes.c:
- Show the exception message again after __toString() magic has been dropped.
-
-2003-12-05 Andi Gutmans <andi@zend.com>
-
- * zend_compile.c
- zend_execute.c:
- - Remove two unneeded convert_to_string() (found by Marcus)
- - Change illegal use of string offset to E_ERROR
-
-2003-12-05 Ilia Alshanetsky <ilia@prohost.org>
-
- * zend_default_classes.c:
- Fixed crash demonstrated with ext/dom/tests/dom003.phpt test case.
-
-2003-12-04 Moriyoshi Koizumi <moriyoshi@at.wakwak.com>
-
- * zend_execute.c:
- Revert crap.
-
- * zend_execute.c:
- Raise error in case dereference is performed on a scalar value.
-
-2003-12-03 Ilia Alshanetsky <ilia@prohost.org>
-
- * tests/bug24773.phpt:
- Test case for bug #24773.
-
-2003-12-03 Moriyoshi Koizumi <moriyoshi@at.wakwak.com>
-
- * zend_execute.c:
- This kind of error should be caught. (suggested by Andi, thanks)
-
- * zend_execute.c:
- Fix bug #24773 (unset()ing string offsets crashes PHP)
-
-2003-12-03 Derick Rethans <php@derickrethans.nl>
-
- * zend_execute.c:
- - Remove newline from error message
-
-2003-12-02 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_object_handlers.c:
- Remove automatic call to __toString() since it is supposed to cause too
- much trouble. See discussion on the mailing list.
-
-2003-12-02 Andi Gutmans <andi@zend.com>
-
- * zend_API.c
- zend_operators.c:
- - Revert the revert of these patches. This overloading can only be used
- - by C extensions such as SimpleXML and *NOT* PHP code. Reasons given
- - on the mailing list and problem with reentrancy inside the opcodes.
-
- * zend_compile.c:
- - Fix for bug #26182
-
- * zend_errors.h:
- - Don't include E_STRICT in E_ALL.
-
-2003-12-02 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_API.h:
- Free the zval container only if it should be freed and was not copied.
-
-2003-12-01 Andi Gutmans <andi@zend.com>
-
- * zend_execute.c:
- - Change to E_STRICT so as not to break existing scripts.
- - Thanks Edin
-
- * zend_builtin_functions.c:
- - Nuke property_exists(). We need to fix isset() and this is already
- - supported in reflection API. In any case, it's best not to add new
- - functions in the general namespace except for keeping engine consistency
- (which would have been true in this case)
-
- * zend_API.c:
- - Revert auto-conversion in parameter API
-
- * zend_operators.c:
- - Don't automatically call __toString() in convert_to_string_ex().
- - use __toString() in your code.
- - Keep the auto-case in make_printable_zval.
-
-2003-11-30 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_default_classes.c:
- Check return value of exception::__tostring()
-
- * tests/bug20240.phpt:
- Fix test
-
-2003-11-29 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_compile.c
- zend_iterators.c:
- Fix memleak
-
-2003-11-29 Ilia Alshanetsky <ilia@prohost.org>
-
- * zend_highlight.c
- zend_language_scanner.l:
- Fixed bug #26463 (Incorrect handling of semicolons after heredoc)
-
-2003-11-29 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_API.h:
- This takes the address of a zval ptr
-
- * zend_API.h:
- Add macros to return values of other zvals.
- This is needed because one cannot use REPLACE_ZVAL_VALUE with
- return_value.
-
-2003-11-29 Ilia Alshanetsky <ilia@prohost.org>
-
- * zend_execute.c:
- Restore original patch for bug #26281.
-
-
-2003-11-29 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_compile.c:
- Revert accidential commit until decision
-
- * zend_compile.c
- zend_default_classes.c:
- Make exception code more robust:
- - Fix error in calculation of trace-string length
- - Allow to overload __strostring() and make it work for uncaught
- exceptions
- - Show exception thrown while displaying exceptions
-
-2003-11-28 Ilia Alshanetsky <ilia@prohost.org>
-
- * zend_API.c:
- Add removed lcname, it is still needed.
-
-2003-11-27 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_API.c:
- Convert objects to string if string is required by newer parameter parsing
- since we do this for older parameter parsing does so too.
-
- * zend_object_handlers.c:
- The macro REPLACE_ZVAL_VALUE cannot be used since we only have zval *
- writeobj. to allow it the api needs to be changed to zval **writeobj.
-
- * zend_builtin_functions.c:
- Add a support function to check for property existance which is different
- from checking a property from being empty/set.
- Update test #26182.
-
-2003-11-24 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_execute.c
- zend_interfaces.c
- zend_interfaces.h
- zend_object_handlers.c
- zend_operators.c
- zend_operators.h:
- Add new interface ArrayAccess to use objects as Arrays
-
-2003-11-24 Andi Gutmans <andi@zend.com>
-
- * zend_constants.c:
- - Fix newly introduced bug which stopped class constants from working.
- - Thanks to Jan Lehnardt for reporting it.
-
-2003-11-24 Sebastian Bergmann <sb@sebastian-bergmann.de>
-
- * RFCs/004.txt:
- No longer needed.
-
-2003-11-24 Andi Gutmans <andi@zend.com>
-
- * zend_API.c
- zend_builtin_functions.c
- zend_compile.c
- zend_compile.h
- zend_constants.c
- zend_execute.c
- zend_execute_API.c
- zend_reflection_api.c:
- - Fix __autoload() to preserve class case.
- - Heads up, this patch might break stuff so please let me know if you
- - bump into any problems.
-
-2003-11-23 Andi Gutmans <andi@zend.com>
-
- * zend_reflection_api.c:
- - Allocation optimizations by Timm Friebe
-
-2003-11-21 Ilia Alshanetsky <ilia@prohost.org>
-
- * zend_execute.c:
- Cleaner patch for bug #26281.
-
-2003-11-19 Ilia Alshanetsky <ilia@prohost.org>
-
- * zend_execute.c
- tests/bug26281.phpt:
- Possible fix for bug #26281 & test case.
-
-2003-11-18 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_API.h:
- Add method alias macro
-
-2003-11-18 Andi Gutmans <andi@zend.com>
-
- * zend.c
- zend_builtin_functions.c
- zend_constants.c
- zend_errors.h
- zend_language_parser.y:
- - Add E_STRICT, to be used to warn purists (like Jani :)
-
-2003-11-18 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_compile.c:
- Backpatch the correct opcode for list(), property overloading needs more
- opcodes (Bugfix #26257).
-
- * zend_interfaces.c:
- Use correct order
-
- * zend_interfaces.c:
- Use correct macro/function
-
-2003-11-17 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_interfaces.c:
- Correct destruction
-
-2003-11-13 Moriyoshi Koizumi <moriyoshi@at.wakwak.com>
-
- * zend_operators.c:
- Bugfix #26156 (REPLACE_ZVAL_VALUE works on uninit stack-based zvals)
-
-2003-11-13 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * ZEND_CHANGES
- zend_interfaces.c:
- IteratorAggregate::getIterator() cannot return anythingy else than objects
-
-2003-11-13 Andi Gutmans <andi@zend.com>
-
- * zend_compile.c:
- - Make sure internal clasess are malloced
-
-2003-11-10 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_iterators.c:
- Don't use zend_class_entry indirection
-
- * zend_builtin_functions.c:
- Bugfix #26010 (Bug on get_object_vars() function)
-
- * zend_object_handlers.c:
- Correct default handlers
-
- * zend_iterators.c:
- Need to update iterators handler table too.
-
- * zend_execute.c
- zend_object_handlers.c:
- Fix those warnings
-
- * zend_compile.c
- zend_compile.h
- zend_execute.c
- zend_object_handlers.c
- zend_object_handlers.h
- zend_objects_API.c:
- Split isset/isempty for object property and object dimension hooking.
-
- * zend_interfaces.c:
- Little iterator improvement: ability to store index in iterator
-
-2003-11-08 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_reflection_api.c:
- Add method reflection_class::implementsInterface()
- Allow string & reflection_class in isSubclassOf()
-
- * zend_reflection_api.c:
- Fix reflection_class::isSubclassOf()
-
- * zend.c
- zend_object_handlers.c
- zend_operators.c
- tests/bug26166.phpt:
- Handle exceptions in casting more gracefully.
- This fixes bug #26166
-
-2003-11-07 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_execute_API.c:
- Make __autoload() faster
-
- * zend_execute.c
- zend_iterators.h:
- Update Iterators: Call next at the correct point in time.
-
- * zend_compile.c:
- Add missing initialization.
-
- * zend_interfaces.h:
- Make these class entries available for inheriting classes
-
-2003-11-06 Ilia Alshanetsky <ilia@prohost.org>
-
- * zend_operators.c:
- Fixed bug #26148 (Print the notice before modifying variable on type
- mismatch).
-
-
- Patch by: morten-bugs dot php dot net at afdelingp dot dk
-
-2003-11-04 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_execute.c
- zend_interfaces.c:
- Prevent some SEGV's when Exceptions are thorown inside iterators.
-
- * zend_builtin_functions.c:
- Removedouble efree call
-
-2003-11-04 Moriyoshi Koizumi <moriyoshi@at.wakwak.com>
-
- * zend_object_handlers.c:
- __tostring() handler should be binary-safe
-
- * tests/bug26010.phpt:
- Fix one more test
-
-2003-11-04 Stanislav Malyshev <stas@zend.com>
-
- * Makefile.am:
- add zend_iterators.c zend_interfaces.c to make
-
-2003-10-31 Moriyoshi Koizumi <moriyoshi@at.wakwak.com>
-
- * tests/bug26010.phpt:
- Add test case for bug #26010
-
-2003-10-30 Stanislav Malyshev <stas@zend.com>
-
- * zend_compile.c:
- make CATCH opcode use "class" T like other opcodes do - via IS_CONST
-
-2003-10-30 Andi Gutmans <andi@zend.com>
-
- * (php_5_0_0b2)
- ZEND_CHANGES:
- - Beta 2
-
-2003-10-29 Moriyoshi Koizumi <moriyoshi@at.wakwak.com>
-
- * zend_operators.h:
- Use pretty macro instead.
-
-2003-10-28 Andi Gutmans <andi@zend.com>
-
- * zend_language_parser.y:
- - Head up! I'm reverting the patch which allows for expressions in constant
- - declerations. Allowing the access of other constants in this code is
- - flawed. We are reverting back to PHP 4's static scalars.
- - Don't worry if you get the following msg when compiling:
- - "zend_language_parser.y contains 3 useless nonterminals and 22 useless
- rules"
- - I didn't nuke the code in case we have some brilliant ideas after beta 2
-
-2003-10-28 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_interfaces.c:
- Give some freedon to c iterators but not in userspace.
-
-2003-10-28 Shane Caraveo <shane@caraveo.com>
-
- * zend_compile.c:
- fix crash in do_implement_interface when compiling
- pear/PHPUnit/Framework/TestCase.php line 63
- while only interface_gets_implemented is the issue in this instance, both
- these vars were unitialized, causing potential other issues
-
-2003-10-25 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_API.c
- zend_API.h:
- Add zend_make_callable() which allows to make zval's callable zval's.
- At the moment this function only converts strings of the form
- class::method
- to an array(class,method).
-
- * zend_default_classes.c
- zend_reflection_api.c:
- This forces a better error message for non working clone calls.
-
- * zend_default_classes.c:
- And use things to throw an exception here
-
- * zend_default_classes.c:
- You shall not clone Exception instances
-
- * zend_reflection_api.c:
- You shall not clone reflection_xx instances
-
- * ZEND_CHANGES
- ZEND_CHANGES:
- Update
-
-2003-10-25 Sebastian Bergmann <sb@sebastian-bergmann.de>
-
- * ZEND_CHANGES:
- Fugbix typo.
-
- * ZEND_CHANGES:
- s/Throwable/Printable: Exception has become an internal class since I
- initially documented interfaces.
-
-2003-10-24 Andi Gutmans <andi@zend.com>
-
- * ZEND_CHANGES:
- - Fix typo
-
-2003-10-24 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_API.c
- zend_execute_API.c:
- Revert accidental commit
-
- * ZEND_CHANGES
- zend_API.c
- zend_execute_API.c:
- Zend/ZEND_CHANGES
-
-2003-10-23 Sebastian Bergmann <sb@sebastian-bergmann.de>
-
- * Zend.dsp
- ZendTS.dsp:
- Add zend_interfaces.{c|h}.
-
-2003-10-22 Ilia Alshanetsky <ilia@prohost.org>
-
- * zend.c:
- Fixed bug #25922 (Crash in error handler when 5th argument is modified).
-
-2003-10-22 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_default_classes.c
- zend_interfaces.c
- zend_interfaces.h:
- Impement userspace iterator interfaces and tests. See tests for details
- on the names.
-
- * zend.h
- zend_API.c
- zend_API.h
- zend_compile.c
- zend_compile.h
- zend_execute.c:
- Expand Interface C API.
- In short: zend_class_entry->interface_gets_implemented() allows to modify
- the class entry of a class when an interface gets implemented.
-
- * zend_default_classes.c:
- The string conversion method should be named __toString()
-
-2003-10-21 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * ZEND_CHANGES:
- Make this clear
-
-2003-10-20 Andi Gutmans <andi@zend.com>
-
- * ZEND_CHANGES:
- - Add comment from Timm
-
-2003-10-20 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * ZEND_CHANGES
- ZEND_CHANGES:
- Update
-
-2003-10-19 Andi Gutmans <andi@zend.com>
-
- * zend_language_parser.y:
- - Nuke const in function parameters. I just can't remember why this exists
- - and it seems no one else remembers either. It has no semantic meaning.
-
-2003-10-18 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend.h
- zend_API.h
- zend_compile.c
- zend_iterators.h:
- Fix class/iterator relationship & handling
-
- * zend_iterators.c:
- Fallback to old behavior until we have a default iterator that respects
- visibility we do the array trick.
-
- * zend_iterators.h:
- Change order: Optional rewind() to end of structure
-
-2003-10-17 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * ZendTS.dsp:
- WS
-
- * zend_reflection_api.c:
- Show if a class/object is iterateable
-
- * ZendTS.dsp
- zend.h
- zend_API.h
- zend_default_classes.c
- zend_execute.c
- zend_iterators.c
- zend_iterators.h:
- Added c-api for iterators
-
- * zend_reflection_api.c:
- Fix showing final/abstract for classes
-
-2003-10-17 Ilia Alshanetsky <ilia@prohost.org>
-
- * zend_ini_parser.y:
- Fixed formatting issue.
-
- * zend_alloc.c:
- Fixed if() condition.
-
-2003-10-15 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_API.c
- zend_API.h:
- Add oo support function zend_class_implements()
-
- * zend_default_classes.c:
- Fix cast function
-
-2003-10-14 Andi Gutmans <andi@zend.com>
-
- * zend_mm.c:
- - Argh, the suffering copy&paste can cause
-
- * zend_alloc.c:
- - Fix compile problem.
-
- * zend_mm.c:
- - Fix the fix by making sure the new block is in the right free list.
-
-2003-10-14 Stanislav Malyshev <stas@zend.com>
-
- * zend_execute_API.c:
- The freed one is a hashtable - may matter if Hashtables are allocated
- differently
-
-2003-10-14 Andi Gutmans <andi@zend.com>
-
- * zend_mm.c:
- - Support merging free block which was created by reallocing to smaller
- - size. This should fix some performance issues. This code is still not
- - thoroughly tested.
-
-2003-10-09 Zeev Suraski <zeev@zend.com>
-
- * zend_compile.c
- zend_execute.c
- zend_language_parser.y:
- Allow foo::$bar()
-
-2003-10-07 Rasmus Lerdorf <rasmus@lerdorf.com>
-
- * Zend.m4:
- MFB bison configure test fix
-
-2003-10-07 Zeev Suraski <zeev@zend.com>
-
- * zend_execute.c:
- Fix bug #17997 (Warning when switch & reference are combined)
-
- * zend_ini_parser.y:
- Fix the fix :)
- Not thoroughly tested, but appears to work fine
-
-2003-10-07 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_ini_parser.y:
- Bugfix #25770 Segfault with PHP and bison 1.875
-
-2003-10-05 Zeev Suraski <zeev@zend.com>
-
- * zend_object_handlers.c:
- Remove unused callback
-
- * zend_execute.c
- zend_object_handlers.c
- zend_object_handlers.h
- zend_objects_API.c:
- Remove redundant callback, simplify API
-
-2003-10-05 Shane Caraveo <shane@caraveo.com>
-
- * (BEFORE_HANDLERS_RESHUFFLE)
- zend_API.h:
- this little piggy broke lots of things...eg. _function_check_flag in
- reflection api.
-
-2003-10-03 Moriyoshi Koizumi <moriyoshi@at.wakwak.com>
-
- * zend_API.c:
- Fixed bug #24766 (strange result array from unpack())
-
- * zend.h:
- Bug #25738 (alloca() related problems on the Darwin platform)
-
- * zend_API.h:
- Ensure lval to have a *boolean* value.
-
-2003-10-03 Jani Taskinen <jani.taskinen@kolumbus.fi>
-
- * Zend.m4:
- Aligned configure help texts.
-
-2003-09-30 Moriyoshi Koizumi <moriyoshi@at.wakwak.com>
-
- * zend_compile.c:
- Remove redundant '\n'
-
-2003-09-26 Hartmut Holzgraefe <hartmut@php-groupies.de>
-
- * zend_alloc.c:
- signed/unsigned compiler warning fixes
-
-2003-09-25 Georg Richter <phpinfo@t-online.de>
-
- * zend_alloc.c:
- fixed compiler warning
- removed dead code
-
- * zend_hash.h:
- changed ulong to long to avoid compiler warnings (comparison between signed
- and unsigned)
-
-2003-09-22 Ilia Alshanetsky <ilia@prohost.org>
-
- * zend.c
- zend_language_scanner.l:
- Added missing format.
-
-2003-09-20 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_reflection_api.c:
- Add public array Reflection_Class::getDefaultProperties()
-
-2003-09-18 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_builtin_functions.c:
- Nuke vars no longer needed
-
- * zend_builtin_functions.c
- zend_reflection_api.c:
- Go with studlyCaps
-
- * zend_reflection_api.c:
- Change tostring() into __toString() to match method name used in casting.
-
- * zend.c
- zend_operators.c:
- Fallback to default behaviour for unsupported object type conversions
-
- * zend_object_handlers.c
- zend_object_handlers.h
- zend_operators.c:
- - Allow partial type conversion support for objects.
- - Add support for object to string conversion from userspace by method
- __toString() and add a test.
-
- * zend_API.c:
- Add missing check
-
-2003-09-17 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_compile.c
- zend_execute.c:
- Show name of missing function as typed
-
- * zend_default_classes.c:
- Use studlyCaps in exception class
-
- * zend_compile.c:
- Go with studlyCaps in error messages/backtrace/reflection output
-
-2003-09-16 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_reflection_api.c:
- - Make it clear whether it is an interface or a class
- - Fix static properties
-
-2003-09-15 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_execute.c:
- Revert - need to look for a better solution
-
- * zend_execute.c:
- Bugfix #25547
-
-2003-09-15 Zeev Suraski <zeev@zend.com>
-
- * zend_operators.c:
- Simplify / fix
-
-2003-09-14 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend.c:
- Bugfix #25335
-
-2003-09-14 Zeev Suraski <zeev@zend.com>
-
- * zend_operators.c:
- Commit 64-bit fixes to the standard operators
- by Ard Biesheuvel (abies@php.net)
-
-2003-09-14 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend.h:
- Bugfix #25528 (by Ard Biesheuvel)
-
-2003-09-13 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_alloc.c:
- Fix warnings
-
-2003-09-11 Stanislav Malyshev <stas@zend.com>
-
- * tests/dtor_scope.phpt:
- add test
-
- * zend_execute_API.c:
- ws
-
- * zend_execute_API.c:
- Use scope from method, not from object
-
-2003-09-11 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_default_classes.c:
- Use type instead of constant
-
-2003-09-08 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_compile.c:
- Fix property inheritance where a derived class inherits a public property
- and owns it as an implicit public property already (noticed by Brad).
-
- * zend.c:
- Fix registering/derigistering of stdClass in ZTS and NON ZTS mode
-
-2003-09-07 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_execute.c:
- Fix foreach() called with non array
-
-2003-09-07 Stanislav Malyshev <stas@zend.com>
-
- * Zend.m4:
- check for mach-o/dyld.h - needed for non-PHP ZE build
-
-2003-09-06 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_default_classes.c:
- Disallow to changing the backtrace
-
- * zend_reflection_api.c:
- Add missing newline if no static methods are available
-
- * zend_reflection_api.c:
- - Internal functions shall be static
- - Fix more nesting
-
- * zend_reflection_api.c:
- Fix logic
-
- * zend_reflection_api.c:
- - Fix CS: {{{ / }}}
- - Fix static reflection_*::export()
- - Add class reflection_object which allows to show dynamic properties
-
- * zend_reflection_api.c:
- Use %s where it makes more sense
-
-2003-09-05 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_reflection_api.c:
- Simplify reflection_property::__constructor() and fix property factory
-
- * zend_reflection_api.c:
- - Don't use resorved words as variable names.
- - Improve several exception messages.
- - Fix Reflection_Property::_construct() / getDeclaringClass()
-
- * zend_reflection_api.c:
- Fix reflection_api::__construct() (noticed by Andrey)
-
- * zend_default_classes.c:
- Provide string casting for exceptions by calling toString()
-
-2003-09-04 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_API.c
- zend_execute.c
- zend_object_handlers.c:
- Tests show updating consts must happen once at runtime (revert
- optimization).
- Add tests for static properties.
-
- * zend_reflection_api.c:
- Add reflection_class::getstaticproerties()
-
-2003-09-03 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_compile.c:
- Partly revert and reintroduce hash table entries for the ctor.
-
- * zend_compile.c:
- Nuke unused variable, too
-
- * zend_compile.c:
- - Inheritance applies to __clone() too.
- - No need to add additional functions for the constructor.
- The handler uses the pointer as intended and doesn't look the the name.
-
- * zend_compile.c:
- Cannot turn a static property into a non static one and vice versa
-
- * zend_API.c
- zend_API.h
- zend_compile.c
- zend_default_classes.c:
- Fix handling of static properties initialized to arrays
-
- * zend_compile.c:
- Add missing error messages when violating static property inheritance
- rules.
-
- * zend_API.c
- zend_compile.c
- zend_execute.c
- zend_object_handlers.c:
- Fix static properties.
-
- * zend_compile.c:
- Allow redeclareing a protected property as public.
-
-2003-09-03 Zeev Suraski <zeev@zend.com>
-
- * zend_compile.c:
- Revert bogus patch
- One must *never* use E_CORE_* error levels!
-
-2003-09-03 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_reflection_api.c:
- Clearly distinguish between Const, Static and Other members.
-
-2003-09-02 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_compile.c:
- Fix error messages
-
- * zend_API.c:
- Allow redeclaring of protected properties as public (for internal classes).
-
- * zend_reflection_api.c:
- Use appropriate function for property name unmangling.
-
- * zend_reflection_api.c:
- Make these static as noticed by Andrey
-
- * zend_execute.c
- zend_object_handlers.c
- zend_objects.c:
- Synch/Unify error messages related to function/method calls
-
- * zend_compile.c:
- Fix error level
-
- * zend_API.c
- zend_compile.c:
- Currently we cannot support static ctor/dtor
-
- * zend_reflection_api.c:
- These are implicit properties as denoted by the flag. Dynamic properties
- only
- exist in one single object and currently reflection api is not capable of
- showing those.
-
-2003-08-31 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_reflection_api.c:
- Don't repeat first const count(consts) time
-
- * zend_reflection_api.c:
- Beautify output
-
- * zend_reflection_api.c:
- Add reflection_parameters, patch by Timm Friebe
-
- * zend_default_classes.c:
- Excluded chars < 32 when displaying string parameters that would obliterate
- output.
-
-2003-08-31 Zeev Suraski <zeev@zend.com>
-
- * zend_arg_defs.c
- zend_builtin_functions.c
- zend_modules.h:
- Attempt at fixing the linkage problem in Win32
-
-2003-08-31 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_execute.c:
- Synch error message with other one to fix tests
-
- * zend_reflection_api.c:
- Check whether we may access tat union
-
- * zend.c:
- Revisited: Replace the non portable code by spprintf
-
- * zend_reflection_api.c:
- Using zend_spprintf should be faster here
-
- * zend.c
- zend.h
- zend_default_classes.c:
- Make vspprintf available as zend utility function. Use it in exception
- output.
-
-2003-08-30 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_default_classes.c:
- Actually fetch the parameter
-
- * zend_default_classes.c
- zend_default_classes.h
- zend_execute.c
- zend_reflection_api.c:
- - Calling abstract methods should be a error for consistency reason.
- - So in reflection_api we use the reflection_exception again.
-
-2003-08-30 Andi Gutmans <andi@zend.com>
-
- * zend_default_classes.c:
- - PLEASE stop commiting ^M's
-
-2003-08-30 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_default_classes.c:
- Even though it is ignored this should be correct
-
- * zend_default_classes.c:
- Add frame numer and finally display stack trace in the message.
-
- * zend_default_classes.c:
- Add exception::traceAsString() and exception::toString()
-
- * zend_reflection_api.c:
- fci.function_table & fci.function_name are not needed since we use
- zend_fcall_info_cache
-
- * zend_reflection_api.c:
- Be precise
-
- * zend_reflection_api.c:
- Actually using fcc would be a good idea
-
- * zend_default_classes.c
- zend_default_classes.h
- zend_execute.c:
- - The compiler can't detect all abstract function calls so we need to
- check.
-
- * zend_default_classes.c:
- Make those final (see comment)
-
-2003-08-29 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_API.c
- zend_API.h:
- - Add zend_merge_properties() which is designed to serve *_fetch_object().
- - Explain drawbacks of object_and_properties_init and
- zend_merge_properties.
-
- * zend_reflection_api.c:
- - Use zend_fcall_info_cache in invoke() to improve speed.
-
-2003-08-29 Zeev Suraski <zeev@zend.com>
-
- * zend_compile.c:
- Fix a problem in implicit public properties and inheritance
-
-2003-08-29 Sascha Schumann <sascha@schumann.cx>
-
- * zend_hash.c:
- improve a number of zend_debug format strings
-
-2003-08-29 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_builtin_functions.c
- zend_builtin_functions.h
- zend_default_classes.c:
- Need to tell zend_fetch_debug_backtrace() whether to skip top function or
- not.
-
-2003-08-28 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_default_classes.c:
- Add public read access to protected
-
- * zend_default_classes.c
- zend_default_classes.h:
- Add zend_throw_exception_ex() which allows to format exception messages.
-
- * zend.c:
- Classe tables work this way
-
- * zend_builtin_functions.c
- zend_builtin_functions.h
- zend_default_classes.c:
- - Split debug_backtrace() into lowlevel c function and php function wrapper
- - Add trace property to default method based on new
- zend_fetch_debug_backtrace
-
-2003-08-28 Sascha Schumann <sascha@schumann.cx>
-
- * zend.h:
- older gccs don't understand attribute((format)) on function pointers
-
- * zend.h:
- ZEND_GCC_VERSION should always be defined to a number so we can use
- simple comparisons all the time.
-
- * zend.h
- zend_alloc.c
- zend_builtin_functions.c
- zend_compile.c
- zend_execute.c:
- Add format attribute to a number of functions
-
- Kill a few warnings
-
- * zend.h
- zend_alloc.h:
- cleanup & centralize ZEND_GCC_VERSION and ZEND_ATTRIBUTE_MALLOC so that
- they can be used by downstream applications
-
- * zend_alloc.h:
- Enable attribute((malloc)) for GCC 2.96
-
- * zend_alloc.h:
- GCC 2 does not know about malloc yet.
-
- * zend_alloc.h:
- provide attribute((malloc)) where appropiate
-
-2003-08-27 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_reflection_api.c:
- Nuke unused variable
-
- * zend_reflection_api.c:
- Fix reflection_class::newInstance()
-
-2003-08-25 Jani Taskinen <sniper@iki.fi>
-
- * zend.h:
- - Fixed bug #25240 (spaces before pre-processor directives)
-
-2003-08-24 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_API.c:
- Add missing check
-
- * zend_API.c:
- Fix memory source of string duplication for non internal properties
-
- * zend_API.c
- zend_API.h
- zend_compile.c
- zend_default_classes.c
- zend_execute_API.c
- zend_variables.c
- zend_variables.h:
- - Provide appropriate way to destroy internal zval's.
- - Allow internal zval's of type string and disallow complex types.
- - Define the default string for extensions at class level instead of ctor.
-
- * zend_API.h
- zend_compile.h
- zend_reflection_api.c:
- Don't identify alias'ed functions
-
-2003-08-24 Zeev Suraski <zeev@zend.com>
-
- * zend_API.c:
- Use ""'s if you want empty strings. We want to crash on errors.
-
- * zend_compile.c:
- Use pemalloc()
-
-2003-08-24 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_API.c:
- Allow NULL, too
-
-2003-08-24 Zeev Suraski <zeev@zend.com>
-
- * zend_API.c:
- Get rid of more ^M's - Marcus, please check your CVS client!
-
- * zend_default_classes.c:
- Get rid of more ^M's
-
- * zend_compile.c:
- line endings fix
-
- * zend_execute.c:
- Never, ever, overwrite the refcount element of a connected zval!
-
-2003-08-24 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_reflection_api.c:
- Add dedicated reflection_exception
-
- * zend_default_classes.c
- zend_default_classes.h:
- Allow to throw instances of classes derived from exception
-
- * zend.c
- zend_default_classes.c
- zend_default_classes.h
- zend_execute.h
- zend_execute_API.c:
- - Provide a unified way to display uncaught exceptions, which shows
- file/line/message info if possible.
- - Add zend_eval_string_ex() to be able to handle exceptions in eval'd
- code.
- - Use above function to fix memleaks in CLI.
-
- * zend_reflection_api.c:
- Make invoke() work
-
- * zend_reflection_api.c:
- zend_parse_parameters 'O' works the way we need here
-
- * zend_reflection_api.c:
- Not needed
-
- * zend_default_classes.c:
- Make use method macros
-
- * zend_API.h:
- One of PPP is needed, too
-
- * zend_reflection_api.c:
- - Add Reflection_Function::isAlias
- - Use ZEND_ME/ZEND_METHOD
- - Fix static entries
-
- * zend_API.h
- zend_compile.h:
- - Add fn_flag ZEND_ACC_ALIAS
- - Unify way of function_entry generation by new macro ZEND_FENTRY
-
- * zend_API.c:
- Fix fn_flags handling
-
- * zend_API.c
- zend_API.h
- zend_default_classes.c:
- Add property read code and use that in default exception class
-
-2003-08-23 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_default_classes.c
- zend_default_classes.h
- zend_reflection_api.c:
- Allow zend_throw_exception() to also set the exception code
-
- * zend_default_classes.c:
- Exception has 4 protected default properties (message,code,file,line).
- They are all initialized at c-level constructor correctly.
-
- * zend_API.c
- zend_API.h
- zend_compile.c
- zend_compile.h:
- Internal classes can now have default properties.
-
- * zend_reflection_api.c:
- Show ctor/dtor information and those don't return anything
-
- * zend_API.c
- zend_compile.c
- zend_compile.h
- zend_execute.c:
- - Flag ctor/dtor methods
- - Use this to prevent memleaks when an exception gets thrown in ctors.
-
- * zend_default_classes.c:
- Make exception code more robust
-
-2003-08-22 Ilia Alshanetsky <ilia@prohost.org>
-
- * zend_builtin_functions.c
- zend_constants.h:
- Replace *magic number* with a much nicer define.
-
- * zend_builtin_functions.c:
- Set 2147483647 as the module number of user defined constants
- Fixed a few bugs and cleaned up get_defined_constants().
-
-2003-08-21 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_default_classes.c
- zend_default_classes.h
- zend_reflection_api.c:
- Add function 'zend_throw_exception(char *message, int duplicate
- TSRMLS_DC);'
- to provide an easy way to throw exceptions for extension developers.
-
- * zend_API.c:
- If ce not given than any object would do
-
- * zend_API.c:
- Paramspec 'O' / zend_parse_method_params(): only if given check the class
- type
-
-2003-08-20 Zeev Suraski <zeev@zend.com>
-
- * zend_alloc.c:
- adhere to silence
-
-2003-08-20 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_alloc.c:
- Fix counting number of leaks
-
-2003-08-19 Wez Furlong <wez.php@thebrainroom.net>
-
- * zend_execute.c:
- fix build
-
-2003-08-18 Wez Furlong <wez.php@thebrainroom.net>
-
- * zend_ini.h:
- linkage for C++
-
-2003-08-18 Zeev Suraski <zeev@zend.com>
-
- * ZendTS.dsp
- zend_execute.c
- zend_execute_locks.h:
- Prevent access to internal engine functionality
-
- * zend.h
- zend_alloc.c
- zend_compile.h
- zend_execute.c:
- - Improve tracking
- - Fix several overloading issues
-
- * zend_API.c
- zend_alloc.h
- zend_hash.c
- zend_hash.h
- zend_ts_hash.c
- zend_ts_hash.c
- zend_ts_hash.h
- zend_ts_hash.h:
- Improve tracking
-
- * zend_compile.c:
- ws
-
-2003-08-17 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_API.h
- zend_builtin_functions.c
- zend_execute.c
- zend_object_handlers.c
- zend_operators.c
- zend_reflection_api.c:
- Fix warnings
-
-2003-08-17 Sascha Schumann <sascha@schumann.cx>
-
- * zend.h:
- One bit fields need to be unsigned, otherwise there is no storage for
- the sign bit
-
- "A signed bit field has a length of 1 bit."
-
- * zend_API.h:
- explicitly cast size_t to zend_uint to avoid warnings on 64 bit platforms.
-
-2003-08-17 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_execute.c:
- Remove unnecessary if
-
- * zend_execute.c:
- Put the code where it belongs - fixes a warning and confusion
-
- * zend_compile.c
- zend_execute.c:
- Implement a TBD: JMP to the end of foreach
-
- * zend_compile.c:
- WS
-
- * zend_API.c:
- - Show class names in error messages when dealing with methods
- - Mark class as abstract if it gets an abstract method
-
-2003-08-16 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_API.c
- zend_API.h
- zend_reflection_api.c:
- Simplify abstract method declaration
-
- * zend_object_handlers.h:
- WS
-
-2003-08-15 Sascha Schumann <sascha@schumann.cx>
-
- * zend_execute.c
- zend_object_handlers.c:
- Restrict scope of inline functions to compile unit
-
- Submitted by: Jason Greene <jason@inetgurus.net>
-
-2003-08-13 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_objects_API.c:
- Add missing entry
-
- * zend_API.c:
- - Show classes in case of methods
- - Using sprintf here was a bad idea
-
-2003-08-12 Zeev Suraski <zeev@zend.com>
-
- * zend_hash.c:
- Remove bogus patch - the number of elements is unrelated
-
-2003-08-12 Zeev Suraski <zeev@zend.com>
-
- * zend_hash.c:
- Remove bogus patch - the number of elements is unrelated
-
-2003-08-12 Zeev Suraski <zeev@zend.com>
-
- * zend_hash.c:
- Remove bogus patch - the number of elements is unrelated
-
-2003-08-12 Zeev Suraski <zeev@zend.com>
-
- * zend_hash.c:
- Remove bogus patch - the number of elements is unrelated
-
-2003-08-12 Zeev Suraski <zeev@zend.com>
-
- * zend_hash.c:
- Remove bogus patch - the number of elements is unrelated
-
-2003-08-11 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_hash.c
- zend_hash.h:
- Bugfix 21918
-
-2003-08-11 Masaki Fujimoto <masaki-f@fides.dti.ne.jp>
-
- * Zend.m4
- flex.skl
- zend_compile.c
- zend_globals.h
- zend_highlight.c
- zend_language_scanner.h
- zend_language_scanner.l
- zend_multibyte.c
- zend_multibyte.h:
- - added script encoding support to Zend Engine 2.
- this enables ZE2 to gracefully parse scripts written in UTF-8 (with
- BOM),
- UTF-16, UTF-32, Shift_JIS, ISO-2022-JP etc... (when configured with
- '--enable-zend-multibyte' and '--enable-mbstring')
-
-2003-08-10 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_compile.c:
- Bugfix #24637 __destruct not called
-
-2003-08-09 Moriyoshi Koizumi <moriyoshi@at.wakwak.com>
-
- * zend_compile.c:
- Fix segfault when a referenced parameter is specified with typehint.
- Result of the node will never be used because verify_instanceof handler
- has
- been eliminated.
-
-2003-08-09 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_objects.c:
- Precise destructor errors
-
-2003-08-07 Moriyoshi Koizumi <moriyoshi@at.wakwak.com>
-
- * tests/bug21478.phpt:
- Add missing right parensis
-
-2003-08-07 Zeev Suraski <zeev@zend.com>
-
- * zend_execute_API.c:
- Clarify use of original_function_state_ptr
-
-2003-08-07 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_execute_API.c:
- - Fix warnings
- - Fix code
-
-2003-08-06 Zeev Suraski <zeev@zend.com>
-
- * zend_execute_API.c:
- clarify :)
-
-2003-08-05 Jani Taskinen <sniper@iki.fi>
-
- * zend_execute_API.c:
- Fix the build
-
-2003-08-05 Zeev Suraski <zeev@zend.com>
-
- * zend_API.h
- zend_execute_API.c
- zend_reflection_api.c:
- Try to put an end to the endless number of call_user_function variants.
- zend_call_function() now takes a structure that should contain all of the
- necessary information. If further information is necessary in the future,
- then we'll be able to add it without having to introduce a new function.
-
- As for caching - the 2nd, optional argument is a struct that can hold all
- of the information that's necessary to invoke the function, including its
- handler, scope and object it operates on (if any). Note that you may only
- use a cache if the arguments you provide to zend_call_function() are
- identical to the ones of the last call, except for the argument and return
- value information.
-
-
- The recently introduced fast_call_user_function() was removed
-
- I fixed most of the places that used fast_call_user_function() to use
- caching
- but there are still some that need to be fixed (XML and reflection)
-
-2003-08-05 Stanislav Malyshev <stas@zend.com>
-
- * tests/bug24699.phpt:
- fix syntax
-
- * zend_execute_API.c:
- remove stack clean - it makes trouble
-
-2003-08-04 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_execute.c:
- Fix ZTS
-
- * zend_execute_API.c:
- Nuke unused variables
-
- * zend_reflection_api.c:
- Add function/method parameter reflection
-
-2003-08-04 Ilia Alshanetsky <ilia@prohost.org>
-
- * zend_execute_API.c
- tests/bug23104.phpt:
- Fixed bug #23104 (hash position of static arrays not being reset)
-
-2003-08-04 Stanislav Malyshev <stas@zend.com>
-
- * zend_execute_API.c:
- oops. forgot function
-
- * zend_execute_API.c:
- fix crash #24842
-
- * zend_compile.c:
- fix leaks: bug #24831
-
- * zend_execute.c:
- use get_obj_zval_ptr
-
- * tests/bug24884.phpt:
- add test
-
- * zend_execute.c:
- Fix #24884 - clone $this
-
-2003-08-04 Zeev Suraski <zeev@zend.com>
-
- * zend_compile.c:
- Simplify code using XOR
-
- * zend.h:
- Add logical XOR, proves to be quite useful lately
-
- * zend_opcode.c:
- This check shouldn't be necessary
-
-2003-08-03 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_opcode.c:
- Fix crash
-
- * zend_compile.c:
- Fix test and add missing initialization
-
-2003-08-03 Zeev Suraski <zeev@zend.com>
-
- * zend_API.c:
- Ensure functions have a valid access level
-
- * zend_API.c:
- Default to public
-
-2003-08-03 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_API.c:
- Not needed, will be copied from ptr->flags later
-
- * zend_builtin_functions.c:
- Add missing arg info
-
-2003-08-03 Moriyoshi Koizumi <moriyoshi@at.wakwak.com>
-
- * tests/bug24635.phpt
- tests/bug24699.phpt:
- Style & WS fixes
-
-2003-08-03 Zeev Suraski <zeev@zend.com>
-
- * (BEFORE_ARG_INFO)
- zend_API.c:
- No need for this initialization - this function initializes all of the
- elements of zend_internal_function
-
- * (BEFORE_ARG_INFO)
- zend_execute.c:
- Clean up. extended_value can only contain either ZEND_UNSET_DIM or
- ZEND_UNSET_OBJ.
-
- * (BEFORE_ARG_INFO)
- zend_compile.c
- zend_compile.h
- zend_execute.c
- zend_execute.h
- zend_execute_API.c:
- Generalize fetch_class
-
-2003-08-02 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_API.c:
- Initialize all struct members: Necessary for reflection
-
- * zend_reflection_api.c:
- Show interfaces
-
-2003-08-02 Wez Furlong <wez.php@thebrainroom.net>
-
- * zend_API.c:
- fix usage of instanceof here too
-
-2003-08-02 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_execute.c:
- Fix warning
-
-2003-08-01 Wez Furlong <wez.php@thebrainroom.net>
-
- * zend_API.c:
- better fix...
-
- * zend_API.c:
- Fix "O" format for zend_parse_parameters
-
-2003-07-31 Zeev Suraski <zeev@zend.com>
-
- * zend_API.c:
- Use instanceof_function()
-
- * zend_compile.c
- zend_execute.c:
- Finish the array overloading patch
-
- * zend_execute.c:
- Cleanup
-
-2003-07-31 Andi Gutmans <andi@zend.com>
-
- * zend_hash.c:
- - Fix logic. It was the wrong way around.
-
-2003-07-30 Andi Gutmans <andi@zend.com>
-
- * zend_execute.c
- zend_hash.c:
- - Fix problem with hash when updating same bucket with data of different
- sizes one after another.
- - Fix number of arguments to read_dimension.
-
-2003-07-30 Zeev Suraski <zeev@zend.com>
-
- * zend_compile.c
- zend_compile.h
- zend_execute.c:
- Get rid of an opcode
-
- * zend_compile.c
- zend_execute.c:
- Support overloading of $foo["bar"] += "baz"
-
- * zend_compile.c
- zend_compile.h
- zend_execute.c
- zend_object_handlers.c
- zend_object_handlers.h:
- Improve array overloading - support unset($foo["bar"])
-
- * zend_compile.h:
- Remove garbage
-
- * zend.c
- zend.h
- zend_API.c
- zend_API.h
- zend_compile.h
- zend_modules.h:
- Add exec_finished() callback for modules - this is the last place where the
- modules may touch the symbol table reliably
-
-2003-07-29 Ilia Alshanetsky <ilia@prohost.org>
-
- * tests/bug22836.phpt:
- Test case for bug #22836.
-
-2003-07-29 Jani Taskinen <sniper@iki.fi>
-
- * zend.c:
- Remove the obfuscation caused by the double "#ifdef ZTS"
-
-2003-07-27 Stanislav Malyshev <stas@zend.com>
-
- * zend_compile.c:
- fix compare
-
- * zend_compile.c:
- use zend_binary_strncasecmp
-
- * zend_execute_API.c:
- change shutdown order so that dtors would coexist with object error
- handlers
-
- * zend_execute.c:
- clean the right one
-
- * zend_execute_API.c:
- make shutdown more granular so in case some dtor goes ape we still
- can shut down cleanly
-
- * zend_compile.c
- zend_execute.c
- zend_objects.c:
- make clone and throw coexist peacefully
-
- * tests/bug24635.phpt
- tests/bug24699.phpt:
- add test
-
- * zend_execute.c:
- fix #24635: clean hash before putting into cache
-
- * zend_language_scanner.l:
- fix crash #24550
-
- * zend_compile.c
- zend_constants.c:
- fix leaks with class constants (bug #24699)
-
- * zend_compile.c:
- make __clone call case insensitive, just as other calls are
-
-2003-07-24 Jani Taskinen <sniper@iki.fi>
-
- * tests/bug19859.phpt
- tests/bug20240.phpt
- tests/bug20242.phpt
- tests/bug21478.phpt
- tests/bug21888.phpt
- tests/bug22725.phpt
- tests/bug24436.phpt:
- cleanup (CS+ws)
-
-2003-07-24 Zeev Suraski <zeev@zend.com>
-
- * tests/bug24436.phpt:
- Fix expectations :)
-
- * zend_execute.c:
- Fix logic and comments in ASSIGN_DIM
-
- * zend_compile.c:
- Fix another HANDLE_NUMERIC bug. Looks like you opened Pandora's box,
- Sterling ;)
-
- * zend_builtin_functions.c:
- Fix each() binary safety for keys
-
- * zend_execute.c:
- Fix assignments to numeric array indices
-
- * zend_compile.c:
- Remove useless code
-
- * zend_compile.c
- zend_compile.h
- zend_execute.c
- zend_language_parser.y:
- Support references in foreach()
- Syntax:
- foreach ($arr as &$val)
- foreach ($arr as $key => &$val)
-
- * zend_execute.c:
- Fix binary safety in foreach() keys (fixes bug #24783)
-
- * zend.c:
- Make print_r() binary safe with keys
-
-2003-07-23 Stanislav Malyshev <stas@zend.com>
-
- * zend.h
- zend_compile.c
- zend_compile.h
- zend_execute.c
- zend_globals.h
- zend_opcode.c:
- Remove namespace leftovers
-
-2003-07-23 Zeev Suraski <zeev@zend.com>
-
- * zend_hash.c
- zend_hash.h:
- Go back to ZE1-like code
-
-2003-07-23 Sebastian Bergmann <sb@sebastian-bergmann.de>
-
- * zend_reflection_api.c:
- Fix segfault. Patch by Timm Friebe <thekid@thekid.de>.
-
-2003-07-22 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_hash.h:
- Fix for the moment
-
-2003-07-22 Zeev Suraski <zeev@zend.com>
-
- * zend_execute.c
- zend_hash.c
- zend_hash.h
- zend_operators.c
- zend_operators.h:
- Improve infrastructure of numeric handling of elements in symbol tables.
-
- When you want to work with a symbol table, and you don't know whether you
- have a numeric ("string that looks like a number") or a string element in
- your hands, use zend_symtable_*() functions, in place of zend_hash_*()
- functions.
-
- * zend_execute.c
- zend_object_handlers.c
- zend_object_handlers.h
- zend_objects_API.c:
- Fix isset()/empty() for non-trivial object elements
- (API change - read_property now accepts an extra element)
- Fixes bug #24436
-
-2003-07-21 Zeev Suraski <zeev@zend.com>
-
- * zend_object_handlers.c:
- Fix bug #24499
-
- * zend_execute.c:
- Revert fix for #24729, and refix
-
-2003-07-21 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_execute.c:
- Go with a better fix for #24729
-
-2003-07-21 George Schlossnagle <george@omniti.com>
-
- * zend_API.h:
- reverted at Andi's request. replaced with more generic wrapper.
-
-2003-07-20 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_execute.c:
- Bugfix #24729 = new ; causes crash when is not set
-
-2003-07-20 George Schlossnagle <george@omniti.com>
-
- * zend_reflection_api.c:
- should nt here
-
-2003-07-20 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_reflection_api.c:
- Fix warnings and whitespace in output
-
- * zend_reflection_api.c:
- Add support for instances in Reflection_Class.
-
-2003-07-20 George Schlossnagle <george@omniti.com>
-
- * zend_reflection_api.c:
- removed references to smart_str, replaced with private string management
- function. When snprintf is integrated into the engine, string_printf
- should be altered to use that.
-
-2003-07-20 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_objects_API.c:
- More informative errors here and these are real core errors
-
- * zend_execute.c:
- Fix uncloneable objetcs
-
-2003-07-20 George Schlossnagle <george@omniti.com>
-
- * zend_reflection_api.c:
- more of Timm's implementation.
-
-2003-07-20 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_hash.c
- zend_hash.h:
- Make it a macro
-
-2003-07-19 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_hash.c:
- This is meant to be used in for(;has_more;next)
-
- * zend_hash.c
- zend_hash.h:
- Add missing function to ease implementations
-
-2003-07-19 Jani Taskinen <sniper@iki.fi>
-
- * zend.h:
- Fix the HPUX alloca fix as suggested by Sascha
-
-2003-07-19 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_objects.c
- zend_objects.h:
- Shuffle code to ease writing clone handlers
-
-2003-07-19 Andi Gutmans <andi@zend.com>
-
- * zend.h:
- - Don't use alloca on HP-UX (Moriyoshi Koizumi <moriyoshi@at.wakwak.com>)
-
-2003-07-16 Zeev Suraski <zeev@zend.com>
-
- * zend_compile.c:
- Fix bug in the verification of interface-function implementation
-
- * zend_compile.c
- zend_compile.h
- zend_execute.c:
- More cleanup for assign-op handling of objects
-
- * zend_alloc.c:
- Fix warning
-
-2003-07-12 Andi Gutmans <andi@zend.com>
-
- * zend_API.c:
- - WS
-
-2003-07-11 Andi Gutmans <andi@zend.com>
-
- * zend_API.c:
- - Add support for Z in zend_parse_parameters(). It will allow the extension
- - to retreive the zval **, thus allowing it to use the convert_to_*_ex()
- - family of functions to do type conversions without effecting the value
- in
- - the engine itself. (Josh Fuhs <fuhs@purdue.edu>)
-
-2003-07-08 Zeev Suraski <zeev@zend.com>
-
- * zend_execute.c:
- initial refactoring for assign-op handling of objects
-
-2003-07-07 Zeev Suraski <zeev@zend.com>
-
- * zend_API.c
- zend_API.h
- zend_compile.c
- zend_compile.h:
- Rework zend_do_declare_property and related code into one code base
-
- * zend_API.c:
- Fix bug
-
- * zend_execute.c
- zend_object_handlers.c
- zend_object_handlers.h
- zend_objects_API.c:
- Add get_dim callback
-
- * zend_execute.c:
- Fix naming convention
-
-2003-07-07 Derick Rethans <d.rethans@jdimedia.nl>
-
- * zend_execute.c:
- - Help Zeev fixing ghosts :)
-
-2003-07-07 Zeev Suraski <zeev@zend.com>
-
- * zend_object_handlers.c
- zend_object_handlers.h:
- whitespace
-
- * zend_objects_API.c:
- Fix & whitespace
-
- * zend_object_handlers.c:
- fixlet
-
- * zend_compile.c
- zend_compile.h
- zend_execute.c
- zend_object_handlers.c
- zend_object_handlers.h:
- Initial support for overloading of array syntax for objects (very initial)
-
-2003-07-06 George Schlossnagle <george@omniti.com>
-
- * zend_API.c
- zend_API.h:
- add convenience functions or adding class properties. Ok'd for commit by
- Andi.
-
-2003-07-04 Andi Gutmans <andi@zend.com>
-
- * zend_alloc.c
- zend_mm.c
- zend_mm.h:
- - Add heap to memory manager. This should improve performance.
- - Enabling it by default so that it gets tested. We should decide before
- beta 2 if we want to revert back to malloc or not.
- - Thanks to Sebastian for benchmarking it
-
-2003-07-04 Sebastian Bergmann <sb@sebastian-bergmann.de>
-
- * zend_reflection_api.c:
- 2 * TSRMLS_FETCH() -> 1 * TSRMLS_DC
-
-2003-07-04 George Schlossnagle <george@omniti.com>
-
- * zend_reflection_api.c:
- ws fix
-
-2003-07-03 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_compile.c:
- Allow final private methods
-
-2003-07-03 George Schlossnagle <george@omniti.com>
-
- * zend_reflection_api.c:
- win build fixes (Rob Richards)
-
- * zend_reflection_api.c:
- can't forget Andrei
-
-2003-07-03 Stanislav Malyshev <stas@zend.com>
-
- * zend_compile.c
- zend_execute.c:
- enable Classname() constructor to be called via parent::__constructor()
-
- * tests/bug19859.phpt:
- add test for Bug #19859
-
- * zend_API.c
- zend_execute_API.c:
- Fix bug #19859 - allow fast_call_user_function to support __call
-
- * zend_builtin_functions.c:
- fix the get_parent_class fix
-
-2003-07-03 George Schlossnagle <george@omniti.com>
-
- * zend_reflection_api.c:
- more of Timm's patches, and mod authors line to give credit where credit is
- due.
-
-2003-07-02 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_objects.c:
- Temporairy solution to overcome shutdown propbelms with objects that have
- hidden destructors.
-
- * zend_objects.c:
- Reorganize this a bit to ensure the object memory is destructed before
- showing the error.
-
- * zend_builtin_functions.c:
- Bug #24399: is_subclass_of(): fix memleak, too
-
-2003-07-02 Zeev Suraski <zeev@zend.com>
-
- * zend_execute.c:
- Throughly fix scoping change. Fixes, among other things, bug #24403
-
-2003-07-02 Andi Gutmans <andi@zend.com>
-
- * zend_compile.c
- zend_globals.h:
- - Nuke CG(in_clone_method)
-
-2003-07-02 Zeev Suraski <zeev@zend.com>
-
- * zend_execute.c:
- Fix for bug #22367.
- Heads up - this will break syntactical compatiblity, return($foo) will
- not work with functions that return references - return $foo should be
- used
- instead. It never worked well before, and caused all sorts of odd bugs.
- It *might* be possible to support this specifically, albeit unlikely
-
-2003-07-02 Sterling Hughes <sterling@bumblebury.com>
-
- * zend_execute_API.c:
- optimize the case where the object is really a class name, as we don't need
- to set EX(object) here.
-
- * zend_execute_API.c:
- Timm Friebe points out that object detection should be done regardless of
- the function pointer
-
-2003-07-02 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_objects.c:
- Finally fix property cloning and fix the tests accordingly.
-
-
-2003-07-02 Sterling Hughes <sterling@bumblebury.com>
-
- * zend_builtin_functions.c:
- Fix bug #24445
-
-2003-07-01 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_objects.c:
- Fix __clone().
-
-
- * tests/bug20240.phpt:
- Use both destructor and shutdown
-
- * zend_execute_API.c:
- small bugfix
-
- * tests/bug24436.php
- tests/bug24436.phpt:
- Rename test to correct extension
-
- * zend_execute.c:
- __clone might not be defined
-
- * zend_execute.c:
- Fix __clone visibility
-
- * zend_object_handlers.c
- zend_object_handlers.h
- zend_objects.c:
- Fix destructor visibility
-
-2003-07-01 Derick Rethans <d.rethans@jdimedia.nl>
-
- * tests/bug24436.php:
- - Added test for bug #24436
-
-2003-07-01 George Schlossnagle <george@omniti.com>
-
- * zend_reflection_api.c:
- Timm Friebe's patches for code celanup and additional functions.
-
-2003-07-01 Jani Taskinen <sniper@iki.fi>
-
- * tests/.cvsignore
- tests/bug21478.phpt
- tests/zend2.php
- tests/zend2.php.txt:
- Missing .cvsignore, broken test, renamed zend2.php -> zend2.php.txt
-
-2003-07-01 Sebastian Bergmann <sb@sebastian-bergmann.de>
-
- * zend_reflection_api.c:
- ZTS fixes.
-
-2003-07-01 George Schlossnagle <george@omniti.com>
-
- * zend_reflection_api.c:
- more incremental changes. add anything that needs a class factory.
-
- * zend_reflection_api.c:
- all the easy parts of Reflection_Class
-
-2003-06-30 Shane Caraveo <shane@caraveo.com>
-
- * zend_operators.h:
- this fixes including this header in a c++ file (vs6)
-
-2003-06-30 Sterling Hughes <sterling@bumblebury.com>
-
- * zend_compile.c:
- nuke "main" as a reserved keyword
-
-2003-06-30 Andi Gutmans <andi@zend.com>
-
- * zend.c
- zend_API.c
- zend_compile.c
- zend_constants.c
- zend_execute.c
- zend_execute_API.c
- zend_mm.c
- zend_opcode.c
- zend_reflection_api.c:
- - ZE coding style requires if ( instead of if(
-
-2003-06-30 Sebastian Bergmann <sb@sebastian-bergmann.de>
-
- * zend_reflection_api.c:
- ZTS fixes. Remove unused local variables.
-
-2003-06-30 George Schlossnagle <george@omniti.com>
-
- * Makefile.am
- Zend.dsp
- ZendTS.dsp
- zend_default_classes.c
- zend_reflection_api.c
- zend_reflection_api.h:
- added support for Reflection_Function, the first part of
- the reflection api
-
-2003-06-30 Sterling Hughes <sterling@bumblebury.com>
-
- * zend_builtin_functions.c:
- move the check down a little so it catches all cases
-
- * zend_builtin_functions.c:
- Fix bug #24399 from an excellent test case by edin
-
-2003-06-30 Zeev Suraski <zeev@zend.com>
-
- * zend_execute.c:
- Semantically it's a refcount increase, not a lock...
-
- * zend_execute.c:
- Fix 'global' implementation (fixes, at least, bug #24396
-
-2003-06-30 Sterling Hughes <sterling@bumblebury.com>
-
- * zend_operators.c:
- revert back the optimization for now.
-
-2003-06-29 Ilia Alshanetsky <ilia@prohost.org>
-
- * zend_object_handlers.c:
- Fixed bug #24279 (__get() crash when no value is returned)
-
-2003-06-29 Sebastian Bergmann <sb@sebastian-bergmann.de>
-
- * ZEND_CHANGES:
- Remove namespace references.
-
-2003-06-29 Sterling Hughes <sterling@bumblebury.com>
-
- * zend_operators.c:
- Very simple, but very effective optimization. Provides a signifigant speed
- improvement to matches done via '=='. This checks that the lengths of two
- strings are equal before performing a memcmp() on them.
-
-2003-06-23 Zeev Suraski <zeev@zend.com>
-
- * zend_execute.c:
- Fix crash :)
-
-2003-06-23 Stanislav Malyshev <stas@zend.com>
-
- * zend_execute.c:
- FIx leak
-
-2003-06-22 Zeev Suraski <zeev@zend.com>
-
- * zend_execute.c
- zend_language_parser.y:
- Fix complex expressions for class names in NEW
-
- * zend_language_parser.y:
- Simplify
-
-2003-06-21 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_language_parser.y:
- WS
-
- * zend_compile.c
- zend_compile.h
- zend_language_parser.y:
- Add final classes
-
-2003-06-16 Stanislav Malyshev <stas@zend.com>
-
- * zend_execute.c:
- no need to init zval - assignment will init
-
- * zend_execute.c:
- Fix bug #22592 - cascading assignments to string offsets
-
- * zend_constants.c:
- support for self:: and parent:: constants
-
- * zend_builtin_functions.c:
- fix lambda function static vars (related to #17115)
-
-2003-06-15 Sebastian Bergmann <sb@sebastian-bergmann.de>
-
- * zend_constants.c:
- Fix ZTS build.
-
-2003-06-15 Stanislav Malyshev <stas@zend.com>
-
- * zend.c:
- Fix bug #23279 - exception handler exits after first function call
-
- * zend_execute_API.c:
- No need to duplicate code - zend_get_constant() knows to
- handle class constants now
-
- * zend_execute_API.c:
- Fix bug #18872 - Improper handling of class constants used as default
- function argument values
-
- * zend_constants.c:
- set ending \0 for string
-
- * zend_compile.c
- zend_constants.c
- zend_language_parser.y:
- Fix bug #23384 - static class::constant constants should now
- work in static & array expressions.
-
- * zend_execute_API.c:
- Fix bug #21800 - initialize opcode handlers in interactive mode
-
-2003-06-14 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_hash.c:
- ecalloc doesn't return NULL
-
- * zend.c:
- Bugfix #24182: va_arg macro error in Zend/zend.c
-
-2003-06-10 Jani Taskinen <sniper@iki.fi>
-
- * zend_multiply.h:
- - Missing $Id$ tag
-
-2003-06-10 James Cox <james@imajes.info>
-
- * acconfig.h
- zend.c
- zend.h
- zend_API.c
- zend_API.h
- zend_alloc.c
- zend_alloc.h
- zend_builtin_functions.c
- zend_builtin_functions.h
- zend_compile.c
- zend_compile.h
- zend_config.nw.h
- zend_config.w32.h
- zend_constants.c
- zend_constants.h
- zend_default_classes.c
- zend_default_classes.h
- zend_dynamic_array.c
- zend_dynamic_array.h
- zend_errors.h
- zend_execute.c
- zend_execute.h
- zend_execute_API.c
- zend_execute_locks.h
- zend_extensions.c
- zend_extensions.h
- zend_fast_cache.h
- zend_globals.h
- zend_globals_macros.h
- zend_hash.c
- zend_hash.h
- zend_highlight.c
- zend_highlight.h
- zend_indent.c
- zend_indent.h
- zend_ini.c
- zend_ini.h
- zend_ini_parser.y
- zend_ini_scanner.h
- zend_ini_scanner.l
- zend_istdiostream.h
- zend_language_parser.y
- zend_language_scanner.h
- zend_language_scanner.l
- zend_list.c
- zend_list.h
- zend_llist.c
- zend_llist.h
- zend_mm.c
- zend_mm.h
- zend_modules.h
- zend_multiply.h
- zend_object_handlers.c
- zend_object_handlers.h
- zend_objects.c
- zend_objects.h
- zend_objects_API.c
- zend_objects_API.h
- zend_opcode.c
- zend_operators.c
- zend_operators.h
- zend_ptr_stack.c
- zend_ptr_stack.h
- zend_qsort.c
- zend_qsort.h
- zend_sprintf.c
- zend_stack.c
- zend_stack.h
- zend_static_allocator.c
- zend_static_allocator.h
- zend_stream.c
- zend_stream.h
- zend_ts_hash.c
- zend_ts_hash.h
- zend_types.h
- zend_variables.c
- zend_variables.h:
- updating license information in the headers.
-
-2003-06-09 Wez Furlong <wez.php@thebrainroom.net>
-
- * zend_execute_API.c:
- Fix for Bug #23951
-
-2003-06-09 Stanislav Malyshev <stas@zend.com>
-
- * zend_execute.c:
- remove NS leftover
-
-2003-06-09 Zeev Suraski <zeev@zend.com>
-
- * zend_compile.c
- zend_compile.h
- zend_language_parser.y:
- Fix bogus implicit declarations of properties (squash bug #23671)
-
-2003-06-09 Stanislav Malyshev <stas@zend.com>
-
- * zend_API.c
- zend_execute_API.c:
- Support 'self' and 'parent' in call_user_func()
-
-2003-06-09 Zeev Suraski <zeev@zend.com>
-
- * zend_execute.c:
- Fix indirect reference calls to bogus function names
-
-2003-06-09 Jani Taskinen <sniper@iki.fi>
-
- * zend_builtin_functions.c:
- ws
-
-2003-06-08 Zeev Suraski <zeev@zend.com>
-
- * zend_object_handlers.c:
- Fix casing issues in access level checks
-
- * zend.c
- zend_compile.c
- zend_compile.h:
- Nicer handling of protected/private members in print_r()
-
- * zend_execute.c:
- Fix handling of object property assignments in switch expressions
- (bug #23925)
-
- * zend_builtin_functions.c:
- Fix set_error_handler()
-
-2003-06-06 Sascha Schumann <sascha@schumann.cx>
-
- * zend_multiply.h:
- mfb #24025 fix
-
-2003-06-04 Stanislav Malyshev <stas@zend.com>
-
- * zend.c:
- fix non-ZTS build
-
-2003-06-04 Sebastian Bergmann <sb@sebastian-bergmann.de>
-
- * zend.c:
- Fix segfault. Again.
-
-2003-06-04 Stanislav Malyshev <stas@zend.com>
-
- * zend.c
- zend.h
- zend_API.c
- zend_API.h
- zend_builtin_functions.c
- zend_object_handlers.c:
- rm namespace leftovers
-
-2003-06-04 Sebastian Bergmann <sb@sebastian-bergmann.de>
-
- * zend.c:
- Fix segfault. #Hopefully not a Voodoo Fix[TM].
-
-2003-06-02 Sebastian Bergmann <sb@sebastian-bergmann.de>
-
- * zend.c
- zend_execute.h:
- Leftover.
-
-2003-06-02 Stanislav Malyshev <stas@zend.com>
-
- * zend.c
- zend.h
- zend_API.c
- zend_API.h
- zend_builtin_functions.c
- zend_compile.c
- zend_compile.h
- zend_constants.c
- zend_execute.c
- zend_execute.h
- zend_execute_API.c
- zend_globals.h
- zend_language_parser.y
- zend_language_scanner.l
- zend_object_handlers.c
- zend_opcode.c:
- MEGA-patch: namespaces are R.I.P.
-
-2003-06-01 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * tests/zend2.php:
- No nested classes
-
- * tests/bug20240.phpt
- tests/bug20242.phpt
- tests/bug21478.phpt
- tests/bug21888.phpt
- tests/bug22725.phpt:
- Add some ZE2 bug tests
-
- * zend_opcode.c:
- Bugfix #23670: implements and extends cause Apache 2 crash
-
- * zend_constants.c:
- Do it correct always
-
- * zend_compile.h:
- Defining it once is enough
-
-2003-05-31 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend.c:
- Fix init shutdown
-
-2003-05-31 Sterling Hughes <sterling@bumblebury.com>
-
- * zend_compile.c
- zend_execute.c:
- revert the function call caching patch until a new solution is decided
- upon.
-
-2003-05-31 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_constants.c:
- Fix constants (noticed by David Brown <dave@codewhore.org>)
-
- * zend_constants.c:
- c->name_len already contains the '\0'
-
-2003-05-30 Stanislav Malyshev <stas@zend.com>
-
- * zend_execute.c:
- fix crash on exceptions when return value of the inside function is used
-
-2003-05-29 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_compile.c
- zend_language_parser.y:
- Fix ~ operator in class constants.
-
- * zend_compile.c
- zend_compile.h
- zend_operators.c:
- Faster interface inheritance & faster inheritance checks
-
- * zend_language_scanner.l:
- CS
-
-2003-05-29 Wez Furlong <wez.php@thebrainroom.net>
-
- * zend_compile.c:
- Fix Bug #23285 (Potential Stack Overflow in zendlex).
-
-2003-05-28 Sterling Hughes <sterling@bumblebury.com>
-
- * zend_alloc.c:
- no reason to do this at runtime
-
- * zend_compile.c
- zend_execute.c:
- Cache function call lookups with loops (store in a temporary variable on
- the
- result opline).
- Assuming lazy concensus on message that GeorgeS sent to the list last week
-
-2003-05-27 Sterling Hughes <sterling@bumblebury.com>
-
- * zend.c
- zend_object_handlers.c
- zend_object_handlers.h
- zend_operators.c:
- Assume lazy consensus regarding the cast_object() patch. *Only*
- implemented
- from a internals perspective. This callback has been very useful for both
- ext/mono and ext/simplexml
-
-2003-05-26 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_language_scanner.l:
- Add pseudo constant __METHOD__ to easily report namespace::class::method.
-
-
-2003-05-23 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_API.h:
- Revert to sizeof()
-
-2003-05-23 Sterling Hughes <sterling@bumblebury.com>
-
- * zend_execute.c
- zend_hash.c
- zend_operators.c
- zend_operators.h:
- move HANDLE_NUMERIC() from the hash table implementation upstream to the
- places that actually need to use it.
-
-2003-05-22 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_execute.c:
- No need to copy here unless implicit_clone is active (noticed by rob)
-
-2003-05-21 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_API.c
- zend_builtin_functions.c
- zend_constants.c
- zend_object_handlers.c:
- Make use optimized string lowering
-
- * zend_operators.c
- zend_operators.h:
- Use same parameter order as strcpy()
-
- * zend_API.c
- zend_execute.c
- zend_execute_API.c
- zend_operators.c
- zend_operators.h:
- Make zend_str_tolower_copy() a copy function (like stccpy).
- Supply a dup version (like estrdup).
- Fix tolower() handling.
-
-2003-05-21 Jani Taskinen <sniper@iki.fi>
-
- * zend_builtin_functions.c:
- Fixed bug #23619 (set_error_handler() registered handler not called for
- object instances). (Jani, waboring@qualys.com)
-
-2003-05-21 Sterling Hughes <sterling@bumblebury.com>
-
- * zend_operators.c:
- optimize loops. The check only exists for integers because that's the more
- common optimization, and you actually lose performance if you check for
- a double too (wierd but true).
-
- * zend_mm.h:
- add some logic to detect zend_mm, which is really only useful when thread
- safety support is enabled.
-
- * zend_mm.h:
- leave this off until its more ready/stable
- php5 actually beats php4.3.* in my benchmarks now
-
-
- * zend_API.c:
- use zend_str_tolower_copy()
-
- * zend_execute.c:
- Bottom drawer optimization to avoid this comparison, but this OP is
- executed
- quite often (all of the fetch_* ops)
-
-2003-05-20 Sterling Hughes <sterling@bumblebury.com>
-
- * zend_operators.c:
- bah humbug, use the pointer based version, which turns out to be an
- instruction
- faster
-
- * zend_operators.c:
- use pointer arithmetic for the normal zend_str_tolower()
-
-2003-05-20 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_execute.c:
- No need to copy the zval unless __clone() is called
-
-2003-05-20 Sterling Hughes <sterling@bumblebury.com>
-
- * zend_operators.c:
- make this faster and sexier
-
- * zend_execute.c:
- use the new zend_str_tolower_copy() function
-
- * zend_operators.c:
- doesn't need to be register
-
- * zend_execute_API.c
- zend_operators.c
- zend_operators.h:
- optimize the lookups by avoiding a copy and then another pass
-
- Naked Dancing Girls should be given to: Myself, Zeev, Marcus,
- and George Schlossnagle (in no particular order)
-
- * zend_API.h
- zend_execute_API.c:
- add fast_call_user_function()
-
-2003-05-20 Hartmut Holzgraefe <hartmut@php-groupies.de>
-
- * zend_API.h
- zend_constants.h
- zend_operators.h:
- C++ compile fixes
-
-2003-05-19 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_execute.c:
- Fix exception memleak
-
-2003-05-19 Stanislav Malyshev <stas@zend.com>
-
- * zend_compile.c
- zend_execute.c:
- fix __clone
-
-2003-05-12 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_execute_API.c:
- One function call is enough
-
-2003-05-08 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_compile.c:
- Inheritance fix
-
-2003-05-07 Edin Kadribasic <edink@proventum.net>
-
- * zend_compile.c:
- Reverting Marcus' incomplete patch which broke the build.
-
-2003-05-07 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_compile.c:
- Inheritance fixes
-
-2003-05-04 Marcus Boerger <marcus.boerger@post.rwth-aachen.de>
-
- * zend_API.c:
- Fix namespace issue: Only CG is needed here
-
- * zend_API.c
- zend_API.h:
- Allow functions in internal namespaces (for example factories)
-
- * zend_execute.c:
- Modify the abstract error message so that it shows up to three methods not
- implemented.
-
- * zend_execute.c:
- Fix warnings
-
- * zend_compile.c:
- Don't inherit twice what is needed only once
-
- * zend.c:
- Fix bug #23162 user_error() crashs if > 1024 bytes (Marcus, Moriyoshi)
-
-2003-05-04 Sterling Hughes <sterling@bumblebury.com>
-
- * zend_default_classes.h:
- semicolon
-
-2003-05-03 Sterling Hughes <sterling@bumblebury.com>
-
- * zend_default_classes.h:
- proto
-
- * zend_default_classes.c:
- add an accessor for the default exception
-
-2003-04-29 Sascha Schumann <sascha@schumann.cx>
-
- * zend_multiply.h:
- Fix the *= operator
-
- Slightly modified patch by Wez Furlong
-
-2003-04-25 Jani Taskinen <sniper@iki.fi>
-
- * zend_language_scanner.l:
- Fixed bug #21820 ("$arr[foo]" generates bogus E_NOTICE, should be E_PARSE)
-
-2003-04-24 Sascha Schumann <sascha@schumann.cx>
-
- * zend_alloc.c
- zend_alloc.h
- zend_multiply.h:
- add safe_emalloc
-
-2003-04-21 Stanislav Malyshev <stas@zend.com>
-
- * zend.c
- zend_API.c
- zend_API.h
- zend_builtin_functions.c
- zend_object_handlers.c:
- Change get_class() so that it returns qualified names for namespaced
- classes.
-
- *HEADS UP*: get_class_name() handler interface is changed, now it should
- allocate the space it returns with emalloc, and the users free it. If
- anyone has problems with it or has suggestions how to do it without this -
- please tell.
-
- Also: make function_exists() understand namespaces.
-
- * zend_execute.c:
- make import * fail if such classes or functions already there
-
-2003-04-20 Sterling Hughes <sterling@bumblebury.com>
-
- * zend_compile.c:
- Add check for final properties
-
-2003-04-20 Stanislav Malyshev <stas@zend.com>
-
- * zend_execute_API.c:
- Check name before '::' so that it would be a namespace in
- zend_lookup_ns_class
-
- * zend_builtin_functions.c:
- refine the set_error_handler fix
-
- * zend_builtin_functions.c:
- Fix for bug #21094 (set_error_handler can not accept methods),
- by Timm Friebe
-
-2003-04-19 Sebastian Bergmann <sb@sebastian-bergmann.de>
-
- * zend.c:
- Corrected patch by Marcus Brger <helly@php.net>.
-
-2003-04-18 Sterling Hughes <sterling@bumblebury.com>
-
- * zend.c
- zend_opcode.c:
- Patch by Marcus Brger to fix some memleaks
-
-2003-04-18 Derick Rethans <d.rethans@jdimedia.nl>
-
- * zend.h
- zend_extensions.c:
- - Revert my symbol fix patch, and merge in Stas' fixes to Zend Engine 1.
-
- * zend.h:
- - MacOSX also prepends the _ before symbols in bundles
-
-2003-04-17 Sebastian Bergmann <sb@sebastian-bergmann.de>
-
- * zend.c:
- Patch by Marcus Brger <helly@php.net>.
-
-2003-04-11 Sebastian Bergmann <sb@sebastian-bergmann.de>
-
- * zend_compile.c
- zend_compile.h:
- Fix warnings.
-
-2003-04-10 Sterling Hughes <sterling@bumblebury.com>
-
- * zend_compile.c:
- satisfy andi's switch fetish ;-)
-
-2003-04-10 Sebastian Bergmann <sb@sebastian-bergmann.de>
-
- * zend_compile.c:
- Fix ZTS build. Fix warning.
-
- * ZEND_CHANGES:
- Document 'const' keyword.
-
-2003-04-10 Sterling Hughes <sterling@bumblebury.com>
-
- * zend_compile.c
- zend_compile.h
- zend_language_parser.y:
- allow expressions within constants, so the following is possible
-
- class foo {
- const a = 1<<0;
- const b = 1<<1;
- const c = a | b;
- }
-
- this makes const a compile-time expression. all other operators are
- unaffected.
-
-2003-04-10 Zeev Suraski <zeev@zend.com>
-
- * zend_language_parser.y
- zend_language_scanner.l:
- Revert Harald's commit
-
-2003-04-10 George Schlossnagle <george@omniti.com>
-
- * zend_language_parser.y:
- One line fix so that it will compile
-
-2003-04-09 Harald Radi <harald.radi+coding.php@nme.at>
-
- * zend_language_parser.y
- zend_language_scanner.l:
- removing the *syntactical sugar* again
-
-
-2003-04-08 Andrei Zmievski <andrei@gravitonic.com>
-
- * zend_builtin_functions.c:
- Switch some functions to use new zend_lookup_ns_class() methods. This
- means that they will accept both simple and fully qualified class names.
-
- * zend_API.c
- zend_API.h:
- Rename zend_register_internal_class_in_ns() to a better, less filling,
- but with the same great taste zend_register_internal_ns_class().
-
- * zend_execute.h
- zend_execute_API.c:
- Add zend_lookup_ns_class() function.
-
- * zend_operators.h:
- Move memnstr into Zend and make an alias for BC in PHP.
-
-2003-04-07 Jani Taskinen <sniper@iki.fi>
-
- * zend_language_scanner.l:
- Fixed bug #23093 (highlight_string() crashed with __FUNCTION__)
-
-2003-04-07 Sterling Hughes <sterling@bumblebury.com>
-
- * zend_compile.h:
- add markers that make this file easy to parse for external sources
-
-2003-04-04 Andrei Zmievski <andrei@gravitonic.com>
-
- * zend_API.h:
- Introduce ZEND_ME() and ZEND_METHOD() macros. Use these for declaring
- class methods to avoid name collisions.
-
-2003-04-04 Stanislav Malyshev <stas@zend.com>
-
- * zend_API.c
- zend_API.h:
- Fix namespace issues
-
-2003-04-03 Andrei Zmievski <andrei@gravitonic.com>
-
- * zend_API.c:
- Patch from Timm Friede for when EG(active_namespace) is NULL initially.
-
- * zend.c
- zend_API.c
- zend_compile.c:
- Initialize all relevant zend_class_entry fields to avoid accidental
- crashes.
-
-2003-04-03 Sebastian Bergmann <sb@sebastian-bergmann.de>
-
- * zend_list.c:
- Leftover.
-
-2003-04-03 Sterling Hughes <sterling@bumblebury.com>
-
- * zend_list.c
- zend_list.h:
- i will not commit before 12:00
- i will not commit before 12:00
- i will not commit before 12:00
- i will not commit before 12:00
- i will not commit before 12:00
- i will not commit before 12:00
- i will not commit before 12:00
- i will not commit before 12:00
- i will not commit before 12:00
- i will not commit before 12:00
- i will not commit before 12:00
- i will not commit before 12:00
- i will not commit before 12:00
- i will not commit before 12:00
- i will not commit before 12:00
- i will not commit before 12:00
- i will not commit before 12:00
- i will not commit before 12:00
- i will not commit before 12:00
- i will not commit before 12:00
-
-2003-04-02 Andrei Zmievski <andrei@gravitonic.com>
-
- * zend_API.c
- zend_API.h:
- - Add zend_register_internal_namespace() API function.
- - Add zend_register_internal_class_in_ns() API function.
-
- * zend_compile.h:
- Simplify.
-
-2003-04-02 Derick Rethans <d.rethans@jdimedia.nl>
-
- * zend_list.c:
- - Fix whitespace
-
-2003-04-02 Sterling Hughes <sterling@bumblebury.com>
-
- * zend_list.c
- zend_list.h:
- add the ability for curl_multi_info to introspect the handles.
-
-
-2003-04-02 Andrei Zmievski <andrei@gravitonic.com>
-
- * zend_compile.c
- zend_compile.h
- zend_globals.h
- zend_language_parser.y
- zend_language_scanner.l:
- Implement a different way to catch documentation comments.
-
- * zend_compile.c
- zend_compile.h
- zend_highlight.c
- zend_language_parser.y
- zend_language_scanner.l:
- Revert portions of the doc comment patch. There should be no parser
- errors now.
-
-2003-04-02 Stanislav Malyshev <stas@zend.com>
-
- * zend_builtin_functions.c
- zend_compile.h
- zend_execute.c:
- allow class_exists() to work with namespaces too.
- add CLASS_IS_NAMESPACE macro
-
- * zend_builtin_functions.c:
- fix typo
-
- * zend_builtin_functions.c:
- fix parameterless get_declared_classes call
-
-2003-04-01 Andrei Zmievski <andrei@gravitonic.com>
-
- * zend_execute.c:
- Stas's patch on zend_execute.c (1.448 -> 1.449) resulted in a bug where
- the namespaced member accesses didn't work. This should hopefully
- correct it.
-
- * zend_builtin_functions.c
- zend_compile.c
- zend_compile.h
- zend_execute.c
- zend_object_handlers.c
- zend_opcode.c:
- Split ZEND_NAMESPACE into user and internal namespaces. Hope this is
- okay with engine folks.
-
-2003-04-01 Stanislav Malyshev <stas@zend.com>
-
- * zend_builtin_functions.c:
- improve namespace name hanfling
-
- * zend_builtin_functions.c:
- fix get_declared_classes()
-
- * zend_language_parser.y
- zend_language_scanner.l:
- Add __NAMESPACE__ auto-constant.
-
- * zend_builtin_functions.c:
- make get_declared_classes() work with namespaces (based on Tal Peer's
- patch)
-
-2003-03-31 Andrei Zmievski <andrei@gravitonic.com>
-
- * zend.h
- zend_compile.c
- zend_compile.h
- zend_globals.h
- zend_language_parser.y
- zend_language_scanner.l
- zend_opcode.c:
- Multi-purpose patch:
- - The fields of zend_namespace were not completely initialized which
- led to a variety of problems.
- - The occurrence of class/interface/namespace definition is now
- captured.
- - Functions/classes/interfaces/namespaces can be preceded by doc
- comments which are stored for use by extensions.
-
-2003-03-31 Stanislav Malyshev <stas@zend.com>
-
- * zend.c:
- Use strncpy instead of sprintf
-
-2003-03-30 Andrei Zmievski <andrei@gravitonic.com>
-
- * zend_language_parser.y:
- Since zend_do_begin_class_member_function_call assumes the previous
- opcode is FETCH_CONSTANT, swap the calls around.
-
-2003-03-30 Sebastian Bergmann <sb@sebastian-bergmann.de>
-
- * zend_execute.c:
- ZTS fix.
-
-2003-03-30 Stanislav Malyshev <stas@zend.com>
-
- * zend.c:
- Try to report class name of the exception
-
- * zend_execute.c:
- Fix namespace switch
-
-2003-03-29 Zeev Suraski <zeev@zend.com>
-
- * zend_compile.c:
- Add missing initialization
-
- * zend_compile.c:
- Fix crash
-
- * zend_API.c
- zend_compile.c
- zend_compile.h:
- Initial support for enforcing prototype of abstract/interface method
- implementations
-
-2003-03-29 Sterling Hughes <sterling@bumblebury.com>
-
- * zend.c:
- remove unused variable
-
-2003-03-27 Stanislav Malyshev <stas@zend.com>
-
- * zend_execute.c:
- fix fetch_class buglet
-
-2003-03-26 Stanislav Malyshev <stas@zend.com>
-
- * zend_execute.c
- zend_language_parser.y:
- Un-nest namespaces - now namespace X { namespace Y {} } is a parse error
- Also refine namespaced includes
-
-2003-03-26 Ilia Alshanetsky <ilia@prohost.org>
-
- * zend_compile.c:
- Fixed bug #22900 (declaration of namespaces with same name results in
- leaks).
-
-2003-03-26 Sebastian Bergmann <sb@sebastian-bergmann.de>
-
- * zend.c
- zend_API.c
- zend_API.h
- zend_builtin_functions.c
- zend_compile.h
- zend_execute.c
- zend_execute_API.c
- zend_opcode.c
- zend_operators.h:
- Eliminate TSRMLS_FETCH() calls in destroy_op_array() and
- zend_get_class_entry().
-
- * zend_API.c
- zend_object_handlers.c
- zend_objects.c
- zend_objects.h:
- Eliminate TSRMLS_FETCH() calls in zend_objects_new() and
- zend_objects_get_address().
-
-2003-03-25 Andi Gutmans <andi@zend.com>
-
- * zend_compile.c:
- - Temporarily fix problem with inheriting from an internal class. This
- might
- - need some rework in the future (thanks to Marcus)
-
-2003-03-24 Stanislav Malyshev <stas@zend.com>
-
- * zend_execute.c:
- Fix {include|require}_once error message - if open
- fails, don't use tream, use original name.
-
-2003-03-23 Andi Gutmans <andi@zend.com>
-
- * zend.c:
- - Fix win32 build
-
-2003-03-23 Stanislav Malyshev <stas@zend.com>
-
- * zend.c:
- resore namespace on shutdown - since some functions use
- EG() and CG() pointers
-
-2003-03-23 Sebastian Bergmann <sb@sebastian-bergmann.de>
-
- * zend_default_classes.c:
- ZTS fix.
-
-2003-03-23 Zeev Suraski <zeev@zend.com>
-
- * zend_compile.c:
- Another fix for implicit public, perhaps it was not such a good idea :I
-
-2003-03-23 Sebastian Bergmann <sb@sebastian-bergmann.de>
-
- * Zend.dsp
- ZendTS.dsp
- zend_default_classes.c:
- Add new files to ZendTS.dsp. Sync list of files in Zend.dsp with
- ZendTS.dsp. ZTS fixes.
-
-2003-03-23 Sterling Hughes <sterling@bumblebury.com>
-
- * zend_default_classes.h:
- DEFAULT_CLASSES_H not DEFAULT_INTERFACES_H
-
- * Makefile.am
- zend.c
- zend_default_classes.c
- zend_default_classes.h:
- add a standard Exception class.
-
-2003-03-22 Shane Caraveo <shane@caraveo.com>
-
- * zend_compile.h:
- export functions needed by cli
-
- * zend_language_scanner.l:
- fix crash in win32 debug build
-
-2003-03-20 Stanislav Malyshev <stas@zend.com>
-
- * Zend.m4:
- Add stdlib.h too - it is needed fot strto{ld}
-
-2003-03-19 Andrei Zmievski <andrei@gravitonic.com>
-
- * zend_compile.c
- zend_compile.h
- zend_globals.h
- zend_highlight.c
- zend_language_parser.y
- zend_language_scanner.l:
- - Keep track of starting/ending line numbers for user functions.
- - Store last parsed doc comment in a compiler global for future use.
-
- * zend_API.c:
- Lowercase the function name when used as key in the function name. The
- original case is still preserved in zend_function structure.
-
-2003-03-18 Zeev Suraski <zeev@zend.com>
-
- * zend_compile.c
- zend_object_handlers.c:
- - Fix situation where a derived class declares a public (or implicit
- public)
- with the same name as a private in the parent
- - Optimize 'static binding' of private properties a bit
-
-2003-03-18 Stig Bakken <ssb@fast.no>
-
- * RFCs/002.txt:
- - email address change
-
-2003-03-17 Stanislav Malyshev <stas@zend.com>
-
- * zend_extensions.c:
- MFZE1
-
-2003-03-17 Jani Taskinen <sniper@iki.fi>
-
- * Makefile.am:
- Added missing zend_mm.c file and renamed zend_object_API.c ->
- zend_objects_API.c
-
-2003-03-13 Andrei Zmievski <andrei@gravitonic.com>
-
- * zend_API.c:
- Fix warning in va_start().
-
-2003-03-12 Andrei Zmievski <andrei@gravitonic.com>
-
- * zend_API.c:
- Initialize the namespace when registering functions.
-
-2003-03-12 Zeev Suraski <zeev@zend.com>
-
- * zend_compile.c:
- Fix a crash bug in the implicit public declaration
-
-2003-03-11 Zeev Suraski <zeev@zend.com>
-
- * zend_execute.c
- zend_object_handlers.c:
- Fix handling of ::func()
-
-2003-03-10 Zeev Suraski <zeev@zend.com>
-
- * zend_compile.c:
- Clean redundant code
-
-2003-03-10 Jani Taskinen <sniper@iki.fi>
-
- * zend_compile.c:
- Fixed some leaks. Patch by Moriyoshi
-
-2003-03-10 Shane Caraveo <shane@caraveo.com>
-
- * zend_config.w32.h:
- fix isinf for win32
-
-2003-03-09 Zeev Suraski <zeev@zend.com>
-
- * zend_language_parser.y:
- Optimize
-
- * zend_compile.c
- zend_compile.h
- zend_language_parser.y:
- Fix handling of ::foo
-
- * zend_compile.c:
- Cleanup
-
-2003-03-09 Andi Gutmans <andi@zend.com>
-
- * zend_language_scanner.l:
- - Nuke junk
-
-2003-03-09 Zeev Suraski <zeev@zend.com>
-
- * zend_compile.c
- zend_compile.h
- zend_language_parser.y:
- Fix parsing rules of namespaces/classes
-
- * zend_language_parser.y:
- Add ability to use ::interface_name in implements
-
- * zend_compile.c:
- Fix :: handling
-
-2003-03-07 Sebastian Bergmann <sb@sebastian-bergmann.de>
-
- * ZEND_CHANGES:
- Dedicated to Greg Beaver <greg@chiaraquartet.net>.
-
- * ZEND_CHANGES:
- Document 'final'.
-
- * ZEND_CHANGES:
- Fix class type hints example.
-
- * ZEND_CHANGES:
- Update 'abstract' section.
-
-2003-03-07 Jani Taskinen <sniper@iki.fi>
-
- * zend_ini.c
- zend_ini.h:
- Renamed OnUpdateInt -> OnUpdateLong to prevent further misunderstandings.
-
- * zend_execute.c:
- Better fix for the memleaks (bug 19943) by Moriyoshi
-
-2003-03-06 Zeev Suraski <zeev@zend.com>
-
- * zend_compile.c
- zend_execute.c:
- Fix warnings
-
- * zend_execute.c:
- Fix error message
-
- * zend_compile.c
- zend_compile.h
- zend_execute.c
- zend_language_parser.y:
- Require abstract classes to be explicitly declared 'abstract', in order to
- avoid making developers traverse the entire class/interface hierarchy
- before they can figure out whether a class is instantiable
- (ok, so it makes sense :)
-
-2003-03-06 Sebastian Bergmann <sb@sebastian-bergmann.de>
-
- * ZEND_CHANGES:
- -german+english+.
-
- * ZEND_CHANGES:
- D some TBDs
-
-2003-03-06 Jani Taskinen <sniper@iki.fi>
-
- * zend_execute.c:
- Fixed bug #19943 (the memleaks)
-
-2003-03-06 Ilia Alshanetsky <ilia@prohost.org>
-
- * zend_highlight.c:
- More cleanup of the zend_strip() function.
- No longer strip __LINE__, since while it may become useless it could break
- code where __LINE__ is passed as a function parameter.
-
- * zend_highlight.c:
- Fixed in zend_strip() that corrupted heredoc.
- Optimized the writing routine by moving from putchar() to fwrite().
- Changed hardcoded opcode # to it's defined name.
-
-2003-03-06 Zeev Suraski <zeev@zend.com>
-
- * zend_compile.c
- zend_compile.h
- zend_execute.c:
- Change opcode name
-
- * zend_compile.c
- zend_compile.h
- zend_execute.c
- zend_language_parser.y:
- Add class type hints
-
-2003-03-05 Zeev Suraski <zeev@zend.com>
-
- * zend_compile.c:
- Fix auto globals
-
- * zend_compile.c
- zend_execute.c
- zend_language_parser.y:
- Implement $obj::static_func()
-
- * zend.h
- zend_builtin_functions.c
- zend_compile.c
- zend_compile.h
- zend_execute.c
- zend_globals.h
- zend_language_parser.y
- zend_language_scanner.l
- zend_opcode.c
- zend_operators.c
- zend_operators.h:
- Add support for interfaces
-
-2003-03-04 Zeev Suraski <zeev@zend.com>
-
- * zend_compile.c
- zend_language_parser.y:
- Remove legacy code
-
- * zend_compile.c:
- Remove redundant code
-
-2003-03-03 Harald Radi <harald.radi+coding.php@nme.at>
-
- * zend_API.c:
- add missing strtolower
-
- * zend_API.c
- zend_API.h:
- commiting zend_disable_class patch for George:
- disabled classes will be replaced by dummy classes
- that print a warning upon instanciation
-
-2003-03-02 Zeev Suraski <zeev@zend.com>
-
- * zend_execute_API.c:
- Fix destructors some more
-
- * zend_compile.c
- zend_compile.h:
- Improve infrastructure
-
- * zend.c
- zend_compile.c
- zend_compile.h:
- Add infrastructure for JIT initialization of auto globals
-
-2003-03-01 Zeev Suraski <zeev@zend.com>
-
- * zend_compile.c:
- Fix mem leak
-
-2003-03-01 Andi Gutmans <andi@zend.com>
-
- * zend_compile.c:
- - Make __construct() have higher priority than class name functions
- - for constructors.
- - Fix problem with the engine allowing final/abstract for the same method.
- - Both patches are by Marcus Brger.
-
-2003-02-27 Rasmus Lerdorf <rasmus@lerdorf.com>
-
- * zend_ini_scanner.l:
- MFB: We know ini file scanning will never be interactive, so speed it up a
- bit. Need a dynamic check for the language scanner.
-
-2003-02-26 Sebastian Bergmann <sb@sebastian-bergmann.de>
-
- * ZEND_CHANGES:
- Syntactic sugar is sweet.
-
-2003-02-25 Zeev Suraski <zeev@zend.com>
-
- * zend_compile.c:
- Get the bits right - final/private fix
-
-2003-02-25 Jani Taskinen <sniper@iki.fi>
-
- * acconfig.h:
- Do not redefine zend_isnan if it is already defined.
-
- * Zend.m4:
- - Fixed bug #14245 ('make install' fails on AIX when using --with-apxs).
-
-2003-02-24 Stanislav Malyshev <stas@zend.com>
-
- * zend_compile.c:
- fix exception handling
-
-2003-02-24 Zeev Suraski <zeev@zend.com>
-
- * zend_compile.c
- zend_compile.h
- zend_language_parser.y
- zend_language_scanner.l:
- Add 'final'
-
-2003-02-24 Sebastian Bergmann <sb@sebastian-bergmann.de>
-
- * ZEND_CHANGES:
- Remove obsolete not on redeclaring protected members.
-
- * ZEND_CHANGES:
- Leftover.
-
- * ZEND_CHANGES:
- Initial documentation of namespace {}.
-
-2003-02-23 Zeev Suraski <zeev@zend.com>
-
- * zend_compile.c:
- Move abstract inheritance logic to the right spot
-
- * zend_compile.c:
- Fixed abstract handling in inheritence
-
-2003-02-20 Wez Furlong <wez.php@thebrainroom.net>
-
- * zend_stream.c:
- -cough*
- Fix another stupid mistake.
-
-2003-02-20 Stanislav Malyshev <stas@zend.com>
-
- * zend_compile.c
- zend_compile.h
- zend_execute.c
- zend_language_parser.y
- zend_opcode.c:
- Allow namespaces to have a number of parts. I.e., now you can do:
- namespace foo {
- function abc() {}
- }
- ...
- namespace foo {
- functio def() {}
- }
-
-2003-02-19 Wez Furlong <wez.php@thebrainroom.net>
-
- * zend_stream.c:
- Fix stupid mistake that only affected interactive mode.
-
-2003-02-18 Rasmus Lerdorf <rasmus@lerdorf.com>
-
- * zend_stream.c:
- fileno() needs a FILE * here, and at least on FreeBSD with gcc-2.95.3
- it is unable to figure out that this is indeed a FILE * and hence it
- won't compile without this cast.
-
-2003-02-18 Zeev Suraski <zeev@zend.com>
-
- * zend.h
- zend_compile.c
- zend_compile.h
- zend_execute.c
- zend_language_scanner.l
- zend_opcode.c:
- Avoid using a C++ reserved word
-
-2003-02-18 Wez Furlong <wez.php@thebrainroom.net>
-
- * ZendTS.dsp
- flex.skl:
- Fixup build for win32
-
- * Makefile.am
- flex.skl
- zend.c
- zend.h
- zend_compile.h
- zend_execute.c
- zend_globals.h
- zend_ini_scanner.l
- zend_language_scanner.h
- zend_language_scanner.l
- zend_stream.c
- zend_stream.h:
- Implement simple stream support in the ZE scanners.
-
-2003-02-17 Zeev Suraski <zeev@zend.com>
-
- * zend_language_parser.y:
- Whitespace & minor renames
-
- * zend_language_parser.y:
- whitespace
-
- * zend_execute.c
- zend_object_handlers.c
- zend_object_handlers.h:
- Improve handling of static member variables
-
- * zend_config.w32.h
- zend_ini_parser.y:
- Improve Win32 build performance
-
-2003-02-16 Zeev Suraski <zeev@zend.com>
-
- * zend_execute.c:
- Fix complex cases of self-assignments (bugs #21600, #22231)
-
- * zend_execute.c:
- Make EG(This) and EG(scope) available to internal methods
-
- * zend_execute.c:
- Revert patches - they weren't ready yet!
-
- * zend.c:
- Fix initialization
-
-2003-02-16 Georg Richter <georg.richter@phpev.de>
-
- * zend_execute.c:
- fixed compiler warning
-
- * zend_execute.c:
- tested patch from Zeev (fixes oo-bug in ext/mysqli)
-
-2003-02-16 Stanislav Malyshev <stas@zend.com>
-
- * zend_compile.c
- zend_language_parser.y:
- add support for ::foo syntax meaning "global one"
-
- * zend_compile.c:
- remove debug prints
-
-2003-02-16 Sebastian Bergmann <sb@sebastian-bergmann.de>
-
- * zend.c
- zend_API.c
- zend_compile.c
- zend_compile.h
- zend_execute.c
- zend_execute_API.c:
- ZTS fixes
-
-2003-02-16 Stanislav Malyshev <stas@zend.com>
-
- * zend_object_handlers.c:
- namespace patch - static variable access
-
- * zend.c
- zend.h
- zend_compile.c
- zend_compile.h
- zend_constants.c
- zend_execute.c
- zend_execute.h
- zend_execute_API.c
- zend_globals.h
- zend_language_parser.y
- zend_language_scanner.l
- zend_opcode.c:
- Namespace patch. Big changes:
- 1. Nested classes are gone.
- 2. New syntax for namespaces:
- namespace foo {
- class X { ... }
- function bar { ... }
- var x = 1;
- const ZZ = 2;
- }
- 3. Namespaced symbol access: $x = new foo::X; - etc.
- For now, namespaces are case insensitive, just like classes.
- Also, there can be no global class and namespace with the same name
- (to avoid ambiguities in :: resolution).
-
-2003-02-15 Ilia Alshanetsky <ilia@prohost.org>
-
- * zend_ini_scanner.l:
- Added feature #19645 (ini parser can now handle quoted multi-line values).
-
-2003-02-14 Thies C. Arntzen <thies@thieso.net>
-
- * zend_execute_API.c:
- init current_execute_data befor we start executing
-
- * Makefile.am:
- ups
-
- * Makefile.am:
- add really nice dump_bt function for debugging in gdb
-
-2003-02-13 Zeev Suraski <zeev@zend.com>
-
- * zend_object_handlers.c:
- Fix error handling in illegal property access
-
-2003-02-13 Harald Radi <harald.radi+coding.php@nme.at>
-
- * zend_language_scanner.l:
- MFB PHP_4_3
-
-2003-02-12 Ilia Alshanetsky <ilia@prohost.org>
-
- * zend_API.c
- zend_API.h:
- Removed zend_get_module(), this function is not used by anything and more
- importantly. it does not work. It tries to find data based on numeric keys
- in hash table using string keys.
-
-2003-02-12 Zeev Suraski <zeev@zend.com>
-
- * zend_compile.c:
- Fix declaration of class members that don't have an explicit access
- modifier
-
-2003-02-11 Zeev Suraski <zeev@zend.com>
-
- * zend_compile.c:
- Fix require() handling - that's an old bug!
-
- * zend_compile.c
- zend_compile.h
- zend_language_parser.y:
- Improve parser handling of 'abstract'
-
-2003-02-10 Zeev Suraski <zeev@zend.com>
-
- * zend_compile.c:
- Fix zend_initialize_class_data()
-
- * zend.c
- zend.h
- zend_API.c
- zend_compile.c
- zend_compile.h:
- Centralize class initialization
-
- * zend_compile.c
- zend_compile.h
- zend_language_parser.y:
- - Treat $this->foo inside class X as an implicit 'public $foo' if X::$foo
- is not explicitly declared
- - Forbid multiple declaration of the same variable
-
- * zend_execute.c:
- whitespace
-
- * zend_API.c
- zend_compile.c:
- Add missing destructors
-
-2003-02-10 Stanislav Malyshev <stas@zend.com>
-
- * zend_object_handlers.c:
- update static constants too
-
-2003-02-10 Zeev Suraski <zeev@zend.com>
-
- * zend_builtin_functions.c:
- Fix get_parent_class()
-
- * zend_object_handlers.c:
- Restore missing check
-
- * zend_execute.c
- zend_execute_API.c:
- Add ability to reference self:: and parent:: in constant initializers
- (bug #21849)
-
- * zend_execute.c:
- Remove redundant code
-
-2003-02-09 Zeev Suraski <zeev@zend.com>
-
- * zend_execute.c:
- Fix the array() problem (and probably some other problems too)
-
-2003-02-08 Georg Richter <georg.richter@phpev.de>
-
- * zend_API.c
- zend_API.h:
- fixed zend_parse_method_param
-
-2003-02-08 Sebastian Bergmann <sb@sebastian-bergmann.de>
-
- * zend_builtin_functions.c:
- zend_config.h (and its Win32 version) is already included by zend.h
-
-2003-02-08 Ilia Alshanetsky <ilia@prohost.org>
-
- * zend_builtin_functions.c:
- The string.h is already available through zend.h, so the manual inclusion
- is not necessary.
-
-2003-02-07 Ilia Alshanetsky <ilia@prohost.org>
-
- * zend_builtin_functions.c:
- Added a check to ensure that string.h is available before trying to use it.
-
- Thanks Andi.
-
- * zend_builtin_functions.c:
- Added missing header.
-
-2003-02-07 Zeev Suraski <zeev@zend.com>
-
- * zend_globals.h
- zend_object_handlers.c:
- Improve PPP handling of properties
-
- * zend_config.w32.h:
- Better fix
-
- * zend_config.w32.h:
- Fix Windows build
-
-2003-02-07 Ilia Alshanetsky <ilia@prohost.org>
-
- * zend_builtin_functions.c:
- Fixed bug #15734 (Added an optional parameter to get_defined_constants(),
- which if passed, will include information regarding who created the
- constant).
-
-2003-02-06 Ilia Alshanetsky <ilia@prohost.org>
-
- * zend_builtin_functions.c:
- Fixed bug #19506 (get_extension_funcs() can now retrieve a list of built-in
- Zend Engine functions, if "zend" is specified as the module name).
- Made get_extension_funcs() on failure.
-
-2003-02-06 Zeev Suraski <zeev@zend.com>
-
- * zend_compile.c:
- Fix the 2nd buglet in the error message :)
-
- * zend_object_handlers.c:
- Fix check
-
- * zend_hash.c
- zend_hash.h:
- Fix prototype (may have caused stack corruption)
-
-2003-02-05 Zeev Suraski <zeev@zend.com>
-
- * zend_execute.c
- zend_object_handlers.c
- zend_object_handlers.h
- zend_objects_API.c:
- - read_property cleanup
- - Implement unset/isset/empty for PPP
-
- * zend.c
- zend.h
- zend_API.c
- zend_compile.c
- zend_execute.c
- zend_object_handlers.c
- zend_object_handlers.h
- zend_opcode.c:
- Rework static class properties - now supports access restrictions
-
- * zend_hash.c
- zend_hash.h:
- Add quick_exists()
-
- * zend_object_handlers.c:
- Add PPP support for arrays
-
- * zend_compile.c:
- Fix buglet in error message
-
-2003-02-04 Zeev Suraski <zeev@zend.com>
-
- * zend_object_handlers.c:
- Missing update
-
- * zend.c
- zend.h
- zend_API.c
- zend_compile.c
- zend_compile.h
- zend_globals.h
- zend_hash.c
- zend_hash.h
- zend_object_handlers.c
- zend_opcode.c
- zend_ts_hash.c
- zend_ts_hash.h:
- Reimplement PPP properties
-
-2003-02-03 Sebastian Bergmann <sb@sebastian-bergmann.de>
-
- * zend_API.h:
- Build fix.
-
-2003-02-02 Harald Radi <harald.radi+coding.php@nme.at>
-
- * zend_API.c
- zend_API.h:
- extend the parameter parsing API by two functions
- for parsing method parameters with automatic
- detection if the function was called as such or as
- a class method (with a valid this ptr).
- if called as a function the first parameter has to be
- the object it is operating on, if called as a method
- this is used.
-
-
-2003-02-02 Zeev Suraski <zeev@zend.com>
-
- * zend.h
- zend_operators.h:
- whitespace
-
- * zend_execute.c
- zend_object_handlers.c
- zend_object_handlers.h:
- Core rearrangements - move Zend Objects specific code to their
- specific implementation file
-
-2003-02-02 Andi Gutmans <andi@zend.com>
-
- * zend_compile.c:
- - Fix warning
-
-2003-02-01 Sebastian Bergmann <sb@sebastian-bergmann.de>
-
- * zend_ini_scanner.l
- zend_language_scanner.l:
- Fix build.
-
-2003-02-01 Jani Taskinen <sniper@iki.fi>
-
- * acconfig.h
- zend.c
- zend.h
- zend_API.c
- zend_API.h
- zend_alloc.c
- zend_alloc.h
- zend_builtin_functions.c
- zend_builtin_functions.h
- zend_compile.c
- zend_compile.h
- zend_config.nw.h
- zend_config.w32.h
- zend_constants.c
- zend_constants.h
- zend_dynamic_array.c
- zend_dynamic_array.h
- zend_errors.h
- zend_execute.c
- zend_execute.h
- zend_execute_API.c
- zend_execute_locks.h
- zend_extensions.c
- zend_extensions.h
- zend_fast_cache.h
- zend_globals.h
- zend_globals_macros.h
- zend_hash.c
- zend_hash.h
- zend_highlight.c
- zend_highlight.h
- zend_indent.c
- zend_indent.h
- zend_ini.c
- zend_ini.h
- zend_ini_parser.y
- zend_ini_scanner.h
- zend_ini_scanner.l
- zend_istdiostream.h
- zend_language_parser.y
- zend_language_scanner.h
- zend_language_scanner.l
- zend_list.c
- zend_list.h
- zend_llist.c
- zend_llist.h
- zend_mm.c
- zend_mm.h
- zend_modules.h
- zend_object_handlers.c
- zend_object_handlers.h
- zend_objects.c
- zend_objects.h
- zend_objects_API.c
- zend_objects_API.h
- zend_opcode.c
- zend_operators.c
- zend_operators.h
- zend_ptr_stack.c
- zend_ptr_stack.h
- zend_qsort.h
- zend_sprintf.c
- zend_stack.c
- zend_stack.h
- zend_static_allocator.c
- zend_static_allocator.h
- zend_ts_hash.c
- zend_ts_hash.h
- zend_types.h
- zend_variables.c
- zend_variables.h:
- - Added some missing CVS $Id$ tags, headers and footers.
-
-2003-01-30 Ilia Alshanetsky <ilia@prohost.org>
-
- * zend_operators.c:
- Fixed compiler warning regarding signed/unsigned int comparisons.
-
-2003-01-30 Harald Radi <harald.radi+coding.php@nme.at>
-
- * zend_ts_hash.c
- zend_ts_hash.h:
- fix non-zts build for wez
-
-2003-01-30 Ilia Alshanetsky <ilia@prohost.org>
-
- * zend_execute_API.c:
- Fix ZTS build.
-
-2003-01-29 Stanislav Malyshev <stas@zend.com>
-
- * zend_compile.h
- zend_execute_API.c
- zend_opcode.c:
- Add additional stage to post-session cleanup.
- We need separate cleanup stage because of the following problem:
- Suppose we destroy class X, which destroys function table,
- and in function table we have function foo() that has static $bar. Now if
- object of class X was assigned to $bar, its destructor will be called and
- will
- fail since X's function table is in mid-destruction.
- So we want first of all to clean up all data and then move to tables
- destruction.
- Note that only run-time accessed data need to be cleaned up, pre-defined
- data can not contain objects and thus are not probelmatic.
-
-2003-01-29 Zeev Suraski <zeev@zend.com>
-
- * zend_execute.c
- zend_object_handlers.c:
- Code rearrangements
-
-2003-01-29 Stanislav Malyshev <stas@zend.com>
-
- * zend_execute_API.c:
- Fix object destructors:
- zend_objects_store_call_destructors is not used anymore, we rely on
- symbol tables cleaners to destroy all objects.
-
- * zend_objects_API.c:
- extra safety
-
- * zend_compile.c:
- fix memory leak
-
-2003-01-29 Zeev Suraski <zeev@zend.com>
-
- * zend_execute.c
- zend_object_handlers.c:
- Fix assignments to $this.
- Fixes the 'make install' problem reported on php-dev
-
-2003-01-28 Zeev Suraski <zeev@zend.com>
-
- * zend_compile.c:
- Fix a ticks related crash
-
- * (PHP_5_0_dev_before_13561_fix)
- zend_execute.c:
- Allow methods in parent classes to call protected methods in derived
- classes
-
-2003-01-27 Stanislav Malyshev <stas@zend.com>
-
- * zend_compile.c
- zend_compile.h
- zend_execute.c:
- Replace MAKE_VAR opcode with special 'data' opcode
- This opcode is not executeable but only holds data for opcodes
- that need more than two arguments (presently only ASSIGN_OBJ and the ilk
- but
- in the future also ASSIGN_DIM)
-
-2003-01-26 Sascha Schumann <sascha@schumann.cx>
-
- * zend_API.c:
- Replace snprintf() call using zend_error's capabilities
-
-2003-01-23 Zeev Suraski <zeev@zend.com>
-
- * zend_execute.c:
- Let the scope propagate to internal functions
-
-2003-01-23 Jani Taskinen <sniper@iki.fi>
-
- * zend_execute_API.c:
- Fixed bug: #14542, register_shutdown_function() timeout problem
-
-2003-01-22 Stanislav Malyshev <stas@zend.com>
-
- * OBJECTS2_HOWTO:
- some small refinements for get_class_*
-
-2003-01-22 Ilia Alshanetsky <ilia@prohost.org>
-
- * zend_execute.c:
- Fixed bug #21814 (Allow booleans to be used as array keys).
-
-2003-01-21 Sterling Hughes <sterling@bumblebury.com>
-
- * zend_objects_API.c:
- fix by phanto to the cloning
-
-2003-01-19 Zeev Suraski <zeev@zend.com>
-
- * Zend.m4:
- relabel
-
-2003-01-19 Stanislav Malyshev <stas@zend.com>
-
- * zend_compile.c:
- Restore for now old statics behaviour (so that indirect $$var references
- would work again). Comprehensive fix will follow later.
-
-2003-01-19 Harald Radi <harald.radi+coding.php@nme.at>
-
- * zend_ini.h
- zend_ini_parser.y
- zend_ini_scanner.l:
- ini patch to allow 'entry[] = value' entries
-
-2003-01-17 Harald Radi <harald.radi+coding.php@nme.at>
-
- * zend_objects.c
- zend_objects.h:
- export zend_objects_destroy_object()
- static inline was meaningless anyways as the function
- was only used as a callback handler and was never
- called directly
-
- * zend_objects_API.c
- zend_objects_API.h:
- make std_object_handlers struct available for shared modules
-
-2003-01-16 Ilia Alshanetsky <ilia@prohost.org>
-
- * zend_execute.c:
- Fixed bug #20933 (isset/empty didn't work when used on string offsets).
-
-2003-01-15 Andi Gutmans <andi@zend.com>
-
- * zend_compile.c:
- - Revert int -> unsigned int change for str.len
-
-2003-01-15 Sascha Schumann <sascha@schumann.cx>
-
- * zend.h:
- Revert commit which turned the lengths of strings into zend_uint.
-
-2003-01-14 Andi Gutmans <andi@zend.com>
-
- * ZEND_CHANGES
- zend_compile.c
- zend_compile.h
- zend_execute.c
- zend_language_parser.y
- zend_language_scanner.l
- zend_operators.c
- zend_operators.h:
- - Change "is" to "instanceof" as it explains better what the operator
- means.
- - "is_a" was also appropriate but ugly.
-
-2003-01-14 Stanislav Malyshev <stas@zend.com>
-
- * zend_API.c:
- fix memory leaks and key size
-
-2003-01-14 Ilia Alshanetsky <ilia@prohost.org>
-
- * zend_ini_parser.y:
- MFZE2
-
-2003-01-14 Stanislav Malyshev <stas@zend.com>
-
- * zend_compile.c:
- fix warning
-
- * zend_API.c
- zend_API.h:
- Make add_property_ functions work via write_property handler
-
- * zend.c
- zend_object_handlers.c:
- ws
-
-2003-01-14 Ilia Alshanetsky <ilia@prohost.org>
-
- * zend_ini_parser.y:
- Reverting previous patch.
-
-2003-01-13 Ilia Alshanetsky <ilia@prohost.org>
-
- * zend_ini_parser.y:
- MFZE2
-
-2003-01-13 Andi Gutmans <andi@zend.com>
-
- * zend_objects_API.c:
- - Don't check if the handle is bogus. We should crash.
-
-2003-01-12 Harald Radi <harald.radi+coding.php@nme.at>
-
- * zend_modules.h:
- fix wrong dereferenciation
-
-2003-01-12 Stanislav Malyshev <stas@zend.com>
-
- * zend_compile.c:
- fix inheritance
-
- * zend_API.h:
- Remove handle_property from here too
-
- * zend.c
- zend.h
- zend_compile.c:
- RIP handle_* functions. ZE2 will use __ handlers instead.
-
- * zend_object_handlers.c:
- Move Z_OBJ_P here.
-
- * zend_operators.h:
- Remove Z_OBJ - it's internal to Zend objects, no generic function except
- those in zend_object_handlers.c should use it.
- Add Z_OBJ_HANDLER macro for easy access to handlers
-
-2003-01-12 Sebastian Bergmann <sb@sebastian-bergmann.de>
-
- * zend.c
- zend.h
- zend_builtin_functions.c:
- ZTS fixes.
-
-2003-01-12 Stanislav Malyshev <stas@zend.com>
-
- * zend_object_handlers.c:
- add get_class_name handler
-
- * zend.c:
- Use generic handlers instead of Z_OBJ
-
-2003-01-12 Harald Radi <harald.radi+coding.php@nme.at>
-
- * zend_modules.h:
-
-
- * zend_ini.h
- zend_ini_entry.h
- zend_modules.h:
- partially revert previous commit and
- change zend_modules.h to include
- a forward declaration to zend_ini_entry
-
- * zend_ini.h
- zend_ini_entry.h
- zend_modules.h:
- added zend_ini_entry to zend_modules_entry as
- discussed with zeev
-
- * zend_builtin_functions.c:
- fix 'use of uninitialized variable' warning
-
-2003-01-12 Stanislav Malyshev <stas@zend.com>
-
- * zend_objects_API.c:
- validate handle
-
-2003-01-12 Zeev Suraski <zeev@zend.com>
-
- * zend.c
- zend_compile.c
- zend_execute.c
- zend_execute_API.c
- zend_globals.h
- zend_ini.c
- zend_ini.h
- zend_variables.c:
- Implemented compatibility mode
- To enable - zend2.implicit_clone = on in php.ini or using ini_set()
-
-2003-01-11 Andi Gutmans <andi@zend.com>
-
- * zend_execute.c:
- - Fix typo and whitespace
-
-2003-01-11 Derick Rethans <d.rethans@jdimedia.nl>
-
- * zend.c
- zend_execute.c
- zend_execute.h
- zend_execute_API.c:
- - Ported the zend_execute_internal hook to ZendEngine2.
-
-2003-01-11 Harald Radi <harald.radi+coding.php@nme.at>
-
- * zend_ts_hash.c:
- freed reader twice instead of writer and reader
-
-2003-01-10 Ilia Alshanetsky <ilia@prohost.org>
-
- * zend_alloc.c:
- MFZE2
-
-2003-01-10 Andrei Zmievski <andrei@gravitonic.com>
-
- * zend_API.c:
- Automatically register constructor, destructor, and clone function when
- class methods are registered.
-
-2003-01-09 Zeev Suraski <zeev@zend.com>
-
- * zend_compile.c:
- Found some more occurences of that elusive bug...
-
- * zend_compile.c:
- Fix one lousy, annoying lurking bug (memory corruption)
- Sebastian - try coWiki again please...
-
- * zend_API.h:
- Unify and make it easy to add code into the broken-string error handler
-
- * zend_language_parser.y:
- Fix writability checks
-
- * zend.c:
- Fix leak
-
-2003-01-08 James Cox <james@imajes.info>
-
- * zend.h:
- cvs is dev not alpha.
-
-2003-01-08 Ilia Alshanetsky <ilia@prohost.org>
-
- * zend_builtin_functions.c:
- MFZE2
-
-2003-01-05 Zeev Suraski <zeev@zend.com>
-
- * zend_compile.c
- zend_globals.h
- zend_language_scanner.l:
- MFZE1 - lineno fix
-
-2003-01-02 Zeev Suraski <zeev@zend.com>
-
- * zend_compile.c
- zend_compile.h
- zend_execute.c:
- Fix incorrect linkage of access-levels, when using private methods
-
-2003-01-01 Zeev Suraski <zeev@zend.com>
-
- * zend_API.c
- zend_operators.h:
- Win32 build fix
-
-2003-01-01 Stanislav Malyshev <stas@zend.com>
-
- * zend_operators.h:
- use handler for Z_OBJPROP
-
-2003-01-01 Zeev Suraski <zeev@zend.com>
-
- * zend_API.c:
- Fix Wez's problem
-
-2002-12-31 Sebastian Bergmann <sb@sebastian-bergmann.de>
-
- * LICENSE
- zend.c
- zend.h
- zend_API.c
- zend_API.h
- zend_alloc.c
- zend_alloc.h
- zend_builtin_functions.c
- zend_builtin_functions.h
- zend_compile.c
- zend_compile.h
- zend_config.nw.h
- zend_config.w32.h
- zend_constants.c
- zend_constants.h
- zend_dynamic_array.c
- zend_dynamic_array.h
- zend_errors.h
- zend_execute.c
- zend_execute.h
- zend_execute_API.c
- zend_extensions.c
- zend_extensions.h
- zend_fast_cache.h
- zend_globals.h
- zend_globals_macros.h
- zend_hash.c
- zend_hash.h
- zend_highlight.c
- zend_highlight.h
- zend_indent.c
- zend_indent.h
- zend_ini.c
- zend_ini.h
- zend_language_scanner.h
- zend_list.c
- zend_list.h
- zend_llist.c
- zend_llist.h
- zend_mm.c
- zend_mm.h
- zend_modules.h
- zend_opcode.c
- zend_operators.c
- zend_operators.h
- zend_ptr_stack.c
- zend_ptr_stack.h
- zend_qsort.c
- zend_qsort.h
- zend_sprintf.c
- zend_stack.c
- zend_stack.h
- zend_static_allocator.c
- zend_static_allocator.h
- zend_ts_hash.c
- zend_ts_hash.h
- zend_types.h
- zend_variables.c
- zend_variables.h:
- Bump year.
-
-2002-12-31 Stanislav Malyshev <stas@zend.com>
-
- * zend_object_handlers.h:
- fix level of indirection
-
-2002-12-30 Andrei Zmievski <andrei@gravitonic.com>
-
- * zend_execute_API.c:
- Adjust the error message.
-
-2002-12-30 Stanislav Malyshev <stas@zend.com>
-
- * zend_object_handlers.h:
- Oops, fix it indeed
-
- * zend_object_handlers.h:
- Better check
-
-2002-12-26 Andrei Zmievski <andrei@gravitonic.com>
-
- * zend_compile.c:
- do_inherit_method_check() is supposed to return 0 or 1, not SUCCESS or
- FAILURE.
-
-2002-12-14 Ilia Alshanetsky <ilia@prohost.org>
-
- * zend_language_scanner.l:
- MFZE2
-
-2002-12-10 Zeev Suraski <zeev@zend.com>
-
- * zend_compile.c:
- Fix check to allow for static+access level modifiers
-
- * zend_compile.c
- zend_compile.h
- zend_language_parser.y:
- - Allow variables to have both 'static' modifier and an access level.
- NOTE: This only works at the syntax level right now (parser). It
- doesn't actually work as of yet - all statics are considered
- public for now
- - Prevent users from putting more restrictions on methods in derived
- classes
- (i.e., you cannot make a public method private in a derived class, etc.)
-
-2002-12-09 Andi Gutmans <andi@zend.com>
-
- * zend_mm.c:
- - Fix a bug which I just introduced.
-
- * zend_mm.c:
- - Fix typo
-
- * zend_mm.c:
- - Improvements
-
- * zend_mm.c
- zend_mm.h:
- - First attempt to improve memory manager during realloc()'s
-
-2002-12-08 Zeev Suraski <zeev@zend.com>
-
- * zend_compile.c:
- Remove comment
-
- * zend_compile.c
- zend_compile.h
- zend_language_parser.y:
- Treat the absence of an access type just as if 'public' was supplied
-
- * zend_compile.c:
- Simplify/fix inheritance checks
-
- * zend_execute.c:
- Support private/protected constructors
-
-2002-12-07 Sebastian Bergmann <sb@sebastian-bergmann.de>
-
- * ZEND_CHANGES:
- Update.
-
-2002-12-07 Zeev Suraski <zeev@zend.com>
-
- * zend_execute.c:
- Fix error messages
-
- * zend_language_parser.y
- zend_language_scanner.l:
- Remove unintentional code
-
-2002-12-07 Andi Gutmans <andi@zend.com>
-
- * zend_compile.c:
- - Dissallow using parent, self and main as class names
-
-2002-12-06 Zeev Suraski <zeev@zend.com>
-
- * zend.c
- zend.h
- zend_API.c
- zend_compile.c
- zend_compile.h
- zend_execute.c
- zend_globals.h
- zend_hash.h
- zend_language_parser.y
- zend_language_scanner.l:
- - Implement public/protected/private methods.
- - Prevent instantiation of classes with abstract methods.
- Based in part on Marcus's patch.
-
-2002-12-01 Andi Gutmans <andi@zend.com>
-
- * zend_alloc.c:
- - Allow enabling of memory cache with zend_mm
-
- * zend.c
- zend.c
- zend.h
- zend.h
- zend_builtin_functions.c
- zend_builtin_functions.c:
- - MFZE1
-
- * zend.c
- zend.h
- zend_builtin_functions.c:
- - Revert as the patch doesn't compile
-
- * zend.c
- zend_API.c
- zend_builtin_functions.c
- zend_compile.c
- zend_execute.c
- zend_execute_API.c
- zend_indent.c
- zend_object_handlers.c
- zend_opcode.c
- zend_operators.c
- zend_operators.h
- zend_variables.c:
- h WHitespace
-
- * zend.c:
- - Initialize constants_updated (by Marcus)
-
- * zend_builtin_functions.c:
- - Nuke use of deprecated macro
-
- * zend_compile.c
- zend_compile.h
- zend_execute.c
- zend_language_parser.y:
- - FN_IS_STATIC -> FN_STATIC
-
- * zend.c:
- - Fix crash
-
- * zend_compile.c
- zend_compile.h:
- - My personal cleanups
-
- * zend_API.c
- zend_API.h
- zend_builtin_functions.c
- zend_compile.c
- zend_compile.h
- zend_execute.c
- zend_execute.h
- zend_language_parser.y
- zend_object_handlers.c:
- - Commit Marcus' cleanup of abstract and static inheritance and improve
- - error messages
-
-2002-11-22 Derick Rethans <d.rethans@jdimedia.nl>
-
- * zend_API.c:
- - Initialize all functions to non-static (patch by Marcus Brger
- <marcus.boerger@t-online.de>.
-
-2002-11-22 Sebastian Bergmann <sb@sebastian-bergmann.de>
-
- * zend_execute.c:
- Show class name as well. Patch by Marcus Brger.
-
- * zend_execute.c:
- Show the name of the abstract method in the error.
-
- * zend_compile.h:
- Fix prototype.
-
-2002-11-20 Derick Rethans <d.rethans@jdimedia.nl>
-
- * zend_builtin_functions.c:
- - MFZE1: Disable leak() and crash() when not using debug mode
-
-2002-11-20 Andi Gutmans <andi@zend.com>
-
- * ZEND_CHANGES:
- - Add abstract methods
-
- * zend_compile.c
- zend_compile.h
- zend_execute.c
- zend_language_parser.y
- zend_language_scanner.l:
- - Fix build (thanks Marcus)
- - Implement abstract methods, syntax:
- - abstract function foo($vars);
- - I don't see any reason why modifiers such as static/public need to be
- - used with abstract. PHP is weakly typed and there would be no meaning to
- - this anyway. People who want a strictly typed compiled language are
- - looking in the wrong place.
-
-2002-11-19 Zeev Suraski <zeev@zend.com>
-
- * zend.c
- zend.h
- zend_builtin_functions.c
- zend_execute.c
- zend_execute_API.c:
- MFZE1 - error_reporting fix
-
-2002-11-18 Andi Gutmans <andi@zend.com>
-
- * zend_language_scanner.l:
- - MFZE1
-
-2002-11-17 Stanislav Malyshev <stas@zend.com>
-
- * zend_execute.c:
- fix the leak
-
-2002-11-16 Andi Gutmans <andi@zend.com>
-
- * zend_language_scanner.l
- zend_language_scanner.l:
- - MFZE1
-
- * Zend.m4
- configure.in:
- - MFZE1
-
- * zend_hash.c:
- - Commit fix for bug #19566 (I think it's by Marcus :)
-
-2002-11-14 Andrei Zmievski <andrei@gravitonic.com>
-
- * zend_llist.h:
- MFZE1
-
-2002-11-13 Stanislav Malyshev <stas@zend.com>
-
- * zend_execute.c:
- semi-fix string offsets crash - now it doesn't crash, but still leaks
-
- * zend_object_handlers.c:
- fix static
-
-2002-11-11 Andi Gutmans <andi@zend.com>
-
- * ZEND_CHANGES:
- - Update with statics
-
-2002-11-11 Sebastian Bergmann <sb@sebastian-bergmann.de>
-
- * zend_execute.c:
- Fugbix typo.
-
-2002-11-11 Ilia Alshanetsky <ilia@prohost.org>
-
- * zend.h:
- MFZE1
-
-2002-11-10 Andi Gutmans <andi@zend.com>
-
- * zend_compile.c:
- - MFZE1
-
-2002-11-10 Stanislav Malyshev <stas@zend.com>
-
- * zend_compile.c
- zend_compile.h
- zend_language_parser.y:
- fix statics - make it behave like $this (fetch type "static")
- Side effect: indirect references to statics won't work.
-
-2002-11-06 Sebastian Bergmann <sb@sebastian-bergmann.de>
-
- * zend_execute.c:
- Fix ZTS build.
-
-2002-11-06 Stanislav Malyshev <stas@zend.com>
-
- * zend_execute.c:
- fix zend_assign_to_object_op
-
-2002-11-05 Ilia Alshanetsky <ilia@prohost.org>
-
- * zend_language_scanner.l:
- MFZE1
-
-2002-11-05 Andi Gutmans <andi@zend.com>
-
- * zend_compile.h:
- - Shift around zend_op members
-
- * ZEND_CHANGES:
- - A couple of updates
-
- * zend_compile.c
- zend_compile.h
- zend_execute.c
- zend_language_parser.y:
- - Add support for static methods. Basically methods which are defined as
- - static don't have $this. That's the whole difference.
-
- * tests/zend2.php:
- - $clone -> $that
-
- * zend_execute_API.c:
- - Fix bug introduced with type change of free_op1/2
-
- * zend_language_parser.y
- zend_language_scanner.l:
- - ATTENTION: Finally nuke old_function and cfunction. I think it is time
- - to get rid of these BC notations. This is from the days of the move from
- - PHP/FI 2 -> PHP 3
-
-2002-11-05 Ilia Alshanetsky <ilia@prohost.org>
-
- * zend_hash.c:
- Revert of previous patch.
-
-2002-11-05 Andi Gutmans <andi@zend.com>
-
- * zend_compile.c
- zend_objects.c:
- - Change the automatically created variable $clone in __clone() to
- - $that as discussed at the PHP Conference. If there are any objections
- - alternative names please let me know. The reason for changing it from
- - $clone is because $clone sounds as if it's the newly cloned object and
- - not the old one.
-
-2002-11-05 Stanislav Malyshev <stas@zend.com>
-
- * zend_compile.c
- zend_compile.h:
- avoid using 'class' in exported functions - it annoys c++
-
-2002-11-05 Stig Bakken <ssb@fast.no>
-
- * zend.c:
- Fixed some special cases that were crashing for the exception default
- handler.
-
-2002-11-04 Ilia Alshanetsky <ilia@prohost.org>
-
- * zend_compile.c:
- Silence compiler warnings.
-
- * zend_hash.c:
- If ordered is not set a random compiler assigned value of *p2 would be
- used,
- this patch fixes the problem by initializing *p2 to NULL.
-
- * zend_operators.c:
- Silence compile warning, ctype.h is needed for tolower() function.
-
- * zend_language_scanner.l:
- MFZE1
-
-2002-11-02 Derick Rethans <d.rethans@jdimedia.nl>
-
- * zend_language_scanner.l:
- - Fix segfault when __CLASS__ was used outside a class definition
-
- * zend.c:
- - MFZE1
-
-2002-11-02 Ilia Alshanetsky <ilia@prohost.org>
-
- * zend_language_scanner.l:
- MFZE1 (20214).
-
-2002-11-01 Andi Gutmans <andi@zend.com>
-
- * zend_execute.c: - Fix unset($this->foo)
-
-2002-10-24 Andi Gutmans <andi@zend.com>
-
- * zend_execute.c
- zend_opcode.c: - Also tune jmpz_ex
-
- * zend_execute.c
- zend_opcode.c
- zend_compile.h:
- - Improve performance of part of the jmps. More to follow.
-
-2002-10-23 Andi Gutmans <andi@zend.com>
-
- * zend_execute.c
- zend_compile.c:
- - This might improve performance. Commiting it so that I can check it on
- - Linux
-
- * zend_execute.c:
- - Make Ts access a macro. I need this for my next patch which should
- - improve performance but not sure yet if it will.
-
-2002-10-22 Andi Gutmans <andi@zend.com>
-
- * zend_execute.c: - Nuke unused get_incdec_op()
- - Nuke old comment
-
- * zend_compile.h
- zend_execute.c
- zend_globals.h: - Improve overall engine performance
-
- * zend_execute.c: - Fix bug reported by Daniel T. Gorski
-
-2002-10-21 Thies C. Arntzen <thies@thieso.net>
-
- * zend_builtin_functions.c: MFZE1
-
-2002-10-20 Stanislav Malyshev <stas@zend.com>
-
- * zend_object_handlers.c: looks like this message should go
-
- * zend_compile.c: Fix private handling
-
-2002-10-20 Sebastian Bergmann <sb@sebastian-bergmann.de>
-
- * zend_highlight.c
- zend_highlight.h: Sync zend_html_puts parameter list with Zend Engine 1.
-
-2002-10-19 Andi Gutmans <andi@zend.com>
-
- * zend_compile.h: - Fix compile warning.
-
- * zend_opcode.c
- zend_compile.h
- zend_execute.c: - Improve opcode dispatching
-
-2002-10-18 Andi Gutmans <andi@zend.com>
-
- * zend.c
- zend_compile.c
- zend_execute.c:
- - Change opcode dispatch mechanism to use a function per opcode and use
- - a lookup table using the opcode # to call the correct function.
- - Still have lots of tuning to do.
-
- * zend_execute.c: - Cleanup
-
-2002-10-16 Sebastian Bergmann <sb@sebastian-bergmann.de>
-
- * zend_execute.c: Fix ZTS build.
-
-2002-10-16 Stanislav Malyshev <stas@zend.com>
-
- * zend_compile.c
- zend_execute.c: Fix class static members: now the following code works:
- <?php
-
- class Foo {
- static $c = "Parent";
- }
-
- class Child extends Foo {
- }
-
- Foo::$c = "Hello";
-
- var_dump(Child::$c);
- ?>
- and returns "Hello" (class statics are not copied anymore, but looked up in
- runtime)
-
- * zend_compile.c
- zend_compile.h
- zend_execute.c: Fix and generalize $this handling.
- ZEND_FETCH_FROM_THIS is removed, IS_UNUSED type on class variables will be
- used instead as the sign that it's a fetch from $this
-
-2002-10-14 Ilia Alshanetsky <ilia@prohost.org>
-
- * zend_ini_parser.y
- zend_ini_scanner.l
- zend_globals.h: MFZE1
-
-2002-10-14 Andi Gutmans <andi@zend.com>
-
- * zend_execute.c
- zend_language_parser.y: - Support new classname::$class_name, e.g.:
- <?
-
- class foo::bar {
- public $hello = "Hello, World\n";
- }
-
- $name = "bar";
- $obj = new foo::$name;
- print $obj->hello;
- ?>
-
-2002-10-13 Ilia Alshanetsky <ilia@prohost.org>
-
- * zend_extensions.h: Increased the API number. (re: floats patch)
-
-2002-10-12 Ilia Alshanetsky <ilia@prohost.org>
-
- * zend_operators.c
- zend_operators.h
- zend.c
- zend_execute_API.c
- zend_globals.h: MFZE1 (floats & locale issue)
-
-2002-10-10 Sebastian Bergmann <sb@sebastian-bergmann.de>
-
- * ZEND_CHANGES: Fugbix typo.
-
-2002-10-10 Stanislav Malyshev <stas@zend.com>
-
- * zend_object_handlers.c: add comment
-
- * zend_object_handlers.c: fix memory leaks
-
-2002-10-09 Stanislav Malyshev <stas@zend.com>
-
- * zend_object_handlers.c: Fix object write handler behaviour:
- * If this value is already set to given value, don't try to set it again.
- * If we have reference, we should not move it.
- * If we are assigning referenced variable, we should separate it.
-
-2002-10-09 Ilia Alshanetsky <ilia@prohost.org>
-
- * zend_API.c
- zend_builtin_functions.c
- zend_compile.c
- zend_constants.c
- zend_execute.c
- zend_execute_API.c
- zend_language_parser.y
- zend_object_handlers.c
- zend_operators.c
- zend_operators.h: MFZE1 zend_str_tolower issue.
-
-2002-10-07 Andi Gutmans <andi@zend.com>
-
- * tests/zend2.php: - Fix test
-
- * zend_execute.c:
- - Require $this-> when calling a methods. This whole automatic lookup
- - first in the class and then in the global scope is confusing, slow and
- - not quite BC compatible.
-
- * zend.c
- zend_compile.c
- zend_globals.h:
- - Allow access to private/protected variables of $clone inside the __clone()
- - method
-
-2002-10-06 Andi Gutmans <andi@zend.com>
-
- * zend_execute.c: - Fix problem with unsetting object members.
-
-2002-10-01 Andi Gutmans <andi@zend.com>
-
- * zend_language_parser.y:
- - Fix problem when crashing on illegal tokens in class name during class
- - definition.
-
-2002-09-30 Derick Rethans <d.rethans@jdimedia.nl>
-
- * ZEND_CHANGES: - No tabs :)
-
-2002-09-28 Derick Rethans <d.rethans@jdimedia.nl>
-
- * zend_builtin_functions.c: - Fix for defines...
-
- * zend_builtin_functions.c: - Fix build in non-ZTS mode
-
-2002-09-26 Ilia Alshanetsky <ilia@prohost.org>
-
- * zend_API.c
- zend_builtin_functions.c
- zend_compile.c
- zend_constants.c
- zend_execute.c
- zend_execute_API.c
- zend_language_parser.y
- zend_object_handlers.c
- zend_operators.c
- zend_operators.h: MFZE1
-
-2002-09-25 Stanislav Malyshev <stas@zend.com>
-
- * zend_extensions.h:
- Propmote API NO year, so that it will never be the same as ZE1 API NO
-
-2002-09-24 Andi Gutmans <andi@zend.com>
-
- * zend_compile.c: - Fix leak
-
- * zend_language_parser.y
- zend_compile.c
- zend_compile.h
- zend_execute.c:
- - Megapatch to try and support inheritance from sub-classes. Things might
- - be *very* buggy now so don't get too upset if that happens.
- - I still need to improve some stuff but it's a good step (hopefully).
-
-2002-09-23 Andi Gutmans <andi@zend.com>
-
- * zend_globals.h
- zend_ini.c
- zend_language_parser.y: - MFZE1.
-
-2002-09-21 Andi Gutmans <andi@zend.com>
-
- * zend_extensions.h: - Someone screwed this up.
-
-2002-09-19 Derick Rethans <d.rethans@jdimedia.nl>
-
- * zend_ini.c: - Make Colin happy
-
-2002-09-19 Zeev Suraski <zeev@zend.com>
-
- * zend.c
- zend.h
- zend_execute_API.c: MFZE1 - connection_status() fix
-
- * zend.c: Fix non ZTS build
-
- * zend.c: Fix that obscure crash in Debug_TS mode
-
-2002-09-18 Zeev Suraski <zeev@zend.com>
-
- * zend.c:
- Fix the thread-safe initialization of the ZE2. This should solve some
- sporadic crashes, as well as the problem with the built-in constants.
-
- * zend_constants.c: Remove dead code
-
- * zend_builtin_functions.c: Add useful debugging function
-
-2002-09-17 Zeev Suraski <zeev@zend.com>
-
- * zend_hash.c
- zend_hash.h: Add tracking for hashtable allocation
-
- * zend.c: ZE2 fix
-
- * zend_compile.c: whitespace
-
- * zend.c
- zend.h: MFZE1 - threading fix
-
-2002-09-16 Andrei Zmievski <andrei@php.net>
-
- * zend_API.h
- zend_builtin_functions.c
- zend_API.c
- zend_execute_API.c: MFZE1
-
-2002-09-15 Ilia Alshanetsky <ilia@prohost.org>
-
- * zend_highlight.c: Make zend actually strip comments. Bug #18151
-
- * zend.c:
- Make zend return a proper exit error code when it encounters a parse error.
-
-2002-09-15 Andi Gutmans <andi@zend.com>
-
- * zend_compile.c:
- - Hopefully fix problem with __autoload not working well with inherited classes.
- - There might still be some weird situations I haven't thought of.
-
- * zend_list.c
- zend_execute.c: - WS fix - "while (" instead of "while("
-
- * zend_execute_API.c
- zend_ini.c
- zend_list.c
- zend_object_handlers.c
- zend_objects_API.c
- zend_operators.c
- zend_API.c
- zend_builtin_functions.c
- zend_compile.c
- zend_execute.c: - WS - Always use "if (" and not "if("
-
- * zend_execute_API.c: - WS
-
-2002-09-10 Stanislav Malyshev <stas@zend.com>
-
- * zend_execute_API.c
- zend_variables.c: MFZE1
-
-2002-09-09 Stanislav Malyshev <stas@zend.com>
-
- * zend_object_handlers.c: remove comment
-
-2002-09-08 Andi Gutmans <andi@zend.com>
-
- * zend.h: - Prepare for alpha 3
-
-2002-09-05 Stanislav Malyshev <stas@zend.com>
-
- * zend_compile.c: quick-n-dirty inheritance support for __handlers
-
-2002-09-04 Sebastian Bergmann <sb@sebastian-bergmann.de>
-
- * ZEND_CHANGES: Whitespace fixes.
-
-2002-09-04 Stanislav Malyshev <stas@zend.com>
-
- * zend_object_handlers.c: remove dead code
-
- * ZEND_CHANGES
- zend_object_handlers.c: Fix __call and add some docs
-
-2002-09-04 Sebastian Bergmann <sb@sebastian-bergmann.de>
-
- * zend_object_handlers.c: Fix ZTS build.
-
- * ZEND_CHANGES: TBD: __call(), __get(), __set().
-
-2002-09-04 Stanislav Malyshev <stas@zend.com>
-
- * zend.h
- zend_compile.c
- zend_compile.h
- zend_execute.c
- zend_extensions.h
- zend_object_handlers.c
- zend_objects.c: Support for __get, __set and __call in classes.
- This should work as follows: if class hasn't member with given name,
- __get/__set is called. If class has no method with given name, __call is called.
- __get/__set are not recursive, __call can be.
-
-2002-09-04 Sebastian Bergmann <sb@sebastian-bergmann.de>
-
- * ZEND_CHANGES: Workaround for superfluous comma in var_export() result.
-
- * ZEND_CHANGES:
- Let debug_backtrace() example print out the class name, if applicable, and the function/method arguments.
-
-2002-09-03 Thies C. Arntzen <thies@thieso.net>
-
- * zend_builtin_functions.c: nuke warning
-
- * zend_builtin_functions.c: nuke unneeded stuff
-
-2002-09-03 Zeev Suraski <zeev@zend.com>
-
- * zend.c
- zend.h
- zend_ini.c: MFZE1
-
-2002-09-03 Derick Rethans <d.rethans@jdimedia.nl>
-
- * zend_ini.c: - Revert
-
- * zend_ini.c:
- - MFH for: Apply rest of html errors fix (Patch by Jan Lehnardt <jan@php.net>)
-
-2002-09-03 Sebastian Bergmann <sb@sebastian-bergmann.de>
-
- * zend.h:
- Add html_errors to zend_utility_values. Patch by Jan Lehnardt <jan@php.net>.
-
-2002-09-03 Andi Gutmans <andi@zend.com>
-
- * zend_builtin_functions.c: - Fix typo
-
-2002-09-02 Thies C. Arntzen <thies@thieso.net>
-
- * zend_builtin_functions.c:
- refine last patch. if the argument-stack is not consistent don't try to show
- arguments. no call to zend_error is made as we might end up in an infinite
- recursion if called from an error_handler.
- so: if the arguments to functions aren't shown in debug_backtrace this is 'cause
- the arument stack was not consistent when debug_backtrace was called.
-
- * zend_builtin_functions.c:
- debug_backtrace() now checks the complete argument-stack for consistency.
-
-2002-09-02 Stanislav Malyshev <stas@zend.com>
-
- * zend_execute.c: MFZE1
-
-2002-09-01 Andi Gutmans <andi@zend.com>
-
- * zend_llist.c: - Fix leak reported by "l0t3k" <cshmoove@hotmail.com>
-
-2002-09-01 Stanislav Malyshev <stas@zend.com>
-
- * zend_operators.c: MFZE1
-
-2002-08-28 Thies Arntzen <thies@pb1.pair.com>
-
- * zend_builtin_functions.c
- zend_execute_API.c: debug_backtrace()
- - make args passed to functions called vy call_user_function available again.
-
- * zend_builtin_functions.c: debug_backtrace():
- - make args work if called from the error_handler
- - fix refcount for args
-
- * zend.c:
- clear current_execute_data on bailout as it would point into some freed area
- on the stack.
-
-2002-08-28 derick <derick@pb1.pair.com>
-
- * zend.c: - MFZE1
-
-2002-08-26 Thies Arntzen <thies@pb1.pair.com>
-
- * zend_builtin_functions.c:
- debug_backtrace(): show name of included file for include and require calls
- plus some small fixes suggested by andi.
-
-2002-08-24 Andi Gutmans <andi@pb1.pair.com>
-
- * zend_builtin_functions.c: - Whitespace
-
- * zend_builtin_functions.c: - Whitespace and better variable name
-
-2002-08-24 Thies Arntzen <thies@pb1.pair.com>
-
- * zend_builtin_functions.c: fix warning
-
-2002-08-23 Andi Gutmans <andi@pb1.pair.com>
-
- * Zend.m4: - Add \n to configure fprintf
-
- * zend_extensions.c: - dlerror -> DL_ERROR
-
-2002-08-23 Thies Arntzen <thies@pb1.pair.com>
-
- * zend_builtin_functions.c:
- debug_backtrace: show include/require/eval as normal functions on the stack
-
-2002-08-23 derick <derick@pb1.pair.com>
-
- * zend_builtin_functions.c: - No spaces :)
-
-2002-08-23 Thies Arntzen <thies@pb1.pair.com>
-
- * zend_builtin_functions.c:
- - debug_backtrace now also returns an array containing the arguments of the
- called function.
-
- zeev, andi - is knowing the structure of the stack considered a bad thing in
- zend_builtin_function? if yes i would have to create a new function in
- zend_ptr_stack.c (but i think we are save this way)
-
- * zend_builtin_functions.c
- zend_execute_API.c: - debug_backtrace:
- added "type" ('->' or '::') for object calls.
- made calls done thru call_user_func show-up correct in backtraces.
-
- andi,
- does this look correct to you?
-
- * zend_execute.c: those are set by RETURN_FROM_EXECUTE
-
-2002-08-21 Thies Arntzen <thies@pb1.pair.com>
-
- * zend_execute.c:
- zend_execute: make sure that current_execute_data points to the right thing
- after coming back from recursion.
-
-2002-08-19 Zeev Suraski <zeev@pb1.pair.com>
-
- * zend_operators.c: MFZE1
-
-2002-08-17 Andi Gutmans <andi@pb1.pair.com>
-
- * zend_execute.c: MFZE1
-
-2002-08-17 Zeev Suraski <zeev@pb1.pair.com>
-
- * zend_execute.c
- zend_hash.c: MFZE1
-
-2002-08-16 Stig Bakken <ssb@pb1.pair.com>
-
- * zend.c: * append emacs footer
-
- * zend.c: * remove builtin exception class
-
-2002-08-16 Andi Gutmans <andi@pb1.pair.com>
-
- * zend.c: - Fix whitespace
-
-2002-08-16 Stig Bakken <ssb@pb1.pair.com>
-
- * zend_execute_API.c
- zend_globals.h
- zend.c
- zend_builtin_functions.c:
- - Added set_exception_handler() function for registering a global,
- catch-all exception handling function
- - Added set_exception_handler() function for registering a global,
- catch-all exception handling function (Stig)
-
-2002-08-15 Zeev Suraski <zeev@pb1.pair.com>
-
- * flex.skl
- zend.c
- zend_globals.h
- zend_language_scanner.l: MFZE1
-
-2002-08-14 jason <jason@pb1.pair.com>
-
- * zend_compile.c
- zend_compile.h
- zend_globals.h
- zend_language_parser.y:
- MFZE1 (use token instead of global for opcode counting)
-
-2002-08-13 Andi Gutmans <andi@pb1.pair.com>
-
- * zend_execute_API.c:
- - Fix crash when exception is raised in __autoload function
-
-2002-08-13 Zeev Suraski <zeev@pb1.pair.com>
-
- * zend.h: MFZE1
-
-2002-08-08 sebastian <sebastian@pb1.pair.com>
-
- * zend_objects.c: Fix warning.
-
-2002-08-08 stas <stas@pb1.pair.com>
-
- * zend_objects.c
- zend_objects.h
- zend_objects_API.c
- zend_objects_API.h: Add ZEND_API to functions
-
-2002-08-08 Andi Gutmans <andi@pb1.pair.com>
-
- * zend_compile.c
- zend_compile.h
- zend_execute.c
- zend_language_parser.y
- zend_language_scanner.l
- zend_operators.c
- zend_operators.h:
- - Make new 'is' operator work with classes only and return false when
- - the object isn't of the said class or the value isn't an object.
-
- * zend_static_allocator.c: - Bad Harald! :)
-
-2002-08-08 Zeev Suraski <zeev@pb1.pair.com>
-
- * zend_alloc.c: MFZE1
-
-2002-08-07 phanto <phanto@pb1.pair.com>
-
- * zend_static_allocator.c
- zend_alloc.c
- zend_config.w32.h
- zend_hash.c
- zend_ini.c
- zend_llist.h
- zend_mm.c
- zend_operators.c: make win32 debug output more verbose
-
-2002-08-03 Andi Gutmans <andi@pb1.pair.com>
-
- * tests/zend2.php: - Small fix
-
-2002-08-03 Zeev Suraski <zeev@pb1.pair.com>
-
- * zend_execute.c: MFZE1
-
-2002-08-01 stas <stas@pb1.pair.com>
-
- * zend_execute.c
- zend_hash.c: MFZE1
-
-2002-07-30 jason <jason@pb1.pair.com>
-
- * zend_compile.c
- zend_execute.c
- zend_globals.h: MFZE1 global declare
-
- * zend_compile.c: Fix segfault
-
-2002-07-30 Andrei Zmievski <andrei@pb1.pair.com>
-
- * zend_compile.c
- zend_compile.h
- zend_execute.c
- zend_language_parser.y
- zend_language_scanner.l
- zend_operators.c
- zend_operators.h:
- - Adding 'is' operator that can be used to check the type of a variable,
- or its class.
-
-2002-07-28 phanto <phanto@pb1.pair.com>
-
- * OBJECTS2_HOWTO: update the handlers struct
-
-2002-07-27 Andi Gutmans <andi@pb1.pair.com>
-
- * zend_compile.c
- zend_execute_API.c:
- - Make sure classes are first looked for in the current scope.
- - Make sure that during inheritance the global scope is searched if the
- - current one doesn't work.
-
-2002-07-26 Andi Gutmans <andi@pb1.pair.com>
-
- * zend_execute.c
- zend.c
- zend_builtin_functions.c
- zend_compile.h:
- - Fix problem with debug_backtrace() reported by Stig. We weren't reporting
- - global function information because it wasn't available. We have to do
- - an additional assignment per-function call so that it'll be available.
- - Also don't define the global scope as function name _main_ but leave it
- - empty so that frameworks like Pear can decide what they want to do.
-
-2002-07-25 sniper <sniper@pb1.pair.com>
-
- * Zend.m4: Fixed 3 major failures in this test:
-
- 1. Tests work better when they are actually run..
- 2. When file is opened, it should be closed sometime too.
- 3. AC_TRY_RUN cleans after itself (rm -f conftest.*), so it's
- good idea to read the values while the file still exists.
-
-
-2002-07-24 Andi Gutmans <andi@pb1.pair.com>
-
- * zend_mm.c: - Fix some compile problems with the new configure checks.
-
-2002-07-24 James Cox <imajes@pb1.pair.com>
-
- * Zend.m4
- zend_mm.c: move testing for the alignment values into configure.
-
- * Zend.m4: ws fixes.
-
-2002-07-23 Andi Gutmans <andi@pb1.pair.com>
-
- * zend_hash.c: - Fix WS.
-
-2002-07-21 Andi Gutmans <andi@pb1.pair.com>
-
- * zend_compile.c:
- - Fix bug reported by Sebastian where old constructors didn't work in
- - nested classes.
-
-2002-07-18 derick <derick@pb1.pair.com>
-
- * zend.h
- zend_extensions.c: - MFZE1 - MacOSX fixes by Marko Karppinen
-
-2002-07-17 Andi Gutmans <andi@pb1.pair.com>
-
- * zend_compile.c:
- - Remove code which wasn't supposed to go into the patch.
-
- * zend_compile.c
- zend_language_parser.y: - Rejuggle some code.
-
-2002-07-17 sniper <sniper@pb1.pair.com>
-
- * ZEND_CHANGES: This was mentioned already above (with an example too :)
-
-2002-07-16 Andi Gutmans <andi@pb1.pair.com>
-
- * ZEND_CHANGES: - Before I forget to list it, this was also added.
-
- * zend_language_scanner.l:
- - Syntactic sugar - Add "public" as a synonym for "var".
- - Now we have the three P's.
- You can do:
-
- <?
- class MyClass {
- public $a;
- private $b;
- protected $c;
- }
-
- ?>
-
-2002-07-15 derick <derick@pb1.pair.com>
-
- * zend_operators.c: - MFH of the crap removal
-
-2002-07-15 Andi Gutmans <andi@pb1.pair.com>
-
- * ZEND_CHANGES
- zend.c
- zend.h
- zend_API.c
- zend_compile.c
- zend_language_parser.y
- zend_language_scanner.l
- zend_opcode.c:
- - Commit patch to support protected member variables (by Timm Friebe w/
- - some fixes by me).
- - You can't access protected variables from outside the object. If you want
- - to see a protected member from your ancestors you need to declare the
- - member as protected in the class you want to use it in. You can't
- - redeclare a protected variable as private nor the other way around.
-
- * zend_operators.c:
- - Really implement bool increment/decrement as flip-flop.
-
-2002-07-14 Andi Gutmans <andi@pb1.pair.com>
-
- * zend_compile.c
- zend_compile.h
- zend_execute.c
- zend_language_parser.y
- zend_language_scanner.l
- ZEND_CHANGES:
- - Nuke delete(). It was a big mistake to introduce it and I finally
- - understand why Java didn't do so.
- - If you still want to control destruction of your object then either make
- - sure you kill all references or create a destruction method which you
- - call yourself.
-
- * zend_execute.c: - Nuke some unused code
-
-2002-07-14 derick <derick@pb1.pair.com>
-
- * zend_operators.c: MFZE1
-
- * zend_operators.c: - MFZE1
-
-2002-07-07 Andi Gutmans <andi@zend.com>
-
- * zend_objects_API.c: - Path which should improve previous fix.
-
- * zend_objects_API.c:
- - First try at solving problem with different objects being allocated the
- - same id.
-
-2002-07-07 Stanislav Malyshev <stas@zend.com>
-
- * zend_object_handlers.c: name length should be strlen+1
-
-2002-07-07 Sebastian Bergmann <sb@sebastian-bergmann.de>
-
- * zend_language_parser.y:
- Allow for 'class Namespace::Bar extends Foo' syntax. Patch by Timm Friebe <thekid@thekid.de>.
-
-2002-07-06 Andi Gutmans <andi@zend.com>
-
- * zend_execute.c:
- - Fix problem where scope was lost in nested function calls.
- - Thanks to Timm Friebe for diving into this one.
-
-2002-07-06 Zeev Suraski <zeev@zend.com>
-
- * zend_language_parser.y: spelling fix
-
-2002-07-05 Stig Bakken <ssb@fast.no>
-
- * zend_builtin_functions.c: * folding fixes
-
-2002-07-01 Andi Gutmans <andi@zend.com>
-
- * zend_compile.c: - Fix bug when acccessing $this not in class scope.
-
- * zend_objects.h
- zend_objects.c: - Export zend_object_get_address()
-
-2002-06-30 Andi Gutmans <andi@zend.com>
-
- * ZEND_CHANGES: - Remember to document autoload when I have time.
-
-2002-06-30 Derick Rethans <d.rethans@jdimedia.nl>
-
- * zend_modules.h: - MFZE1
-
-2002-06-29 Andi Gutmans <andi@zend.com>
-
- * zend.h: - Get ready for alpha2
-
- * zend_execute_API.c: - Invalid -> Undefined
-
- * zend_language_parser.y: - Add missing semi-colon.
-
- * zend_execute_API.c
- zend_execute.c: - Improve some error messages.
-
- * zend_compile.c: - Revert previous fix.
-
- * zend_compile.c: - Change E_ERROR -> E_COMPILE_ERROR where needed.
-
- * zend_compile.c:
- - Fix for bug #17882. We complain if the same method is declared twice.
-
- * zend.h
- zend_operators.c: - Fix bug 15037
- - Bump version to alpha2-dev
-
-2002-06-28 Andi Gutmans <andi@zend.com>
-
- * zend_operators.c: - WS fix
-
-2002-06-26 Andi Gutmans <andi@zend.com>
-
- * zend_execute_API.c:
- - Autoloading support based on patch from Ivan Ristic.
- - Again I hope this feature ends up working well because if it doesn't we
- - might need to nuke it. This only works for global scoped classes and it
- - will never work for sub-classes so don't even ask!!!!!
- - Just define an __autoload() function in the global scope and it will be
- - called with the class name as the parameter if it doesn't manage to find
- - the class.
-
- * zend_API.c
- zend_builtin_functions.c
- zend_mm.h: - Centralize global class fetch
-
- * zend_alloc.c
- zend_execute.c:
- - Fix problem with scope's not changing correctly during method calls.
- - Reapply a tiny optimization to the allocator so that in non-debug mode
- - we clean memory without detecting leaks.
-
-2002-06-24 Andi Gutmans <andi@zend.com>
-
- * zend_fast_cache.h:
- - MFZE1 (Turn off fast cache until we make sure it performs well.)
-
- * zend_alloc.c: - More fixes (warnings, bug fixes etc.)
-
- * zend_execute.c:
- - Revert patch which checks at run-time if you're allowed to assign
- - certain values by reference.
- - We still need to find a solution for cases when this shouldn't be allowed
- - as it might cause leaks.
-
- * zend_alloc.c: - Fix crash bug and clean up a bit.
-
-2002-06-24 Sebastian Bergmann <sb@sebastian-bergmann.de>
-
- * Zend.m4: IMHO, ZTS should no longer be labeled experimental.
-
-2002-06-24 Andi Gutmans <andi@zend.com>
-
- * zend_alloc.c: - MFZE1
-
- * zend_alloc.c: - Don't use cache if we're using ZEND_MM
-
- * zend_mm.c:
- - Hardcode alignment to 8. We might need a configure check for this.
-
- * zend_mm.c
- zend_mm.h: - Improve memory manager to allocate small blocks quickly.
-
- * zend_alloc.h
- zend_mm.h
- zend_alloc.c:
- - Don't keep allocated blocks in a linked list if we're in non-debug mode
- - as now the memory manager takes care to nuke all leaking blocks.
-
- * zend.h
- zend_types.h: - MFZE1
-
-2002-06-23 Andi Gutmans <andi@zend.com>
-
- * zend_compile.c
- zend_execute.c:
- - Fix problem with constructor not being inherited and called correctly.
-
- * zend_mm.c: - Fix small bug
-
- * zend_mm.c:
- - Almost completely implement realloc(). It now resizes in place when
- - possible.
-
-2002-06-22 Andi Gutmans <andi@zend.com>
-
- * zend_alloc.c
- zend_mm.c: - Fix crash when zend_mm_shutdown is called more than once.
-
- * zend_alloc.c
- zend_alloc.h
- zend_globals.h
- zend_language_parser.y: - MFZE1
-
- * zend_constants.h
- zend_objects.c
- zend_variables.c
- zend_variables.h
- zend_constants.c
- zend_alloc.c
- zend_alloc.h: - Nuke persist_alloc().
-
-2002-06-19 Andi Gutmans <andi@zend.com>
-
- * zend_globals.h:
- - This was also supposed to be part of the previous ZEND_MM commit :)
-
- * zend_alloc.c:
- - Oops, this was supposed to be part of the previous #ifdef ZEND_MM change
-
- * zend_mm.h: - Use #ifdef for ZEND_MM
-
- * zend_mm.c: - Make sure MAX is defined
-
- * zend_constants.c:
- - Fix problem where you couldn't define constants with different cases but
- - the same name.
-
-2002-06-18 Derick Rethans <d.rethans@jdimedia.nl>
-
- * zend.c: - MFZE1
-
-2002-06-17 Andi Gutmans <andi@zend.com>
-
- * zend_mm.c: - Improve speed of alignment calculation
-
- * zend_mm.c
- zend_mm.h
- zend_alloc.c:
- - Fix a bug and add code which frees actual allocated segments at the end
- - of execution (this still doesn't work because some blocks remain
- - referenced after the memory manager is killed.
-
- * zend_mm.c
- zend_mm.h: - Save space per-allocated block.
-
-2002-06-16 Andi Gutmans <andi@zend.com>
-
- * zend_execute.c
- zend_execute.h
- zend_execute_API.c: - Fix bug in class constants
- - Start centralizing main class lookups. This will help implement
- - __autload()
-
- * zend_mm.c
- zend_mm.h:
- - Remove debug code which doesn't work anymore and add headers.
-
- * zend_globals.h
- zend_mm.c
- zend_mm.h
- zend_alloc.c
- ZendTS.dsp: - Commit an initial version of a home made memory manager.
- - It's just for seeing if this would be an advantage to PHP in MT
- - environments. If this is to become production material there is still
- - a long way to go.
-
-2002-06-15 Andi Gutmans <andi@zend.com>
-
- * zend_objects.h
- zend_objects_API.c:
- - Fix copy&paste problem where we allocated according to an old structure
- - decleration and not the new one.
-
-2002-06-11 Andi Gutmans <andi@zend.com>
-
- * zend_builtin_functions.c:
- - Don't show debug_backtrace() in the trace itself.
- - This patch is a bit ugly because the whole code itself is pretty complex
- - and hard to re-order.
-
- * zend_execute.c
- zend_language_parser.y:
- - Fix problem with assigning functions by reference.
-
-2002-06-11 Sebastian Bergmann <sb@sebastian-bergmann.de>
-
- * RFCs/004.txt: Add __delegate().
-
-2002-06-10 Harald Radi <harald.radi@nme.at>
-
- * zend_ts_hash.h
- zend_ts_hash.c: added TS_HASH macro
-
-2002-06-10 Stanislav Malyshev <stas@zend.com>
-
- * zend_execute.c: Fix leak
-
-2002-06-09 Harald Radi <harald.radi@nme.at>
-
- * zend_API.h
- zend_builtin_functions.c
- zend_object_handlers.h:
- only check for an available class entry instead of
- the std_object_handlers on some places
-
-
-2002-06-08 Andi Gutmans <andi@zend.com>
-
- * zend_hash.h
- zend.h: - This should improve performance on Windows
-
- * zend_hash.h:
- - Add a loop unrolled version of the hash function and a bit of an
- - explanation about our hash function (Ralf S. Engelschall)
-
-2002-06-06 Sebastian Bergmann <sb@sebastian-bergmann.de>
-
- * RFCs/004.txt: Add RFC on delegation.
-
-2002-06-05 Sebastian Bergmann <sb@sebastian-bergmann.de>
-
- * zend_execute.c: Remove unused local variable.
-
-2002-06-05 Andi Gutmans <andi@zend.com>
-
- * zend_compile.c
- zend_execute.c
- zend_object_handlers.c:
- - Allow overloaded objects to receive the method name in its original
- - case.
-
-2002-06-05 Derick Rethans <d.rethans@jdimedia.nl>
-
- * zend_llist.c: - Fix memleak (patch by Stefan Sesser)
-
-2002-06-04 Derick Rethans <d.rethans@jdimedia.nl>
-
- * zend_ini_scanner.l: - Fix for bug #17462 (Patch by Edin Kadribasic)
-
-2002-05-31 Andi Gutmans <andi@zend.com>
-
- * ZendTS.dsp: - Add zend_objects_API.* to dsp
-
- * zend_objects_API.c: - Fix build (one more coming up)
-
- * zend_objects.c: - Fix build
-
-2002-05-31 Sebastian Bergmann <sb@sebastian-bergmann.de>
-
- * Zend.dsp: Add zend_objects_API.c to project.
-
-2002-05-31 Stanislav Malyshev <stas@zend.com>
-
- * Makefile.am
- zend_execute_API.c
- zend_globals.h
- zend_object_handlers.c
- zend_objects.c
- zend_objects.h
- zend_objects_API.c
- zend_objects_API.h: Generalize object storage and reference bookkeeping
-
-2002-05-30 Venkat Raghavan S <rvenkat@novell.com>
-
- * zend.h
- zend_config.nw.h
- acconfig.h: NetWare changes
-
-2002-05-26 Andi Gutmans <andi@zend.com>
-
- * zend_multibyte.c:
- - Add empty zend_multibyte.c to allow build with 4.3.0-dev.
-
-2002-05-24 Sebastian Bergmann <sb@sebastian-bergmann.de>
-
- * ZEND_CHANGES: Fugbix typo.
-
-2002-05-24 Andi Gutmans <andi@zend.com>
-
- * ZEND_CHANGES: - Add a bit of information.
-
-2002-05-20 Zeev Suraski <zeev@zend.com>
-
- * zend_API.h
- zend_execute.h
- zend_list.h: MFZE1 (Expose more C++ APIs)
-
-2002-05-14 Andi Gutmans <andi@zend.com>
-
- * zend_objects.c
- zend_objects.h: - constructor_called is supposed to be destructor_called
-
-2002-05-13 Sterling Hughes <sterling@bumblebury.com>
-
- * zend_qsort.c: MFZE1
-
-2002-05-13 Derick Rethans <d.rethans@jdimedia.nl>
-
- * zend_builtin_functions.c: - MFZE1
-
-2002-05-12 Zeev Suraski <zeev@zend.com>
-
- * zend_highlight.c: MFZE1
-
-2002-05-12 Sebastian Bergmann <sb@sebastian-bergmann.de>
-
- * ZEND_CHANGES: Rephrase.
-
- * ZEND_CHANGES: Beautify.
-
- * ZEND_CHANGES: Start documenting the debug backtracing.
-
- * ZEND_CHANGES: Whitespace fixes.
-
-2002-05-11 Zeev Suraski <zeev@zend.com>
-
- * zend_highlight.c
- zend_highlight.h: MFZE1
-
-2002-05-10 Andi Gutmans <andi@zend.com>
-
- * zend_builtin_functions.c: - Nuke C++ comment
-
- * zend_builtin_functions.c:
- - Make debug_backtrace() return an array. Still not finished because I
- might want to differentiate between method calls and static methods.
-
- Example:
- $bt = debug_backtrace();
- foreach ($bt as $frame) {
- if (isset($frame['class'])) {
- print $frame['class'];
- print "::";
- }
- print $frame['function'];
- print " [";
- print $frame['file'];
- print ":";
- print $frame['line'];
- print "]\n";
- }
-
-2002-05-08 Andi Gutmans <andi@zend.com>
-
- * zend_execute.c
- zend_builtin_functions.c:
- - Hopefully fix problems with debug_backtrace()
-
-2002-05-08 Derick Rethans <d.rethans@jdimedia.nl>
-
- * zend_builtin_functions.c: - MFZE1
-
-2002-05-07 Andi Gutmans <andi@zend.com>
-
- * zend.c
- zend_builtin_functions.c
- zend_compile.h
- zend_execute.c:
- - More debug backtrace work. It still doesn't work very well...
-
-2002-05-02 Andi Gutmans <andi@zend.com>
-
- * zend.h
- zend_builtin_functions.c
- zend_compile.h
- zend_execute.c
- zend_execute_API.c
- zend_globals.h: Initial support for built-in backtracing.
- There are still a few problems such as includes and calling other functions
- from internal functions which aren't seen (will have to think if and how to
- fix this).
- Also the main scripts filename isn't available. Need to think about that.
-
-2002-04-30 Stanislav Malyshev <stas@zend.com>
-
- * zend_API.h
- zend_builtin_functions.c
- zend_object_handlers.c
- zend_object_handlers.h
- zend_operators.h
- zend_API.c: Make OBJCE return zend_class_entry*, also some cleanups
-
-2002-04-28 Sebastian Bergmann <sb@sebastian-bergmann.de>
-
- * zend_alloc.c
- zend_alloc.h: Revert.
-
-2002-04-27 Sebastian Bergmann <sb@sebastian-bergmann.de>
-
- * zend_alloc.c
- zend_alloc.h:
- MFZE1: If the size-operands of memset are constants, the compiler can turn them into fast inline code. So, instead of using ecalloc, we use emalloc + memset in macro form now. emalloc will not return NULL, so the chosen macro form is safe. This is not true for malloc(3). An inline function accomodates our needs here. Suggested by: http://www.mail-archive.com/dev%40httpd.apache.org/msg02492.html (Sascha)
-
-2002-04-25 Harald Radi <h.radi@nme.at>
-
- * zend_config.w32.h: unbreak the win32 build
-
-2002-04-24 Harald Radi <h.radi@nme.at>
-
- * zend_API.c: MFZE1 saschas 'Avoid exceeding buffer limits' patch
-
-2002-04-23 Harald Radi <h.radi@nme.at>
-
- * zend_hash.c
- zend_hash.h
- zend_opcode.c
- zend_operators.c
- zend_operators.h
- zend_ts_hash.c
- zend_ts_hash.h
- zend_builtin_functions.c
- zend_compile.c
- zend_compile.h
- zend_execute.c
- zend_execute.h
- zend_execute_API.c
- zend_API.c
- zend_API.h
- zend.h: some type cleanup work
-
-2002-04-22 Harald Radi <h.radi@nme.at>
-
- * zend_object_handlers.c
- zend_object_handlers.h
- zend_objects.h
- zend_operators.h
- zend_API.c
- zend_API.h
- zend_builtin_functions.c: added get_class_entry callback handler to the
- object handlers structure
-
-2002-04-22 Sebastian Bergmann <sb@sebastian-bergmann.de>
-
- * Zend.m4: MFZE1: Change default value of inline-opt to yes (Sascha).
-
-2002-04-22 Harald Radi <h.radi@nme.at>
-
- * zend_config.w32.h
- acconfig.h
- flex.skl: fixed linkage warning under win32
-
-2002-04-20 Zeev Suraski <zeev@zend.com>
-
- * zend_execute_API.c: MFZE1
-
-2002-04-19 Sebastian Bergmann <sb@sebastian-bergmann.de>
-
- * zend_list.c
- zend_hash.c
- zend_hash.h:
- MFZE1: make sure the resource-list is always consistent during shutdown (Thies).
-
- * zend_hash.c: MFZE1: Fix imbalance bug (Zeev).
-
-2002-04-10 Jani Taskinen <sniper@iki.fi>
-
- * zend_language_scanner.l
- zend_language_parser.y: MFZE1
-
-2002-04-07 Stanislav Malyshev <stas@zend.com>
-
- * zend.h: make compatible with current PHP
-
- * zend_compile.c: sync
-
-2002-03-29 Derick Rethans <d.rethans@jdimedia.nl>
-
- * zend_compile.c: - revert patch
-
-2002-03-25 Derick Rethans <d.rethans@jdimedia.nl>
-
- * zend_compile.c: - MFZE1
-
-2002-03-23 Andi Gutmans <andi@zend.com>
-
- * zend_ts_hash.c
- zend_ts_hash.h:
- - Fix build without ZTS. If someone has a nicer fix let me know.
-
-2002-03-21 Andi Gutmans <andi@zend.com>
-
- * zend_language_parser.y:
- - No idea how this slipped in. Fix delete $obj statement.
-
-2002-03-20 Harald Radi <h.radi@nme.at>
-
- * ZendTS.dsp
- zend.h
- zend_ts_hash.c
- zend_ts_hash.h: added thread safe hashtable which allows concurrent
- reads but only exclusive writes
-
-2002-03-19 Andi Gutmans <andi@zend.com>
-
- * zend_language_parser.y
- zend.h:
- - Finish covering all parsed methods to check for validity in parser.
- - Change zval's refcount to zend_uint (If it doesn't slow down the Engine
- - too much it should probably stay this way). If anyone has time to test
- - the difference in speed between zend_ushort & zend_uint in zend.h of
- - the struct _zval_struct (one line change) I'd be glad to get some
- - figures.
-
-2002-03-18 Andi Gutmans <andi@zend.com>
-
- * zend_compile.c
- zend_language_parser.y:
- - More fixes to check for member/function call legality.
-
-2002-03-17 Andi Gutmans <andi@zend.com>
-
- * zend_language_parser.y
- zend_compile.c:
- - Start putting error handling where method calls are being used in a
- - context where only writable variables should be used.
-
-2002-03-15 Andi Gutmans <andi@zend.com>
-
- * zend_execute.c
- zend_object_handlers.h
- zend_objects.c
- zend_objects.h
- zend_variables.c: - Pass TSRMLS to callbacks.
-
- * zend_execute.c:
- - Scope fix. When calling an imported function the scope will change
- - correctly to the scope of the functions class.
- <?php
-
- function Hello()
- {
- print "Wrong one\n";
- }
-
- class MyClass {
- static $hello = "Hello, World\n";
-
- function Hello()
- {
- print self::$hello;
- }
-
- function Trampoline()
- {
- Hello();
- }
- }
-
- import function Trampoline from MyClass;
-
- Trampoline();
- ?>
-
- * zend_opcode.c
- zend_execute.c
- zend_compile.h
- zend_compile.c:
- - Fix issues with $this when using it by itself without indirection such as
- - $this->foo.
-
-2002-03-14 Stanislav Malyshev <stas@zend.com>
-
- * OBJECTS2_HOWTO: more cleanup
-
- * OBJECTS2_HOWTO: Update howto
-
- * zend_execute.c: fix for delete $this and unset $this
-
- * zend_execute_API.c: Fix call_user_function
-
-2002-03-12 Andi Gutmans <andi@zend.com>
-
- * zend.h: - Forgot to close comment.
-
- * zend.h: - Macro for duality between Engine 1 and 2
-
- * zend.c
- zend.h
- zend_API.c
- zend_compile.c
- zend_opcode.c
- zend_operators.c: - Another couple of indirection fixes.
- - Make class_entry->refcount be part of the structure and not allocated.
-
- * zend_compile.c
- zend_compile.h
- zend_execute.c
- zend_opcode.c: - Fix bug introduced with latest class hash table change.
-
-2002-03-12 Stanislav Malyshev <stas@zend.com>
-
- * zend_API.c: Fix standard object creation
-
- * zend_API.c
- zend_builtin_functions.c
- zend_compile.c
- zend_compile.h
- zend_execute.c
- zend_execute_API.c
- zend_opcode.c
- zend.c
- zend.h: - make class tables contain class_entry *, not class_entry
- - fix isset($this)
-
-2002-03-10 Andi Gutmans <andi@zend.com>
-
- * zend_execute.c: - Fix build in ZTS mode.
-
-2002-03-10 Stanislav Malyshev <stas@zend.com>
-
- * zend_compile.c
- zend_compile.h
- zend_execute.c
- zend_object_handlers.c
- zend_object_handlers.h: New stuff for objects API:
- - Better assignment handling
- - More flexible operations with zval-containing objects
-
-2002-03-09 Andi Gutmans <andi@zend.com>
-
- * tests/zend2.php:
- - Add the original example script to the CVS so that it's always available.
-
-2002-03-08 Sebastian Bergmann <sb@sebastian-bergmann.de>
-
- * ZEND_CHANGES: Add 'import const' example.
-
-2002-03-08 Andi Gutmans <andi@zend.com>
-
- * zend_execute.c: - Support importing constants. e.g.:
- <?php
-
- class MyOuterClass {
- const Hello = "Hello, World\n";
- }
-
- import const Hello from MyOuterClass;
- print Hello;
-
-2002-03-07 Sebastian Bergmann <sb@sebastian-bergmann.de>
-
- * ZEND_CHANGES:
- Add another 'import' example and merge 'import' section into 'Namespaces' section.
-
-2002-03-06 Andi Gutmans <andi@zend.com>
-
- * zend_execute.c:
- - Add function * and class * functionality. Only constants are left.
- <?php
-
- class MyOuterClass {
- class MyInnerClass {
- function func1()
- {
- print "func1()\n";
- }
-
- function func2()
- {
- print "func2()\n";
- }
- }
- }
-
- import class * from MyOuterClass;
- import function func2 from MyOuterClass::MyInnerClass;
-
- MyInnerClass::func1();
- func2();
-
-2002-03-02 Sebastian Bergmann <sb@sebastian-bergmann.de>
-
- * ZEND_CHANGES: Consistency.
-
- * ZEND_CHANGES: Add 'import statement' section.
-
-2002-03-02 Andi Gutmans <andi@zend.com>
-
- * zend_compile.c
- zend_compile.h
- zend_execute.c
- zend_globals.h
- zend_language_parser.y
- zend_language_scanner.l:
- - Initial patch to support importing from class scopes (for Stig).
- - It isn't complete yet but I want to work on it from another machine. It
- - shouldn't break anything else so just don't try and use it.
- - The following is a teaser of something that already works:
- <?php
-
- class MyClass
- {
- function hello()
- {
- print "Hello, World\n";
- }
- class MyClass2
- {
- function hello()
- {
- print "Hello, World in MyClass2\n";
- }
- }
- }
-
- import function hello, class MyClass2 from MyClass;
-
- MyClass2::hello();
- hello();
- ?>
-
-2002-03-02 Derick Rethans <d.rethans@jdimedia.nl>
-
- * zend_builtin_functions.c: - MFZE1
-
-2002-03-01 Andrei Zmievski <andrei@ispi.net>
-
- * zend_API.c: MFZE1
-
-2002-03-01 Andi Gutmans <andi@zend.com>
-
- * zend_compile.c
- zend_compile.h
- zend_execute.c
- zend_execute_API.c
- zend_globals.h
- zend_language_parser.y
- zend_language_scanner.l:
- - Remove use of C++ reserved words namespace/this
-
- * zend_opcode.c
- zend_language_parser.y
- zend_compile.h
- zend_compile.c
- zend_API.c: - Fix bug in nested try/catch's
- - Infrastructure for implementing imports of methods.
-
- * zend_objects.c:
- - Fix crash reported by Sebastian when destructor function causes a fatal
- - error. I hope this does it and we don't find any other problems.
-
-2002-02-26 Andi Gutmans <andi@zend.com>
-
- * zend_alloc.h
- zend_alloc.c
- zend.c: - MFZE1
-
-2002-02-21 Sebastian Bergmann <sb@sebastian-bergmann.de>
-
- * ZEND_CHANGES:
- Maintain ZEND_CHANGES to account for the addition of private member variables.
-
-2002-02-21 Andi Gutmans <andi@zend.com>
-
- * zend_object_handlers.c
- zend_opcode.c
- zend_language_parser.y
- zend_language_scanner.l
- zend_compile.c
- zend.c
- zend.h
- zend_API.c: - Experimental support for private members.
- <?
- class MyClass {
- private $Hello = "Hello, World!\n";
-
- function printHello()
- {
- print $this->Hello;
- }
- }
-
- class MyClass2 extends MyClass {
- function printHello()
- {
- MyClass::printHello(); /* Should print */
- print $this->Hello; /* Shouldn't print out anything */
- }
- }
-
- $obj = new MyClass();
- print $obj->Hello; /* Shouldn't print out anything */
- $obj->printHello(); /* Should print */
-
- $obj = new MyClass2();
- print $obj->Hello; /* Shouldn't print out anything */
- $obj->printHello();
- ?>
-
-2002-02-14 Stanislav Malyshev <stas@zend.com>
-
- * zend.h
- zend_API.c: Pass TSRM to create_object
-
-2002-02-14 Andrei Zmievski <andrei@ispi.net>
-
- * zend_compile.c:
- Fix the bug where the declared properties without init values were not
- entered into the table.
-
-2002-02-13 Andi Gutmans <andi@zend.com>
-
- * zend_compile.c
- zend_compile.h
- zend_language_parser.y: <?php
- class MyException1 {
-
- }
-
- class MyException2 {
-
- }
-
- try {
- throw new MyException2();
- } catch (MyException1 $m) {
- print "Caught MyException1";
- } catch (MyException2 $m) {
- print "Caught MyException2";
- }
-
-2002-02-10 Sebastian Bergmann <sb@sebastian-bergmann.de>
-
- * zend_compile.h:
- Export lex_scan(). Both the PHPDoc and tokenizer extension need this. I hope this is okay with Z&A.
-
-2002-02-08 Andi Gutmans <andi@zend.com>
-
- * zend_objects.c: - Remove object debug messages.
-
-2002-02-07 Stanislav Malyshev <stas@zend.com>
-
- * Makefile.am
- OBJECTS2_HOWTO
- ZendTS.dsp
- configure.in
- zend.h
- zend_API.c
- zend_API.h
- zend_builtin_functions.c
- zend_compile.c
- zend_execute.c
- zend_execute.h
- zend_execute_API.c
- zend_globals.h
- zend_object_handlers.c
- zend_object_handlers.h
- zend_objects.c
- zend_objects.h
- zend_operators.c
- zend_operators.h
- zend_variables.c: Mega-commit: Enter the new object model
- Note: only standard Zend objects are working now. This is definitely going to
- break custom objects like COM, Java, etc. - this will be fixed later.
- Also, this may break other things that access objects' internals directly.
-
-2002-02-04 Andi Gutmans <andi@zend.com>
-
- * zend_execute.c:
- - This small patch should also take care of allowing unseting of $this->foo
- - and static members. The unset() opcode was luckily already suitable for
- - object overloading.
-
- * zend_compile.c
- zend_compile.h
- zend_execute.c
- zend_objects.c:
- - Fix problem with the objects_destructor called during shutdown. It was
- - freeing objects from id 0 instead of id 1. id 0 is not used.
- - Change isset/empty opcodes to support static members and the new way of
- - doing $this->foobar. Also the opcodes operate now on the hash table
- - combined with the variable names so that they can be overloaded by the
- - soon to be added overloading patch.
-
-2002-02-03 Adam Dickmeiss <adam@indexdata.dk>
-
- * Makefile.am
- configure.in:
- Zend config sets ZEND_EXTRA_LIBS. Bugs 14452, 14602, 14616, 14824
-
-2002-02-02 Sebastian Bergmann <sb@sebastian-bergmann.de>
-
- * zend_builtin_functions.c: Revert per Andi's request. Sorry :-(
-
- * zend_builtin_functions.c: Fix warning. Again :-)
-
-2002-02-02 Andi Gutmans <andi@zend.com>
-
- * zend_builtin_functions.c:
- - Please don't use strcmp() and friends in Zend but only the mem*
- - functions. I didn't check this patch so please check that it works.
-
-2002-02-02 Sebastian Bergmann <sb@sebastian-bergmann.de>
-
- * zend_builtin_functions.c: Fix a warning.
-
-2002-02-02 Andi Gutmans <andi@zend.com>
-
- * zend_modules.h: - Nice catch by Derick. GINIT is dead.
-
-2002-02-01 Sebastian Bergmann <sb@sebastian-bergmann.de>
-
- * zend_builtin_functions.c: MFZE1: is_a()
-
-2002-01-27 Sebastian Bergmann <sb@sebastian-bergmann.de>
-
- * zend_config.w32.h:
- MFZE1: define a couple of macros under win32. (Patch By: Jon Parise <jon@php.net>)
-
-2002-01-25 Andi Gutmans <andi@zend.com>
-
- * zend_compile.c
- zend_execute_API.c
- zend_objects.c
- zend_objects.h
- zend_opcode.c:
- - First destructor hell fix. There was a situation where an object's
- - destructor could be run after its class was already dead. Right now
- - object destructors is the first thing whic happens during shutdown in
- - order to prevent this problem. It's very likely that destructors will
- - cause more grief and we'll have to outline exactly when you should use
- - them and what kind of logic you're allowed to do inside of them.
- - This bug was reported by sebastian.
-
-2002-01-22 Andi Gutmans <andi@zend.com>
-
- * zend_execute.c:
- - Fix a bug reported by Sebastian with indirect class names not working.
-
-2002-01-20 Andi Gutmans <andi@zend.com>
-
- * zend_compile.c
- zend_compile.h
- zend_execute.c
- zend_execute_API.c
- zend_language_parser.y
- zend_opcode.c: - Improve performance of functions that use $GLOBALS[]
- - Please check this and make sure it doesn't break anything.
-
-2002-01-19 Thies C. Arntzen <thies@thieso.net>
-
- * zend_language_parser.y: MFZE1
-
-2002-01-14 Andi Gutmans <andi@zend.com>
-
- * zend_execute_API.c:
- - Fix crash bug in call_user_function_ex(). Thanks to Sebastian for the
- - very nice and short reproducing script.
- <?php
- $array = array('foo', 'bar');
-
- uasort($array, 'cmp');
-
- function cmp($a, $b)
- {
- return (strcmp($a[1], $b[1]));
- }
- ?>
-
-2002-01-14 Sebastian Bergmann <sb@sebastian-bergmann.de>
-
- * ZEND_CHANGES: Update Exceptions example.
-
-2002-01-13 Andi Gutmans <andi@zend.com>
-
- * zend_compile.c
- zend_compile.h
- zend_execute.c
- zend_globals.h
- zend_language_parser.y:
- - Change exception handling to use the Java-like catch(MyException $exception)
- - semantics. Example:
- <?php
-
- class MyException {
- function __construct($exception)
- {
- $this->exception = $exception;
- }
-
- function Display()
- {
- print "MyException: $this->exception\n";
- }
-
- }
- class MyExceptionFoo extends MyException {
- function __construct($exception)
- {
- $this->exception = $exception;
- }
- function Display()
- {
- print "MyException: $this->exception\n";
- }
- }
-
- try {
- throw new MyExceptionFoo("Hello");
- } catch (MyException $exception) {
- $exception->Display();
- }
- ?>
-
- * zend_ini_scanner.l: - MFZE1
-
-2002-01-06 Andi Gutmans <andi@zend.com>
-
- * zend.c:
- - Output error when there's an uncaught exception (by Timm Friebe)
-
- * zend_execute.c: - Make sure $this is passed on to methods
-
-2002-01-06 Sebastian Bergmann <sb@sebastian-bergmann.de>
-
- * zend_ini.h
- zend_ini_parser.y
- zend_ini_scanner.l
- zend_language_parser.y
- zend_language_scanner.h
- zend_language_scanner.l
- zend_list.c
- zend_list.h
- zend_llist.c
- zend_llist.h
- zend_modules.h
- zend_opcode.c
- zend_operators.c
- zend_operators.h
- zend_ptr_stack.c
- zend_ptr_stack.h
- zend_qsort.c
- zend_qsort.h
- zend_sprintf.c
- zend_stack.c
- zend_stack.h
- zend_static_allocator.c
- zend_static_allocator.h
- zend_variables.c
- zend_variables.h
- zend.c
- zend.h
- zend_API.c
- zend_API.h
- zend_alloc.c
- zend_alloc.h
- zend_builtin_functions.c
- zend_builtin_functions.h
- zend_compile.c
- zend_compile.h
- zend_config.w32.h
- zend_constants.c
- zend_constants.h
- zend_dynamic_array.c
- zend_dynamic_array.h
- zend_errors.h
- zend_execute.c
- zend_execute.h
- zend_execute_API.c
- zend_extensions.c
- zend_extensions.h
- zend_fast_cache.h
- zend_globals.h
- zend_globals_macros.h
- zend_hash.c
- zend_hash.h
- zend_highlight.c
- zend_highlight.h
- zend_indent.c
- zend_indent.h
- zend_ini.c: Happy New Year.
-
-2002-01-05 Andi Gutmans <andi@zend.com>
-
- * zend_compile.c: - Small fix
-
- * zend_compile.c
- zend_compile.h
- zend_execute.c: - Allow passing of $this as function arguments.
- - Fix a bug which I introduced a couple of months ago
-
- * zend_compile.c
- zend_compile.h
- zend_execute.c
- zend_execute_API.c
- zend_globals.h:
- - Significantly improve the performance of method calls and $this->member
- - lookups.
-
-2002-01-04 Andi Gutmans <andi@zend.com>
-
- * zend_execute.c:
- - Improve performance of indirect-referenced function calls
-
- * zend_compile.c: - Nuke C++ comments
-
- * zend_compile.c
- zend_compile.h
- zend_execute.c: - Separate other kinds of function calls too.
- - Significantly improve performance of function calls by moving lowercasing
- - the function name to compile-time when possible.
-
- * zend_compile.c
- zend_compile.h
- zend_execute.c:
- - Start splitting up different kinds of function calls into different
- - opcodes.
-
-2002-01-03 Derick Rethans <d.rethans@jdimedia.nl>
-
- * zend_API.c
- zend_API.h
- zend_execute.c
- zend_list.c:
- - MFZE1 for exit fix, exposing current function name in error messages and
- exposing zend_zval_type_name().
-
-2001-12-31 Sebastian Bergmann <sb@sebastian-bergmann.de>
-
- * ZEND_CHANGES: Consistency.
-
-2001-12-31 Andi Gutmans <andi@zend.com>
-
- * ZEND_CHANGES:
- - Add example of default argument for argument passed by-ref
-
-2001-12-30 Sebastian Bergmann <sb@sebastian-bergmann.de>
-
- * ZEND_CHANGES: Typo.
-
-2001-12-29 Andi Gutmans <andi@zend.com>
-
- * zend.h:
- - #define to help #ifdef stuff in PHP sources to make them work w/ ZE1 and
- - 2
-
- * ZEND_CHANGES: - A few clarifications
-
-2001-12-29 Sebastian Bergmann <sb@sebastian-bergmann.de>
-
- * ZEND_CHANGES: Integrate Andi's examples and some notes by Stig.
-
- * ZEND_CHANGES: Update Exceptions example.
-
-2001-12-28 Andi Gutmans <andi@zend.com>
-
- * zend_compile.c
- zend_compile.h
- zend_language_parser.y:
- - Fix some case insensitivity stuff in respect to classes
-
- * zend_execute.c
- zend_language_parser.y:
- - Support default arguments for reference parameters
- - Fix two compile warnings
-
- * zend_compile.c:
- - Wasn't adding the lower case version of the class name to the hash
-
-2001-12-27 Andi Gutmans <andi@zend.com>
-
- * zend_compile.c
- zend_objects.c:
- - Use two underscores for __construct(), __clone and friends...
-
- * zend_objects.c:
- - Only check refcount of object if the destructor was called.
-
- * zend.c
- zend.h
- zend_API.h
- zend_compile.c
- zend_objects.c
- zend_objects.h:
- - Experimental support for destructors. We need to see if destructors
- - will actually work well in the context of PHP so we should consider this
- - as experimental. Possible problems might be that when the constructor is
- - run PHP might not be in a stable state.
-
- * zend_compile.c
- zend_compile.h
- zend_execute.c: - Support parent:: again
-
- * zend_compile.c: - Support unified constructor name _construct()
-
-2001-12-26 Andi Gutmans <andi@zend.com>
-
- * zend_execute.c
- zend_execute_API.c: - Fix scoping issue. The following works now:
- <?
- class MyClass {
- static $id = 0;
-
- function MyClass()
- {
- $this->id = self::$id++;
- }
-
- function _clone()
- {
- $this->name = $clone->name;
- $this->address = "New York";
- $this->id = self::$id++;
- }
- }
-
-
-
- $obj = new MyClass();
-
- $obj->name = "Hello";
- $obj->address = "Tel-Aviv";
-
- print $obj->id;
- print "\n";
-
- $obj = $obj->_clone();
-
- print $obj->id;
- print "\n";
- print $obj->name;
- print "\n";
- print $obj->address;
- print "\n";
-
- * zend.c: - Print out object id for easier debugging
-
- * zend.c
- zend.h
- zend_API.h
- zend_compile.c
- zend_objects.c: - Pretty much finish _clone() support
-
- * zend_compile.c
- zend_compile.h
- zend_execute.c
- zend_language_parser.y: - Initial support for _clone()
-
- * zend_compile.c
- zend_language_parser.y:
- - Start fixing the parsing rules so that function and method calls
- - can't be used in a write context.
-
- * zend.c: - Fix crash correctly.
-
-2001-12-25 Andi Gutmans <andi@zend.com>
-
- * zend_language_parser.y: - Revert delete syntax patch
-
- * zend.c
- zend_execute.c: - Fix a crash (not a thorough fix).
- - Commented old code
-
-2001-12-24 Andi Gutmans <andi@zend.com>
-
- * zend_execute.c:
- - Fixed bug where global functions weren't called if they didn't exist
- - in the class scope
-
-2001-12-23 Andi Gutmans <andi@zend.com>
-
- * zend.c:
- - Fix a bug where function's didn't work anymore in multi-threaded
- - servers after the latest startup changes.
-
-2001-12-22 Andi Gutmans <andi@zend.com>
-
- * zend_compile.c
- zend_execute_API.c
- zend_language_parser.y:
- - Add initial capability of defining nested classes as class foo::bar
-
-2001-12-18 Zeev Suraski <zeev@zend.com>
-
- * zend_language_scanner.h
- zend_language_scanner.l: MFZE1
-
-2001-12-16 Sebastian Bergmann <sb@sebastian-bergmann.de>
-
- * ZEND_CHANGES: I'm too trigger-happy.
-
- * ZEND_CHANGES: delete is now function
-
-2001-12-16 Andi Gutmans <andi@zend.com>
-
- * zend_language_parser.y:
- - Seems like most people prefer delete($obj) over delete $obj.
-
- * zend_compile.c
- zend_compile.h
- zend_language_parser.y: - Start adding parsed variable checks.
-
- * zend_compile.h
- zend_language_parser.y:
- - Framework for knowing what kind of variable we just parsed.
- - This will be used in compile-time error checking which couldn't be done
- - at the level of the grammar.
-
-2001-12-13 Andi Gutmans <andi@zend.com>
-
- * zend_language_parser.y:
- - Rearrange grammar to allow dereferencing of objects returned from
- - functions. It still crashes though.
-
- * zend.c
- zend.h
- zend_API.c
- zend_compile.c
- zend_compile.h
- zend_execute.c
- zend_execute_API.c
- zend_globals.h
- zend_opcode.c: - Fix crash bug in startup code.
- - Start work on being able to reference global and local scope
-
-2001-12-12 Andi Gutmans <andi@zend.com>
-
- * Zend.dsp
- zend.c
- zend_constants.c
- zend_globals.h:
- - Infrastructure changes for allowing to access the global scope from
- - within a class scope.
- - Fix the Zend.dsp project a bit. It seems someone pretty much killed it
- - when commiting their own personal configuration. Please be careful in
- - future.
-
- * zend.h
- zend_API.c
- zend_compile.c
- zend_compile.h
- zend_execute.c
- zend_globals.h
- zend_language_parser.y:
- - Make classes have scope and function/constant lookups default to the class
-
-2001-12-11 Andi Gutmans <andi@zend.com>
-
- * zend.c: - Merge from ZE1
-
- * zend.c
- zend.h
- zend_API.c
- zend_compile.c
- zend_execute.c
- zend_execute_API.c
- zend_opcode.c:
- - Rename zend_class_entry.constants -> zend_class_entry.constants_table
-
- * zend_execute.c:
- - Start making scope change correctly when calling namespace functions.
- - When inside a namespace fallback to global namespace when function
- - or constant is not found.
-
-2001-12-11 Sebastian Bergmann <sb@sebastian-bergmann.de>
-
- * LICENSE: Forgot to update the LICENSE.
-
- * LICENSE
- zend.c
- zend.h
- zend_API.c
- zend_API.h
- zend_alloc.c
- zend_alloc.h
- zend_builtin_functions.c
- zend_builtin_functions.h
- zend_compile.c
- zend_compile.h
- zend_config.w32.h
- zend_constants.c
- zend_constants.h
- zend_dynamic_array.c
- zend_dynamic_array.h
- zend_errors.h
- zend_execute.c
- zend_execute.h
- zend_execute_API.c
- zend_extensions.c
- zend_extensions.h
- zend_fast_cache.h
- zend_globals.h
- zend_globals_macros.h
- zend_hash.c
- zend_hash.h
- zend_highlight.c
- zend_highlight.h
- zend_indent.c
- zend_indent.h
- zend_ini.c
- zend_ini.h
- zend_ini_parser.y
- zend_ini_scanner.l
- zend_language_parser.y
- zend_language_scanner.h
- zend_language_scanner.l
- zend_list.c
- zend_list.h
- zend_llist.c
- zend_llist.h
- zend_modules.h
- zend_opcode.c
- zend_operators.c
- zend_operators.h
- zend_ptr_stack.c
- zend_ptr_stack.h
- zend_qsort.c
- zend_qsort.h
- zend_sprintf.c
- zend_stack.c
- zend_stack.h
- zend_static_allocator.c
- zend_static_allocator.h
- zend_variables.c
- zend_variables.h: Update headers.
-
- * Zend.m4
- zend.h: MFZE1 (AIX fixes)
-
- * zend_highlight.h
- zend_highlight.c: MFZE1 (added zend_strip mode in the highliter)
-
-2001-12-10 Andi Gutmans <andi@zend.com>
-
- * zend.h
- zend_API.c
- zend_compile.c
- zend_compile.h
- zend_execute.c
- zend_language_parser.y: - More namespaces work.
- - Nuke memory leak.
-
-2001-12-08 Andi Gutmans <andi@zend.com>
-
- * zend.c: - Fix crash with unhandled exceptions
-
-2001-12-06 Andi Gutmans <andi@zend.com>
-
- * zend_execute.c: - Support constants. The following works now:
- <?
- class foo {
- const GC = "foo constant\n";
- }
-
- define("GC", "Global constant\n");
-
- namespace;
- print GC;
- namespace foo;
- print GC;
- namespace;
- print foo::GC;
-
- ?>
-
- * zend_language_parser.y
- zend_compile.c
- zend_execute.c
- zend_execute_API.c
- zend_globals.h:
- - Initial work on changing namespace scope. Only methods & variables
- - right now.
- <?
- $hey = "Global hey\n";
-
- class foo {
- static $hey = "Namespace hey\n";
- function bar()
- {
- print "in foo::bar()\n";
- }
- }
- function bar()
- {
- print "in bar()\n";
- }
-
- bar();
- namespace foo;
- bar();
- namespace;
- bar();
- namespace foo;
- $bar_indirect = "bar";
- $bar_indirect();
-
- namespace;
- print $hey;
- namespace foo;
- print $hey;
- $hey = "Namespace hey #2\n";
- namespace;
- print $hey;
- $hey = "Global hey #2\n";
- namespace foo;
- print $hey;
- ?>
-
- * zend.c
- zend_compile.c
- zend_execute.c
- zend_execute_API.c
- zend_globals.h
- zend_language_parser.y:
- - Nuke the namespace work I did. It'll be redone differently.
-
-2001-12-05 Sebastian Bergmann <sb@sebastian-bergmann.de>
-
- * ZEND_CHANGES: Document recent changes.
-
-2001-12-04 Andi Gutmans <andi@zend.com>
-
- * zend_builtin_functions.c: - Damn Zeev :)
-
-2001-12-01 Andi Gutmans <andi@zend.com>
-
- * zend_API.c:
- - Revert one of the changes because it might be before the memory
- - manager has started.
-
- * zend_API.c
- zend_constants.c: - Use alloca() when possible.
-
-2001-11-30 Andi Gutmans <andi@zend.com>
-
- * zend.c
- zend.h
- zend_API.c
- zend_compile.c
- zend_compile.h
- zend_execute.c
- zend_execute_API.c
- zend_language_parser.y
- zend_opcode.c:
- - Initial support for class constants. There are still a few semantic
- - issues which need to be looked into but basically it seems to work.
- - Example:
- <?php
- class foo
- {
- const hey = "hello";
- }
-
- print foo::hey;
- ?>
-
- * Zend.m4: - Fix typo
-
-2001-11-27 Andi Gutmans <andi@zend.com>
-
- * zend_language_parser.y:
- - Support syntax for class constants (doesn't do anything yet but
- - required some reworking of the grammar).
-
-2001-11-26 Andi Gutmans <andi@zend.com>
-
- * zend_compile.c
- zend_compile.h
- zend_language_parser.y:
- - Support static $var = 0; style initialization of static class
- - members. For example:
- - class foo {
- - static $my_static = 5;
- -
- - }
- -
- - print foo::$my_static;
-
-2001-11-25 Andi Gutmans <andi@zend.com>
-
- * zend.c
- zend_compile.c: - Fix crash and leak
-
- * zend_compile.c: - Whitespace
-
- * zend.c
- zend.h
- zend_API.c
- zend_compile.c
- zend_compile.h
- zend_execute.c
- zend_language_parser.y
- zend_opcode.c: - Support static members. The following script works:
- <?
- class foo
- {
- class bar
- {
- function init_values()
- {
- for ($i=1; $i<10; $i++) {
- foo::bar::$hello[$i] = $i*$i;
- }
- }
-
- function print_values()
- {
- for ($i=1; $i<10; $i++) {
- print foo::bar::$hello[$i] . "\n";
- }
- }
- }
- }
-
- foo::bar::init_values();
- foo::bar::print_values();
-
- for ($i=1; $i<10; $i++) {
- print $hello[$i]?"Shouldn't be printed\n":"";
- }
- ?>
-
-2001-11-24 Andi Gutmans <andi@zend.com>
-
- * zend_compile.c
- zend_compile.h
- zend_execute.c: - MFZE1
-
-2001-11-15 Zeev Suraski <zeev@zend.com>
-
- * zend_compile.c: MFZE1
-
-2001-11-05 stig <stig@pb1.pair.com>
-
- * zend_objects.h: add newline at end of file to avoid warnings
-
- * zend_language_parser.y: non-zts compile fix
-
-2001-11-04 Andi Gutmans <andi@zend.com>
-
- * zend_compile.c
- zend_compile.h
- zend_execute.c
- zend_language_parser.y:
- - Support instantiation of nested class. The following script now should
- - work:
- -<?php
- - class foo
- - {
- - function bar()
- - {
- - print "bar() in class bar\n";
- - }
- -
- - class barbara
- - {
- - function bar()
- - {
- - print "bar() in class foo::barbara\n";
- - }
- - }
- - }
- -
- - $obj = new foo();
- - $obj->bar();
- -
- - $obj = new foo::barbara();
- - $obj->bar();
- -
-
-2001-11-03 Andi Gutmans <andi@zend.com>
-
- * zend.h: - RISC OS patch by Alex Waugh
-
- * zend.c
- zend_API.h
- zend_compile.c: - Add some initializations
-
- * zend_compile.c
- zend_execute.c
- zend.h:
- - Add constructor to the zend_class_entry instead of looking it up each
- - time by name.
- - This will allow the next patch of being able to instantiate nested
- - classes such as new foo::bar::barbara();
-
-2001-10-29 Andi Gutmans <andi@zend.com>
-
- * zend_API.c
- zend_opcode.c: - Fix internal classes
-
- * zend.h
- zend_compile.c
- zend_compile.h
- zend_execute.c
- zend_execute.h
- zend_globals.h
- zend_language_parser.y
- zend_opcode.c: - Initial support for nested class definitions
-
-2001-10-27 Zeev Suraski <zeev@zend.com>
-
- * zend_execute.c: MFTGZE1
-
-2001-10-26 Andi Gutmans <andi@zend.com>
-
- * zend_execute_API.c: - Fix Zeev's MFZE1
-
-2001-10-23 Zeev Suraski <zeev@zend.com>
-
- * zend_constants.c
- zend_execute_API.c
- zend_globals.h: MFZE1
-
-2001-10-20 Andrei Zmievski <andrei@ispi.net>
-
- * zend_API.c: MFHZ1
-
-2001-10-12 Sebastian Bergmann <sb@sebastian-bergmann.de>
-
- * zend_API.c
- zend_API.h
- zend_modules.h: MFZE1: Introduced extension version numbers (Stig)
-
-2001-10-04 Sebastian Bergmann <sb@sebastian-bergmann.de>
-
- * zend_hash.c: MFZE1
-
-2001-09-30 Andi Gutmans <andi@zend.com>
-
- * zend.c
- zend.h
- zend_compile.c
- zend_compile.h
- zend_execute.c
- zend_execute_API.c
- zend_globals.h
- zend_language_parser.y
- zend_language_scanner.l:
- - Merge the NAMESPACES_BRANCH. It wasn't a good idea to have a branch when
- - the whole CVS tree is work in progress
-
- * zend_compile.h
- zend_execute.c:
- - At last I've had some time to move all execute() locals into one struct.
- - No immediate gain but it makes it more clear what variables are temps
- - and which ones are execute() locals.
-
-2001-09-27 Andi Gutmans <andi@zend.com>
-
- * zend_modules.h: - Bump it up in the right place
-
- * zend_modules.h: - Increase API number
-
-2001-09-26 Andi Gutmans <andi@zend.com>
-
- * zend.c
- zend.h
- zend_compile.c
- zend_execute.c: - Good catch by Sterling
-
-2001-09-24 Andi Gutmans <andi@zend.com>
-
- * zend_execute.c
- zend_execute_API.c
- zend_globals.h: - More namespaces work
-
-2001-09-22 Sebastian Bergmann <sb@sebastian-bergmann.de>
-
- * ZEND_CHANGES: Keep ZEND_CHANGES up-to-date.
-
-2001-09-22 Zeev Suraski <zeev@zend.com>
-
- * zend_globals.h
- flex.skl
- zend.c
- zend_ini_scanner.l
- zend_language_scanner.l: MFZE1
-
-2001-09-20 Andi Gutmans <andi@zend.com>
-
- * zend.c
- zend_compile.c: - Fix build on Win32
-
- * zend.h
- zend_compile.c
- zend_compile.h
- zend_execute.c
- zend_globals.h
- zend_language_parser.y
- zend_language_scanner.l
- zend.c:
- - Create a branch for namespaces. This isn't even remotely close to
- - working.
-
- * zend_list.h: - Nuke unused enum
-
-2001-09-19 Zeev Suraski <zeev@zend.com>
-
- * flex.skl
- zend.c
- zend_globals.h
- zend_ini_scanner.l
- zend_language_scanner.l: MFZE1
-
-2001-09-19 Andi Gutmans <andi@zend.com>
-
- * Makefile.am: - MFZE1
-
-2001-09-19 Sebastian Bergmann <sb@sebastian-bergmann.de>
-
- * Makefile.am
- zend_hash.c
- zend_hash.h
- zend_ini.c
- zend_llist.c
- zend_llist.h
- zend_qsort.c
- zend_qsort.h
- Zend.dsp
- ZendTS.dsp: MFZE1
-
-2001-09-17 Brian L. Moon <brianm@dealnews.com>
-
- * RFCs/003.txt: adding RFC for loose type requirements for functions
-
-2001-09-16 Zeev Suraski <zeev@zend.com>
-
- * zend_compile.c: MFZE1
-
-2001-09-10 Zeev Suraski <zeev@zend.com>
-
- * zend_compile.h
- zend_globals.h
- zend_ini_scanner.h
- zend_ini_scanner.l
- zend_language_scanner.h
- zend_language_scanner.l: MFZE1 (nuke cplusplus code)
-
- * zend.c
- zend_execute_API.c
- zend_globals.h: MFZE1 (support return value in execute_scripts)
-
-2001-09-08 stig <stig@pb1.pair.com>
-
- * RFCs/002.txt: remove bogus comment :)
-
- * RFCs/002.txt: RFC document for namespaces
-
- * RFCs/001.txt: wrapped to 80 columns :)
-
-2001-09-07 Andi Gutmans <andi@zend.com>
-
- * zend_compile.c
- zend_language_parser.y:
- - Shift around the variable parsing code to make it simpler.
-
- * zend_llist.c:
- - Fix warning (was fixed in ZE1 and not merged at some point). Please make
- sure you merge patches!
-
-2001-09-05 Stanislav Malyshev <stas@zend.com>
-
- * zend_operators.c: MFZE1
-
-2001-09-03 Andi Gutmans <andi@zend.com>
-
- * zend_language_parser.y: - CLS_CC -> TSRMLS_CC
-
-2001-08-31 Sterling Hughes <sterling@bumblebury.com>
-
- * zend_llist.h: spaces->tabs
-
- * zend_llist.c
- zend_llist.h
- zend_execute_locks.h: MFZE1
-
-2001-08-31 Zeev Suraski <zeev@zend.com>
-
- * zend.c
- zend_compile.h: MFZE1
-
-2001-08-30 Andi Gutmans <andi@zend.com>
-
- * zend_compile.h
- zend_compile.c: - Make it compile in thread-safe mode.
-
- * zend_compile.c
- zend_compile.h
- zend_execute.c: - Get rid of warning and C++ comments
-
- * zend_compile.c
- zend_compile.h
- zend_execute.c
- zend_execute_API.c
- zend_globals.h
- zend_language_parser.y
- zend_language_scanner.l: - Initial support for exceptions.
-
-2001-08-30 Zeev Suraski <zeev@zend.com>
-
- * zend_execute.c: MFZE1
-
-2001-08-28 Zeev Suraski <zeev@zend.com>
-
- * zend_language_scanner.l: MFZE1
-
-2001-08-27 Andi Gutmans <andi@zend.com>
-
- * RFCs/001.txt: - Add sample RFC
-
-2001-08-26 Stanislav Malyshev <stas@zend.com>
-
- * Zend.m4
- zend.h: Add dlsym underscore detection, by Jani Taskinen
-
-2001-08-26 Andi Gutmans <andi@zend.com>
-
- * zend_operators.c: - MFZE1
-
- * zend_API.c:
- - Merge Andrei's fix from Engine 1. Please commit patches to both trees!
-
-2001-08-21 Zeev Suraski <zeev@zend.com>
-
- * zend.c
- zend_execute_API.c: MFZE1
-
-2001-08-20 Zeev Suraski <zeev@zend.com>
-
- * zend_hash.c
- zend_hash.h: MFZE1
-
-2001-08-19 Andi Gutmans <andi@zend.com>
-
- * zend.h: - Fix compile problem
-
-2001-08-19 Zeev Suraski <zeev@zend.com>
-
- * zend_compile.c: MFZE1
-
-2001-08-18 Andi Gutmans <andi@zend.com>
-
- * zend_execute.c
- zend_llist.c
- zend_llist.h: - Merge Sterling's patches from ZE1
-
-2001-08-17 Andrei Zmievski <andrei@ispi.net>
-
- * zend_execute.c: MFZE1
-
-2001-08-17 Zeev Suraski <zeev@zend.com>
-
- * zend_alloc.c: MFZE1
-
-2001-08-16 Zeev Suraski <zeev@zend.com>
-
- * flex.skl
- zend_ini_scanner.l
- zend_language_scanner.l: MFZE1
-
-2001-08-16 Andi Gutmans <andi@zend.com>
-
- * zend_execute.c: - Try and nuke get_object_zval_ptr()
-
- * zend_objects.c: - Remove bogus notice
-
- * zend_variables.c: - Sync with ZE1
-
- * zend.h
- zend_execute.c
- zend_objects.c
- zend_objects.h
- zend_operators.c
- zend_operators.h
- zend_variables.c: - Fix a bug in method calls.
- - Try to get the old copying behavior of objects to work (doesn't work yet).
-
-2001-08-15 Zeev Suraski <zeev@zend.com>
-
- * zend_extensions.c: MFZE1
-
-2001-08-14 Zeev Suraski <zeev@zend.com>
-
- * zend_constants.c
- zend_constants.h
- zend_variables.c
- zend_variables.h: MFZE1
-
-2001-08-13 Andi Gutmans <andi@zend.com>
-
- * zend_execute.c: - MFZE1
-
- * zend_execute.c: - Merge from Engine 1
-
-2001-08-13 Zeev Suraski <zeev@zend.com>
-
- * zend_API.c
- zend_operators.c
- zend_operators.h: MFZE1
-
-2001-08-12 Stanislav Malyshev <stas@zend.com>
-
- * zend_API.h: _FUNCTION is used in definition, so use _D
-
-2001-08-11 Andi Gutmans <andi@zend.com>
-
- * zend_API.c
- zend_API.h
- zend_objects.c
- zend_operators.c: - More work on making objects work
-
- * zend_API.c
- zend_objects.c
- zend_objects.h
- zend_operators.c:
- - Fix some places which create objects. The fixes are ugly and will be
- revised when things start working well
-
-2001-08-11 Zeev Suraski <zeev@zend.com>
-
- * zend.c
- zend.h
- zend_API.c
- zend_API.h
- zend_alloc.c
- zend_alloc.h
- zend_builtin_functions.c
- zend_compile.c
- zend_constants.c
- zend_constants.h
- zend_execute_API.c
- zend_hash.c
- zend_hash.h
- zend_ini.h
- zend_ini_scanner.l
- zend_language_parser.y
- zend_language_scanner.l
- zend_list.c
- zend_list.h
- zend_llist.c
- zend_operators.c: Whitespace
-
-2001-08-11 Andi Gutmans <andi@zend.com>
-
- * Makefile.am
- zend_objects.c: - Fix UNIX build.
-
- * zend_compile.c:
- - Need to do some rewriting in the parser instead of this.
-
- * zend.h:
- - For Sebastian. Will allow to see you're using the Engine 2 CVS via
- phpinfo()
-
-2001-08-10 Andi Gutmans <andi@zend.com>
-
- * zend_API.h: - Merge from Engine 1
-
- * zend_compile.c: - A couple of fixes
-
- * zend_API.h: - Merge from Engine 1 CVS
-
-2001-08-09 Andi Gutmans <andi@zend.com>
-
- * zend.c: - Merge from Engine 1 tree
-
-2001-08-08 Andi Gutmans <andi@zend.com>
-
- * zend.c
- zend_compile.c
- zend_compile.h
- zend_globals.h: - Merge new $_GET, $_POST etc. patch from Engine 1 tree
-
- * zend_compile.c
- zend_compile.h
- zend_language_parser.y: - Preliminary patch for method() dereferencing
-
- * zend.c
- zend.h: - Merge zend_try fix from Engine 1
-
-2001-08-07 Zeev Suraski <zeev@zend.com>
-
- * ZendTS.dsp: Migrate .dsp patches
-
-2001-08-07 Andi Gutmans <andi@zend.com>
-
- * ZendTS.dsp: - Forgot to commit the updated dsp
-
- * ZendTS.dsp: - More sync with latest CVS
-
- * zend_objects.c
- zend_objects.h
- zend_operators.h
- zend_variables.c
- ZendTS.dsp
- zend.h
- zend_API.c
- zend_compile.c
- zend_compile.h
- zend_execute.c
- zend_execute_API.c
- zend_globals.h
- zend_language_parser.y
- zend_language_scanner.l: - Sync Engine2 CVS with latest Engine CVS
-
-2001-08-06 Zeev Suraski <zeev@zend.com>
-
- * zend_indent.c: Commit uncommitted build fix
-
- * zend_compile.c
- zend_globals.h
- zend_language_scanner.l:
- Fix an off by one lineno issue, in case of an implicit ;
-
- * flex.skl
- zend_highlight.c: Better shared code
-
- * Makefile.am
- Zend.dsp
- Zend.m4
- ZendTS.dsp
- flex.skl
- zend.c
- zend_globals.h
- zend_globals_macros.h
- zend_highlight.c
- zend_indent.c
- zend_ini.h
- zend_ini_parser.y
- zend_ini_scanner.h
- zend_ini_scanner.l
- zend_language_scanner.h
- zend_language_scanner.l:
- Merge from branch - move to standard C scanners in thread safe mode
-
- * Makefile.am
- Zend.m4
- flex.skl
- zend_ini_scanner.l
- zend_language_scanner.l: Make the C++less scanner compile under UNIX
-
-2001-08-06 Andi Gutmans <andi@zend.com>
-
- * zend_execute.c: - Move to using Z_ macros
-
- * zend_API.h: - Use Z_ macros
-
-2001-08-05 Zeev Suraski <zeev@zend.com>
-
- * zend_globals_macros.h: More nulled-out macros
-
- * zend.c
- zend_API.c
- zend_API.h: TSRMLS_FETCH work
-
-2001-08-04 stig <stig@pb1.pair.com>
-
- * .cvsignore: added some more stuff to .cvsignore
-
-2001-08-03 Zeev Suraski <zeev@zend.com>
-
- * zend_alloc.c: Fix buglet
-
- * zend_alloc.c: Fix macro
-
- * zend.c
- zend_alloc.c
- zend_globals.h:
- Implement fast memory allocation and reduced fragmentation under Windows.
-
- * zend_globals_macros.h: Some compat macros
-
-2001-08-02 Zeev Suraski <zeev@zend.com>
-
- * zend_execute.c:
- require_once()/include_once will return true in case a file was not included
- because it was already included earlier.
- Changed the default return value type of the include() family from long to
- boolean
-
- * zend_constants.c
- zend_execute_API.c
- zend_hash.c
- zend_hash.h:
- Avoid going over huge lists of functions, classes and constants.
- Special thanks to the guys from the MS lab for the profiling tools :)
-
- * zend.c
- zend_execute_API.c
- zend_hash.c
- zend_hash.h
- zend_list.c
- zend_list.h: Some cleanup
-
- * zend_builtin_functions.c
- zend_hash.c
- zend_hash.h: TSRMLS fixes
-
- * zend_ini_parser.y: non ZTS build fix
-
- * Zend.dsp
- ZendTS.dsp
- flex.skl
- zend.c
- zend_globals.h
- zend_globals_macros.h
- zend_highlight.c
- zend_indent.c
- zend_ini.h
- zend_ini_parser.y
- zend_ini_scanner.h
- zend_ini_scanner.l
- zend_language_scanner.h
- zend_language_scanner.l:
- Implement a standard C thread safe scanner within flex
-
-2001-08-01 Zeev Suraski <zeev@zend.com>
-
- * flex.skl
- zend_language_scanner.l:
- Implement fast scanning in the multithreaded environment
-
-2001-07-31 Zeev Suraski <zeev@zend.com>
-
- * zend_language_scanner.l: the make Sebastian happy part of the day :)
-
- * zend_ini.c
- zend_ini.h
- zend_ini_parser.y
- zend_ini_scanner.h
- zend_ini_scanner.l: More TSRMLS_FETCH work
-
- * zend_list.c
- zend_list.h: More TSRMLS_FETCH annihilation
-
- * zend.c
- zend.h
- zend_API.c
- zend_API.h
- zend_builtin_functions.c
- zend_compile.c
- zend_compile.h
- zend_constants.c
- zend_execute.c
- zend_execute.h
- zend_execute_API.c
- zend_extensions.c
- zend_extensions.h
- zend_hash.c
- zend_hash.h
- zend_ini.c
- zend_list.c
- zend_list.h
- zend_llist.c
- zend_llist.h
- zend_modules.h
- zend_opcode.c: More TSRMLS_FETCH work
-
-2001-07-30 Zeev Suraski <zeev@zend.com>
-
- * zend_language_scanner.l: Compile fix
-
- * zend.c
- zend_API.c
- zend_API.h
- zend_builtin_functions.c
- zend_compile.c
- zend_compile.h
- zend_constants.c
- zend_constants.h
- zend_execute.c
- zend_execute.h
- zend_execute_API.c
- zend_highlight.c
- zend_highlight.h
- zend_ini.c
- zend_ini.h
- zend_ini_parser.y
- zend_language_scanner.l
- zend_modules.h: More TSRMLS_FETCH work
-
- * zend_API.c
- zend_API.h
- zend_builtin_functions.c
- zend_modules.h:
- More TSRMLS_FETCH work, and get rid of redundant ParametersPassedByRef
-
-2001-07-30 Andrei Zmievski <andrei@ispi.net>
-
- * zend_API.c
- zend_API.h:
- Let's be consisten and keep TSRMLS_DC declaration after num_args.
-
-2001-07-30 Zeev Suraski <zeev@zend.com>
-
- * zend_API.c
- zend_API.h
- zend_builtin_functions.c
- zend_execute.c
- zend_execute_API.c
- zend_globals.h
- zend_hash.c
- zend_hash.h
- zend_highlight.h
- zend_ini_parser.y
- zend_ini_scanner.h
- zend_ini_scanner.l
- zend_language_parser.y
- zend_language_scanner.l
- zend_list.c
- zend_list.h
- zend_operators.c
- zend_operators.h
- zend_variables.c: More TSRMLS_FETCH annihilation
-
- * zend_API.c
- zend_API.h: Get rid of more TSRMLS_FETCH's
-
- * zend.c
- zend_API.c
- zend_API.h
- zend_builtin_functions.c
- zend_builtin_functions.h
- zend_compile.h
- zend_constants.c
- zend_execute.c
- zend_execute_API.c
- zend_opcode.c: Avoid TSRMLS_FETCH()'s (still lots of work left)
-
-2001-07-29 Andi Gutmans <andi@zend.com>
-
- * zend_execute.h: - More object junk
-
- * zend.c: - Object macros...
-
-2001-07-28 Andi Gutmans <andi@zend.com>
-
- * zend_operators.c: - Fix build
-
- * zend_operators.c: - More object macros.
-
- * zend_builtin_functions.c: - Use the Z_OBJ* macros for accessing objects
-
- * zend.h
- zend_operators.h:
- - Small patch to allow fixing the PHP tree to be compatible w/ the initial
- - Zend 2 objects patch. Hopefully I can commit that this week.
-
-2001-07-28 Zeev Suraski <zeev@zend.com>
-
- * Zend.dsp
- ZendTS.dsp
- zend.c
- zend.h
- zend_API.c
- zend_alloc.c
- zend_alloc.h
- zend_builtin_functions.c
- zend_compile.c
- zend_compile.h
- zend_execute.c
- zend_execute.h
- zend_execute_API.c
- zend_fast_cache.h
- zend_globals_macros.h
- zend_highlight.c
- zend_indent.c
- zend_ini_parser.y
- zend_ini_scanner.l
- zend_language_parser.y
- zend_language_scanner.h
- zend_language_scanner.l
- zend_opcode.c: Redesigned thread safety mechanism - nua nua
-
-2001-07-28 sascha <sascha@pb1.pair.com>
-
- * zend.h: Fix build
-
-2001-07-27 Zeev Suraski <zeev@zend.com>
-
- * zend.h
- zend_API.c
- zend_API.h
- zend_builtin_functions.c
- zend_compile.c
- zend_compile.h
- zend_constants.c
- zend_constants.h
- zend_execute.c
- zend_execute.h
- zend_execute_API.c
- zend_execute_locks.h
- zend_globals_macros.h
- zend_ini.c
- zend_ini.h
- zend_language_parser.y
- zend_language_scanner.l
- zend_list.c
- zend_list.h
- zend_modules.h
- zend_operators.c
- zend_variables.c
- zend.c: Get rid of ELS_*(), and use TSRMLS_*() instead.
- This patch is *bound* to break some files, as I must have had typos somewhere.
- If you use any uncommon extension, please try to build it...
-
-2001-07-23 sascha <sascha@pb1.pair.com>
-
- * zend_alloc.c: tsrm_error is only available, if TSRM_DEBUG is defined.
-
-2001-07-21 Zeev Suraski <zeev@zend.com>
-
- * zend.c
- zend.h: Always track bailout file/lineno
-
- * zend.c: Fix Release builds
-
- * zend.c
- zend.h
- zend_execute_API.c
- zend_globals.h
- zend_list.c:
- Improve bailout mechanism, supports nesting of bailouts a-la try..catch
-
- * zend_hash.c: Fix compile warning
-
-2001-07-21 Andrei Zmievski <andrei@ispi.net>
-
- * zend_compile.c:
- Fix certain cases where inheritance of base class's overloaded handlers wasn't
- being done.
-
-2001-07-20 Zeev Suraski <zeev@zend.com>
-
- * zend.c
- zend_execute_API.c
- zend_list.c:
- Implement a more granular shutdown mechanism for the executor -
- prevent corruption of constants and missing destructions of resources
-
-2001-07-19 Zeev Suraski <zeev@zend.com>
-
- * zend_compile.c: Unfix, it has too strong effects
-
- * zend_compile.c: Catch all cases
-
- * zend_compile.c: Fix bug #11970, strike 2
-
- * zend_execute.c: Revert bogus patch
-
-2001-07-18 Stanislav Malyshev <stas@zend.com>
-
- * zend_operators.c: fix double->long conversion
-
-2001-07-17 Andi Gutmans <andi@zend.com>
-
- * zend_hash.c: - Remove unused code
-
-2001-07-16 Zeev Suraski <zeev@zend.com>
-
- * zend_API.h
- zend_compile.c
- zend_globals.h
- zend_variables.c:
- Fix bug #10287 - avoid crashing under a bogus usage of list()
-
- * zend.h
- zend_compile.c
- zend_execute_API.c: Fix bug #10467
-
-2001-07-15 Zeev Suraski <zeev@zend.com>
-
- * zend_hash.h: Minor cleaning
-
- * zend_language_parser.y: Optimize the parser a bit
-
- * zend_language_scanner.h
- zend_language_scanner.l: Fix an inline
-
- * zend_variables.c
- zend_variables.h:
- Time to bid this old timer goodbye - get rid of var_uninit()
-
- * zend_hash.c: Fix bug #6239
-
- * zend_language_parser.y:
- Allow indirect reference to method names in class::method() construct
-
- * zend_execute_API.c: Fix bug #10257
-
- * zend_execute.c: Fix bug #11970
-
- * zend_compile.c: Fix bug #9884
-
- * zend.c
- zend_compile.c
- zend_compile.h
- zend_execute.c
- zend_execute.h
- zend_execute_API.c
- zend_globals.h
- zend_language_scanner.l
- zend_opcode.c:
- Improved interactive mode - it is now available in all builds, without any significant slowdown
-
- * zend.c: Early initialization
-
-2001-07-13 Zeev Suraski <zeev@zend.com>
-
- * zend_hash.c: layout
-
-2001-07-13 Thies C. Arntzen <thies@thieso.net>
-
- * zend_hash.c
- zend_hash.h
- zend_list.c:
- the resource-lists are now destroyed backwards. this will make sure that
- resources get destroyed in the opposite order they were created and thereby
- db-cursors will always be released before their corresponding connection etc.
- this sould not break anything!
-
-2001-07-11 Zeev Suraski <zeev@zend.com>
-
- * zend_API.c
- zend_ptr_stack.c
- zend_ptr_stack.h: Remove the last couple of bogus inlines
-
-2001-07-11 Andi Gutmans <andi@zend.com>
-
- * zend_hash.c
- zend_hash.h: - Move inline_zend_hash_func() to header file
-
-2001-07-11 Thies C. Arntzen <thies@thieso.net>
-
- * zend_API.h: fixed ZVAL_FALSE and ZVAL_TRUE
-
-2001-07-11 Stanislav Malyshev <stas@zend.com>
-
- * zend_hash.h: No hashpjw anymore, but we have zend_hash_func
-
-2001-07-11 Zeev Suraski <zeev@zend.com>
-
- * zend_operators.c
- zend_variables.h: Get rid of ZVAL_RESET...
-
- * zend_API.c
- zend_operators.c
- zend_variables.c
- zend_variables.h: Get rid of some inlines
-
-2001-07-10 Andi Gutmans <andi@zend.com>
-
- * zend_extensions.h
- zend_hash.c
- zend_hash.h: - Merge faster hash implementation.
- - The hash function parameter in hash_init(...) is not used anymore.
- - It should be removed but it is "to be decided" if we want to do that now
- - or in a major version as it means changing MANY places and third party
- - modules might stop working.
-
-2001-07-10 Thies C. Arntzen <thies@thieso.net>
-
- * zend_API.h
- zend_variables.c: cleaned up the RETVAL_ RETURN_ and ZVAL_ macros
-
- added check for \0 at end-of-string at some places. all strings in PHP
- have to be terminated with \0 because 3th party libraries might not be
- binary-safe.
-
-2001-07-10 Andi Gutmans <andi@zend.com>
-
- * zend_compile.c: - Commit Thies' patch. str.len was too long.
-
-2001-07-09 Andrei Zmievski <andrei@ispi.net>
-
- * zend_API.c
- zend_API.h: Adding new parameter parsing API.
-
-2001-07-09 Andi Gutmans <andi@zend.com>
-
- * zend_hash.c
- zend_hash.h:
- - Significantly improve hash table performance by using djb's hash function
- instead of hashpjw() and by using power of two sizes of hash tables (this
- saves the % and isn't necessary with a good hash function).
- Please try this patch.
-
-2001-07-03 Rasmus Lerdorf <rasmus@php.net>
-
- * zend_API.c: Trivial fix - but the period looks odd in error messages
-
-2001-06-30 Andi Gutmans <andi@zend.com>
-
- * zend_alloc.c: - Fix the memory limit fix.
-
-2001-06-29 Andi Gutmans <andi@zend.com>
-
- * zend_operators.c: - Remove bogus comment.
-
-2001-06-29 Zeev Suraski <zeev@zend.com>
-
- * zend_alloc.c: Fix memory_limit, kill warning
-
-2001-06-28 Zeev Suraski <zeev@zend.com>
-
- * zend_execute_locks.h: Fix warnings
-
-2001-06-27 Zeev Suraski <zeev@zend.com>
-
- * zend_execute.c:
- Fix leak in the patch, and revert a couple of lines I didn't mean to commit
-
- * zend_execute.c: - Warn about illegal offsets
- - Allow assignments to uninitialized string offsets (automatically pads the
- string with spaces)
-
-2001-06-26 Zeev Suraski <zeev@zend.com>
-
- * zend_operators.c:
- Fixed autoconversion of negative values to double (Fix bug #11685)
-
-2001-06-26 Andi Gutmans <andi@zend.com>
-
- * zend_builtin_functions.c: - Fix crash bug (fix by Jani).
-
-2001-06-24 Andi Gutmans <andi@zend.com>
-
- * zend.h: - Bump Zend version
-
-2001-06-21 Andi Gutmans <andi@zend.com>
-
- * zend_execute.c
- zend_execute_locks.h
- zend_globals.h:
- - Hopefully fix bug #11476 and improve garbage to be freed very quickly.
- Tree tagged as PRE_GRANULAR_GARBAGE_FIX before commiting.
-
- * zend_execute_locks.h:
- - Use inline instead of macro for PZVAL_LOCK()/PZVAL_UNLOCK() so that it
- can be debugged.
-
- * zend_execute.c
- zend_execute.h
- zend_execute_API.c:
- - Nuke dependency of all of PHP on zend_execute_locks.h.
-
-2001-06-21 Zeev Suraski <zeev@zend.com>
-
- * zend_execute.c:
- Eliminate the leak that the original bogus code tried to solve
-
- * zend_compile.c
- zend_execute.c
- zend_globals.h:
- parent::methodname() now works better with runtime classes (fix bug #11589)
-
- * zend_execute.c:
- Fix bug #11590 (I want Andi to also review this patch before it goes into 4.0.6)
-
-2001-06-20 Andi Gutmans <andi@zend.com>
-
- * zend_execute.c: - MFH
-
- * zend_execute.c: - Fix string offsets crash.
-
-2001-06-19 Andi Gutmans <andi@zend.com>
-
- * zend_alloc.c: - Real MFH of memory fragmentation patch
-
- * zend_alloc.c: - Bad merge. Revert the previous patch (damn CVS).
-
- * zend_alloc.c: - MFH
-
- * zend_alloc.c:
- - Fix memory fragmention problem which could lead to web server processes
- growing much more than they should. (bug #11344?)
-
- * zend_execute.c
- zend_execute.h: - MFH
-
-2001-06-19 Zeev Suraski <zeev@zend.com>
-
- * zend_execute.c
- zend_execute.h: Add missing exports
-
- * zend_execute.c: Fix warning
-
-2001-06-13 Zeev Suraski <zeev@zend.com>
-
- * zend.c: MFH
-
- * zend.c:
- Avoid crashing if the error reporting function is called after a bailout during shutdown
-
-2001-06-12 Zeev Suraski <zeev@zend.com>
-
- * zend_highlight.c:
- Improve XHTML compliance (suggested by Anil Madhavapeddy)
-
-2001-06-10 Zeev Suraski <zeev@zend.com>
-
- * zend.c: Fix ZTS build problem
-
-2001-06-07 Andi Gutmans <andi@zend.com>
-
- * zend_compile.h: - Avoid breaking op_array compatibility for 4.0.6
-
-2001-05-30 Zeev Suraski <zeev@zend.com>
-
- * Zend.m4
- zend_execute_API.c: Add missing check
-
-2001-05-25 Andi Gutmans <andi@zend.com>
-
- * zend_compile.c:
- - Change if() to while() to make sure we skip enough opcodes
-
- * zend_compile.c: - MFH
-
- * zend_compile.c: - Fix memory leak
-
-2001-05-23 Andrei Zmievski <andrei@ispi.net>
-
- * zend_builtin_functions.c:
- Fix segfault -- need to copy-construct constant value.
-
-2001-05-21 Andrei Zmievski <andrei@ispi.net>
-
- * zend_builtin_functions.c: Moving some functions into Zend.
-
-2001-05-20 sascha <sascha@pb1.pair.com>
-
- * .cvsignore: ignore ylwrap
-
-2001-05-20 Andi Gutmans <andi@zend.com>
-
- * zend_list.h: - The previous name could be confused with resource #
-
- * zend_list.c
- zend_list.h:
- - Whitespace and change the name of the macro to something more verbose
- ZEND_GET_RESOURCE_ID(...)
-
-2001-05-20 James Moore <James@phpuk.org>
-
- * zend_list.c
- zend_list.h: - Add new ZEND_GET_LE macro for retrieving destructor
- id's from remote extensions. (Jmoore, Zend Engine)
-
-2001-05-20 Andi Gutmans <andi@zend.com>
-
- * zend_list.c: - Don't allow resource types of 0
-
-2001-05-19 sascha <sascha@pb1.pair.com>
-
- * zend_hash.c: Fix segfault when using zend_hash_add_empty_element
-
-2001-05-18 Thies C. Arntzen <thies@thieso.net>
-
- * zend_alloc.c: reset allocated_memory_peak after each request.
-
-2001-05-17 Zeev Suraski <zeev@zend.com>
-
- * zend_language_scanner.l: That's slightly clearer that way :)
-
- * zend_alloc.c: Fix build
-
- * zend.c: MFH
-
- * zend.c: Fix corruption issue
-
-2001-05-16 Zeev Suraski <zeev@zend.com>
-
- * zend_hash.c
- zend_hash.h:
- Implement zend_hash_add_empty_element() using the existing infrastructure
-
- * zend_globals.h: Commit missing fix
-
- * Zend.m4
- zend_alloc.c
- zend_globals.h: Merge memory usage into memory limit
-
-2001-05-14 sascha <sascha@pb1.pair.com>
-
- * zend_hash.c:
- Initialize empty pDataPtr to a pseudo value to prevent a pefree on
- pData.
-
-2001-05-12 Andi Gutmans <andi@zend.com>
-
- * zend_variables.c: - Remove check for ht == NULL in copy_ctor.
- If ht is NULL at this point then we are better off crashing and fixing
- the bug that caused it.
-
-2001-05-11 sascha <sascha@pb1.pair.com>
-
- * zend.h: add missing closing paranthesis
-
- * zend_hash.c: Some extensions don't associate any data with hash entries,
- except the key. Prior to this change, a separate chunk of memory
- was allocated in that case to store exactly zero bytes (plus
- memory manager overhead). We treat that case similar to the
- pointer case, but don't copy any data at all (because the pointer
- is usually the NULL pointer).
-
- * zend_constants.c:
- Fix a memory leak which occured upon registering an already existing
- constant.
-
-2001-05-11 Thies C. Arntzen <thies@thieso.net>
-
- * Zend.m4
- zend_alloc.c
- zend_globals.h: added --enable-memory-usage-info
-
-2001-05-11 Andi Gutmans <andi@zend.com>
-
- * zend_opcode.c: - MFH
-
- * zend_opcode.c:
- - Fix crash bug when opcodes array is erealloc()'ed to a different memory
- area before it reaches the loop.
- - Some whitespace stuff
-
-2001-05-10 Zeev Suraski <zeev@zend.com>
-
- * zend_operators.c:
- Treat numeric strings as numbers in the increment operator
-
-2001-05-09 Andrei Zmievski <andrei@ispi.net>
-
- * zend_API.c: Nuke unused variable.
-
- * zend_API.c: Fix a few bugs in zend_is_callable() and make it stricter.
-
-2001-05-08 Andi Gutmans <andi@zend.com>
-
- * zend_language_scanner.l: - Fix line numbers when some lines end with \r
-
- * zend_opcode.c: - Fix crash bug reported by DBG author Dmitri Dmitrienko.
-
-2001-05-07 Zeev Suraski <zeev@zend.com>
-
- * zend.c: Make zend_execute_scripts() reentrant
-
-2001-05-06 Zeev Suraski <zeev@zend.com>
-
- * zend.c
- zend_compile.c
- zend_compile.h:
- Recover from a parse error in include files (before, it could result in a crash under certain circumstances). Fix bug #8663
-
-2001-05-06 Andi Gutmans <andi@zend.com>
-
- * .cvsignore: - .cc files were renamed. Update .cvsignore.
-
-2001-05-06 Zeev Suraski <zeev@zend.com>
-
- * zend_operators.h: Yikes, that would have been a very bad bug :)
-
- * zend_execute.c:
- Floating point keys didn't work in array() (fix bug #6662)
-
- * zend_compile.c
- zend_execute_API.c:
- Hear hear, interactive mode is finally showing some progress:
- - Support function calls
- - Fix crash bug
-
- * zend_compile.h
- zend_language_parser.y
- zend_language_scanner.l: Support interactive mode in thread-safe builds
-
- * zend_operators.h: Fix autoconversion of hexadecimal strings
- It's time to close bug #5404 :)
-
- * zend_highlight.c: Retain single spaces as spaces to condense HTML
-
-2001-05-02 Andi Gutmans <andi@zend.com>
-
- * zend_ini_scanner.l: - Support \r as newline in the ini scanner
-
- * zend_language_scanner.l: - Handle MAC OS X \r line endings
-
- * zend_execute.c:
- - Patch by Andrei to prevent crash in error situation when not all
- object overloading handles are defined.
-
-2001-05-01 Andi Gutmans <andi@zend.com>
-
- * zend.h: - Bump up Zend version
-
-2001-04-30 Andi Gutmans <andi@zend.com>
-
- * zend_builtin_functions.c: - Add mistakenly removen closing bracket
-
- * zend_builtin_functions.c: - Get rid of warning
-
- * zend_alloc.c:
- - Try to solve crash on OS400. There is actually no reason I can see for
- why his fix should solve a crash but it doesn't harm.
-
- * zend_execute_API.c: - Fix crash bug in interactive mode
-
-2001-04-29 Andi Gutmans <andi@zend.com>
-
- * zend_alloc.h: - Whitespace
-
- * zend_alloc.c
- zend_alloc.h: - Improve overwrite detection in debug mode.
-
- * zend_operators.c:
- - Previous patch for too early freeing of resources seemed to have worked.
- - Clean it up a bit.
-
- * zend_operators.c:
- - Try and solve the too early resource destruction problem.
-
-2001-04-28 Zeev Suraski <zeev@zend.com>
-
- * zend.h
- zend_hash.c
- zend_language_scanner.l
- zend_operators.c: include limits.h if available
-
- * zend.h: Fix bug 5661
-
-2001-04-28 Andi Gutmans <andi@zend.com>
-
- * zend_operators.c: - Move all cases into switch().
-
- * zend_alloc.c: - Just some little whitespace stuff.
-
- * zend_alloc.c:
- - Don't add/remove cached memory blocks from blocks list as this will slow
- - down performance a bit.
-
-2001-04-28 Zeev Suraski <zeev@zend.com>
-
- * zend_operators.c:
- Resources weren't being properly destroyed by the convert_to_*() functions
-
-2001-04-27 Andi Gutmans <andi@zend.com>
-
- * zend_API.c
- zend_builtin_functions.c
- zend_hash.c
- zend_language_scanner.l
- zend_operators.c
- zend_operators.h: - More whitespace fixes while I'm at it.
-
- * zend.h
- zend_alloc.c
- zend_builtin_functions.c
- zend_execute_API.c
- zend_extensions.c
- zend_language_scanner.l:
- - Whitespace changes to be standard like the rest of Zend
-
-2001-04-24 Andi Gutmans <andi@zend.com>
-
- * zend_execute.c: - Due to popular demand merge the foreach() crash fix.
-
-2001-04-24 Andrei Zmievski <andrei@ispi.net>
-
- * zend_builtin_functions.c: MFH.
-
-2001-04-21 Andi Gutmans <andi@zend.com>
-
- * zend_llist.c
- zend_llist.h: - Add typedef for function pointer of llist dtor
-
-2001-04-20 Andi Gutmans <andi@zend.com>
-
- * zend_execute.c:
- - Fix for crash bug when using invalid arguments in the foreach() loop.
- - Reported by Yasuo Ohgaki
-
-2001-04-19 Andi Gutmans <andi@zend.com>
-
- * zend_API.h: - Patch from Jason Greene.
- - Make it easier to write PHP function definitions in more than just one .c
- file while accessing the same module globals.
-
-2001-04-17 Zeev Suraski <zeev@zend.com>
-
- * zend_alloc.c: small beautification
-
-2001-03-28 Zeev Suraski <zeev@zend.com>
-
- * zend_list.c: Fix warning
-
- * zend_list.c: Make Windows happy
-
- * zend_list.c: Get rid of more redundant code
-
- * zend_list.c:
- Cleaner way of making sure resources start at 1 and not 0...
-
- * zend_list.c
- zend_list.h: Remove redundant code
-
-2001-03-27 Zeev Suraski <zeev@zend.com>
-
- * zend_list.c
- zend_list.h: God knows what this code was doing...
-
-2001-03-26 Andrei Zmievski <andrei@ispi.net>
-
- * zend_builtin_functions.c:
- Updated get_class_methods() to take class instance as well as class name.
-
- * zend_builtin_functions.c:
- Making it possible to pass a class name to get_parent_class() as well
- as a class instance.
-
-2001-03-23 Andrei Zmievski <andrei@ispi.net>
-
- * zend_builtin_functions.c: Fixing function name length.
-
-2001-03-19 Andi Gutmans <andi@zend.com>
-
- * zend_language_parser.y:
- - Add support for isset($var1, $var2, $var3); - Will be true only if all
- - variables are set.
-
-2001-03-15 Andi Gutmans <andi@zend.com>
-
- * zend_language_parser.y: - Nuke commented code
-
-2001-03-12 Andrei Zmievski <andrei@ispi.net>
-
- * zend_API.c: Name length is already known.
-
-2001-03-12 Andi Gutmans <andi@zend.com>
-
- * zend_API.c: - Missed second place.
-
- * zend_API.c: - Nuke snprintf()
-
- * zend_language_scanner.l: - White space
-
- * zend_language_scanner.l:
- - Fix by Jani Taskinen <sniper@iki.fi> for whole path also to work
- with include_once()/require_once().
-
-2001-03-12 Andrei Zmievski <andrei@ispi.net>
-
- * zend_API.c
- zend_API.h:
- Improve zend_is_callable() to the point where it's actually useful.
- Now it just needs to be invoked everywhere in PHP where a callback is
- expected.
-
-2001-03-11 Andi Gutmans <andi@zend.com>
-
- * Zend.m4
- acconfig.h: - Fix for Solaris.
-
-2001-03-10 Andi Gutmans <andi@zend.com>
-
- * zend_execute.c: - Whitespace
-
-2001-03-07 Zeev Suraski <zeev@zend.com>
-
- * zend_ini.h: Add missing #define's
-
- * zend_compile.c
- zend_execute.c: Make parent:: work in runtime bindings as well
-
-2001-03-06 sascha <sascha@pb1.pair.com>
-
- * Zend.m4: We actually only need AC_PROG_LEX here.
-
-2001-03-04 Zeev Suraski <zeev@zend.com>
-
- * zend_execute.c: Fix bug #8899 (thanks Jani)
-
-2001-03-03 sascha <sascha@pb1.pair.com>
-
- * Zend.m4: -Os is a valid GCC optimization level.
-
-2001-03-02 Zeev Suraski <zeev@zend.com>
-
- * zend_compile.c: Whitespace fix
-
-2001-02-28 Andrei Zmievski <andrei@ispi.net>
-
- * zend_execute_API.c: Do case-insensitive class name matching when parsing
- array('Class', 'method') structure.
- You guys can clean it up, if there is a better way.
-
-2001-02-27 Andi Gutmans <andi@zend.com>
-
- * zend_variables.c
- zend_variables.h: - Nuke zval_del_ref()
-
-2001-02-27 Andrei Zmievski <andrei@ispi.net>
-
- * zend_compile.c: Don't overwrite existing handlers with parent ones.
-
-2001-02-26 Andi Gutmans <andi@zend.com>
-
- * Zend.dsp
- ZendCore.dep
- ZendTS.dsp
- zend.c
- zend_API.c
- zend_API.h: - Rename modules.h to zend_modules.h
-
- * LICENSE: - One more copyright year update
-
- * zend_ini.h
- zend_ini_parser.y
- zend_ini_scanner.l
- zend_language_parser.y
- zend_language_scanner.h
- zend_language_scanner.l
- zend_list.c
- zend_list.h
- zend_llist.c
- zend_llist.h
- zend_opcode.c
- zend_operators.c
- zend_operators.h
- zend_ptr_stack.c
- zend_ptr_stack.h
- zend_sprintf.c
- zend_stack.c
- zend_stack.h
- zend_static_allocator.c
- zend_static_allocator.h
- zend_variables.c
- zend_variables.h
- zend.c
- zend.h
- zend_API.c
- zend_API.h
- zend_alloc.c
- zend_alloc.h
- zend_builtin_functions.c
- zend_builtin_functions.h
- zend_compile.c
- zend_compile.h
- zend_config.w32.h
- zend_constants.c
- zend_constants.h
- zend_dynamic_array.c
- zend_dynamic_array.h
- zend_errors.h
- zend_execute.c
- zend_execute.h
- zend_execute_API.c
- zend_extensions.c
- zend_extensions.h
- zend_fast_cache.h
- zend_globals.h
- zend_globals_macros.h
- zend_hash.c
- zend_hash.h
- zend_highlight.c
- zend_highlight.h
- zend_indent.c
- zend_indent.h
- zend_ini.c
- zend_modules.h: - Update copyright year
-
-2001-02-25 Andi Gutmans <andi@zend.com>
-
- * zend_modules.h: - Fix dll linkage warnings
-
-2001-02-24 Andi Gutmans <andi@zend.com>
-
- * zend_builtin_functions.c
- zend_modules.h: - Add exports from Daniel Beulshausen
-
-2001-02-14 Stanislav Malyshev <stas@zend.com>
-
- * zend.h: allow more extensions with resources
-
-2001-02-13 Zeev Suraski <zeev@zend.com>
-
- * zend_extensions.c: Move version registration to a more correct place
-
-2001-02-12 Andi Gutmans <andi@zend.com>
-
- * zend_operators.c
- zend_operators.h: - Remove two unused functions
-
- * zend_execute_API.c: - Fix whitespace.
-
-2001-02-12 Zeev Suraski <zeev@zend.com>
-
- * zend_execute_API.c:
- Fix a bug that could cause corruption in case of an error during
- get_zval_ptr()
-
-2001-02-09 Andi Gutmans <andi@zend.com>
-
- * zend_execute.c:
- - Remove duplicate code and do a tiny optimization in DO_FCALL
-
-2001-02-05 Zeev Suraski <zeev@zend.com>
-
- * zend_execute.c: Fix string offset data corruption
-
-2001-02-04 Andrei Zmievski <andrei@ispi.net>
-
- * zend_execute_API.c:
- Allow passing class name as well as an object instance to call methods.
-
-2001-02-03 Andrei Zmievski <andrei@ispi.net>
-
- * zend_execute_API.c:
- Set the correct function state during execution. This is mainly to have
- get_active_function_name() to return proper value.
-
- * zend_compile.c: Inherit overloaded handlers.
-
-2001-02-01 Andrei Zmievski <andrei@ispi.net>
-
- * zend_API.c
- zend_API.h:
- Added zend_is_callable() function that checks whether passed zval
- represents a valid and exiting callable construct.
-
-2001-01-31 Andi Gutmans <andi@zend.com>
-
- * zend_API.h
- zend_API.c: - Change unset() functions to null(). unset() is legacy
-
- * zend_API.h:
- - Quick fix. I'm for changing these to add_property_null() as we've nuked
- - unset.
-
-2001-01-27 Andi Gutmans <andi@zend.com>
-
- * zend_execute.c: - That doesn't seem like a smart thing to do :)
- - I wonder if gcc optimized it out.
-
-2001-01-23 Thies C. Arntzen <thies@thieso.net>
-
- * zend_extensions.h
- zend_ini_scanner.h
- zend_list.c
- zend_list.h: fix a couple of warnings
-
- * zend_API.c: fixed crash in add_index_bool.
-
-2001-01-22 Andrei Zmievski <andrei@ispi.net>
-
- * zend_API.h: Make add_index_zval() available to the outside world.
-
-2001-01-21 Andi Gutmans <andi@zend.com>
-
- * zend.h:
- - Make people happy who like the Zend version number bumped up in parallel
- with PHP.
-
-2001-01-20 Andi Gutmans <andi@zend.com>
-
- * zend_API.c
- zend_API.h:
- - Patch from Sterling. Add API calls to add zval's as array indeces/
- object properties. Add _ex functions which take the string length as an
- argument for better performance.
-
-2001-01-19 Andi Gutmans <andi@zend.com>
-
- * zend_API.h
- zend_API.c:
- - For Sterling. I wonder if not all of the API functions should take the
- - key_length as a parameter in order to save that strlen().
-
-2001-01-17 Andi Gutmans <andi@zend.com>
-
- * zend_execute.c:
- - Fix leak in fetch_dim_address() which was already fixed in
- - fetch_dim_object(). Take the oppertunity to make both use the same
- - function and not duplicate the code.
-
-2001-01-16 Zeev Suraski <zeev@zend.com>
-
- * zend_list.c: Fix persistent resources, once and for all...
-
-2001-01-15 Zeev Suraski <zeev@zend.com>
-
- * zend.c
- zend.h
- zend_compile.c: Add free_estring()
-
-2001-01-12 Zeev Suraski <zeev@zend.com>
-
- * zend_istdiostream.h: Add newline
-
-2001-01-12 Rasmus Lerdorf <rasmus@php.net>
-
- * zend_highlight.c: Fix for bug number 8666
-
-2001-01-07 Zeev Suraski <zeev@zend.com>
-
- * zend_ini.c: Fix mismatch in return values
-
- * zend.c
- zend.h
- zend_alloc.c
- zend_ini.c
- zend_ini.h: - Remove backward dependency from PHP -> Zend
- - Rename get_ini_entry() as get_configuration_directive() for clarity
- (it doesn't use the INI subsystem, but the module-supplied function for
- retrieving configuration directives)
-
- * Zend.dsp
- ZendTS.dsp: Remove -S option on all bison calls
-
- * zend.c:
- Fix possibility of a crash during startup (very unlikely, but possible)
-
-2001-01-06 Zeev Suraski <zeev@zend.com>
-
- * ZendTS.dsp: Remove -S
-
-2001-01-06 Andi Gutmans <andi@zend.com>
-
- * zend_ini.c: - This slipped in by mistake.
-
-2001-01-05 Zeev Suraski <zeev@zend.com>
-
- * zend_ini.c
- zend_ini.h:
- Merge in some ZEND_API additions from Daniel Beulshausen (needed for the
- Win32 Apache module)
-
-2001-01-04 Andi Gutmans <andi@zend.com>
-
- * zend_list.c:
- - Make plist_destructor work like list_destructor to allow it to call
- extended destructors.
-
-2001-01-03 Zeev Suraski <zeev@zend.com>
-
- * zend.h: Fix Zend version while we're at it
-
- * zend_execute_API.c: Merge call_user_function_ex() fixes
-
- * zend_language_scanner.l: Merge line number corruption bug fix
-
- * zend_language_scanner.l:
- Fix another case of possible line number corruption
-
- * zend.h: Commit missing declaration
-
-2001-01-01 Andi Gutmans <andi@zend.com>
-
- * zend_execute.c: - Remove unreachable code
-
-2000-12-30 Zeev Suraski <zeev@zend.com>
-
- * zend_language_scanner.l
- zend_opcode.c: Fix possible corruption in line number information
-
-2000-12-27 Zeev Suraski <zeev@zend.com>
-
- * zend.c
- zend_globals.h
- zend_ini.c
- zend_ini.h
- ZendTS.dsp:
- Make the INI mechanism thread safe (or at least thread safer :)
-
-2000-12-26 Zeev Suraski <zeev@zend.com>
-
- * zend_compile.h:
- Use iostream.h instead of istream.h (IBM's compiler doesn't come with istream.h,
- and iostream.h should include it)
-
- * ZendTS.dsp
- zend_ini_scanner.l
- zend_istdiostream.h
- zend_language_scanner.l:
- - Use supplied istdiostream definition for the INI scanner too
- - Add Release_TSDbg configuration
-
-2000-12-24 Zeev Suraski <zeev@zend.com>
-
- * zend_extensions.h: This needs updating as well
-
- * zend_execute_API.c:
- More aggressive protection in call_user_function_ex()
-
-2000-12-23 Zeev Suraski <zeev@zend.com>
-
- * zend_execute_API.c:
- Fix a possible crash bug in call_user_function_ex(), if the function is
- in fact not a user function
-
-2000-12-22 sascha <sascha@pb1.pair.com>
-
- * zend.c
- zend_modules.h:
- Set the floating-point exception mask on FreeBSD to 0 (as do other
- FreeBSD system applications). Also bump up the module API number
- as the zend_hash_get_current_key change affects source and binary
- compatibility.
-
-2000-12-22 Zeev Suraski <zeev@zend.com>
-
- * zend.c
- zend_builtin_functions.c
- zend_execute.c
- zend_hash.c
- zend_hash.h:
- Allow get_current_key() not to return the key itself, instead of a duplicate
-
- * zend_hash.c: * Fixed a possible crash in get_class_methods()
-
-2000-12-19 Stanislav Malyshev <stas@zend.com>
-
- * zend_language_scanner.l: Add support for ASP tags in one-line comment
-
-2000-12-18 Andi Gutmans <andi@zend.com>
-
- * flex.skl: - Success! Yay!
-
- * flex.skl: - Yet another one.
-
- * flex.skl: - Testing
-
- * flex.skl: - No luck
-
- * flex.skl: - Make this damn commit stuff work.
-
- * flex.skl: - Testing
-
-2000-12-18 Stanislav Malyshev <stas@zend.com>
-
- * zend.c:
- Use HashPosition iterator instead of saving/restoring internal pointer
-
- * zend.c: Preserve internal pointer over print_r (fix #8289)
-
-2000-12-18 Andi Gutmans <andi@zend.com>
-
- * zend_compile.c: - Fix leak with useless statements such as "foo";
-
- * flex.skl:
- - Testing Sascha's CVS commit script which should work with branches.
-
- * flex.skl: - Testing
-
- * flex.skl: - Testin
-
-2000-12-18 Zeev Suraski <zeev@zend.com>
-
- * flex.skl: Test, ignore
-
-2000-12-18 Stanislav Malyshev <stas@zend.com>
-
- * zend_operators.c: Add notice when auto-converting array to string
-
-2000-12-17 Andi Gutmans <andi@zend.com>
-
- * zend_language_scanner.l:
- - Clean up the scanner a tiny bit while messing with it.
-
- * zend_language_scanner.l:
- - %> without asp_tags should not be treated as inline_html but as regular
- tokens. Of course the parser will die with a parse error which is the
- correct behavior.
-
- * zend_language_scanner.l:
- - Fix problem in one line comments with line endings such as ??>
-
-2000-12-17 Stanislav Malyshev <stas@zend.com>
-
- * zend_operators.c: Fix #8279 (-2147483647 > 2147483647).
-
-2000-12-14 Zeev Suraski <zeev@zend.com>
-
- * zend_modules.h: Update module_api_no
-
-2000-12-13 Zeev Suraski <zeev@zend.com>
-
- * zend_API.h
- zend_execute_API.c:
- Fix call_user_function() with objects - it could leak under certain circumstances
-
-2000-12-12 Stanislav Malyshev <stas@zend.com>
-
- * zend_operators.c: Fix #8195: strncasecmp returns incorrect value
-
-2000-12-07 sascha <sascha@pb1.pair.com>
-
- * zend_builtin_functions.c:
- Hardcode strlen due to problems on SCO OpenServer 5.0.4 which defines
- strlen to __std_hdr_strlen.
-
-2000-12-07 Stanislav Malyshev <stas@zend.com>
-
- * zend_compile.c: Whitespace fix
-
- * zend_compile.c: Allow var $foo = array(ABC => 1) constructs
-
- * zend_builtin_functions.c:
- Fix memory leak - get_current_key mallocs it's result, no need to
- copy it.
-
-2000-12-06 sascha <sascha@pb1.pair.com>
-
- * zend_hash.c:
- INIT_DATA/UPDATE_DATA assumed that pData elements of the size of a void
- pointer would actually be aligned like a void pointer. This lead
- to bus errors on architectures which don't allow unaligned 32-bit accesses.
-
-2000-12-05 Andi Gutmans <andi@zend.com>
-
- * zend_language_parser.y:
- - Support for $var =& new foo() syntax. This allows you to use objects
- which create extra references to themselves in the constructor.
-
-2000-12-05 Zeev Suraski <zeev@zend.com>
-
- * zend_execute.h: Expose all timeout functions
-
-2000-12-02 sascha <sascha@pb1.pair.com>
-
- * acconfig.h
- configure.in:
- Use the hardly-documented third parameter of AM_INIT_AUTOMAKE to suppress
- defining PACKAGE/VERSION.
-
-2000-11-27 Andi Gutmans <andi@zend.com>
-
- * zend_compile.c
- zend_compile.h
- zend_execute.c:
- - Allow passing references which are returned from functions and new
- - statements to be passed by reference.
-
-2000-11-27 Andrei Zmievski <andrei@ispi.net>
-
- * zend_builtin_functions.c:
- Update class constants before trying to get default properties.
-
-2000-11-22 Andi Gutmans <andi@zend.com>
-
- * zend_compile.c: - Remove code which has been commented out for ages.
-
-2000-11-22 sascha <sascha@pb1.pair.com>
-
- * zend_execute.c
- zend_globals.h: Pass on the exit status
-
-2000-11-21 Zeev Suraski <zeev@zend.com>
-
- * zend_operators.c
- zend_operators.h: Fix build
-
-2000-11-21 Andi Gutmans <andi@zend.com>
-
- * zend_execute.c: - The baby patch wasn't that innocent :)
-
-2000-11-21 Andrei Zmievski <andrei@ispi.net>
-
- * zend_builtin_functions.c:
- Sterling's patch to make get_defined_vars() simpler and better.
-
-2000-11-20 Andi Gutmans <andi@zend.com>
-
- * zend_execute.c: - NEVER copy and paste :)
-
- * zend_compile.c
- zend_execute.c: - Baby patch towards making the damn pass-by-ref work.
-
-2000-11-20 Zeev Suraski <zeev@zend.com>
-
- * zend_extensions.h: Update API number
-
-2000-11-20 Stanislav Malyshev <stas@zend.com>
-
- * zend.h:
- Add macro to replace value of zval with another value while preserving
- referencing structure
-
-2000-11-20 Andi Gutmans <andi@zend.com>
-
- * zend_execute.c: - This patch is broken and needs more thorough fixing.
-
-2000-11-19 Andi Gutmans <andi@zend.com>
-
- * zend_execute.c:
- - Try and fix the problem when sending references returned from a function by reference.
-
-2000-11-19 Zeev Suraski <zeev@zend.com>
-
- * zend_alloc.h: Fix Zend build for non ZTS
-
-2000-11-18 Zeev Suraski <zeev@zend.com>
-
- * zend_alloc.c: Forgot to commit the non-debug build fix yesterday...
-
- * zend_alloc.c
- zend_alloc.h:
- Add thread-safety debugging information (idea - Dmitri Dmitrienko)
-
-2000-11-14 Stanislav Malyshev <stas@zend.com>
-
- * zend_language_scanner.l: Restore compatibility with old broken way
-
- * zend_language_scanner.l:
- Better 0x handling - not change non-0x number behaviour
-
- * zend_language_scanner.l:
- Attempt at better handling long 0x-numbers, like 0xffffffff
-
-2000-11-13 Andi Gutmans <andi@zend.com>
-
- * zend_extensions.c
- zend_extensions.h: - Remove unused function
-
- * zend_extensions.h:
- - Use typedef's for function pointers so that we can easily define arrays
- - of these function pointers.
-
-2000-11-13 Stanislav Malyshev <stas@zend.com>
-
- * zend_llist.c:
- Fix zend_llist_apply_with_del - it should remove from list,
- not only call dtor
-
-2000-11-12 Zeev Suraski <zeev@zend.com>
-
- * ZEND_CHANGES: Test, ignore
-
-2000-11-11 Andi Gutmans <andi@zend.com>
-
- * zend_compile.c
- zend_compile.h: - Move SET_UNUSED() to header
-
- * zend_opcode.c: - Beautify by using the standard #define.
-
-2000-11-10 Andi Gutmans <andi@zend.com>
-
- * zend_compile.h
- zend_compile.c: - Remove this damn thing once again.
-
- * .cvsignore: - Add files to .cvsignore thanks to Jon Parise
-
-2000-11-09 Andi Gutmans <andi@zend.com>
-
- * zend_compile.c
- zend_compile.h: - Maybe it's OK now? :)
-
- * zend_compile.c
- zend_compile.h: - Undo the previous commit for fixing $obj = new foo().
-
- * zend_compile.c
- zend_compile.h:
- - Commit experimental patch to fix the problem when doing $a = new foo()
- and the constructor assigns $this by reference to other symbol table
- elements. Thanks to Daniel J. Rodriguez on this one.
-
-2000-11-08 Zeev Suraski <zeev@zend.com>
-
- * zend_extensions.c
- zend_extensions.h: Add ability to find extensions by name
-
-2000-11-06 sascha <sascha@pb1.pair.com>
-
- * zend_ini.c: Kill a misleading warning which is intended for old code
- which assumes sizeof(int) == sizeof(void *).
-
-2000-11-03 Andi Gutmans <andi@zend.com>
-
- * zend_ini_scanner.h: - Add trailing \n?
-
-2000-11-03 Zeev Suraski <zeev@zend.com>
-
- * zend_ini_scanner.l: Fix for bug #5571 (by mookid@sigent.ru)
-
-2000-11-03 Andi Gutmans <andi@zend.com>
-
- * Makefile.am: - Fix dependency.
-
-2000-11-03 Zeev Suraski <zeev@zend.com>
-
- * zend_operators.h: Fix build
-
- * zend_operators.h: Add RESVAL macros
-
-2000-11-02 Zeev Suraski <zeev@zend.com>
-
- * zend.c: Fix bug #7599
-
- * zend_language_parser.y
- zend_language_scanner.l: Missed those
-
- * zend_API.c
- zend_compile.c
- zend_compile.h: Maintain consistency
-
-2000-11-02 Andi Gutmans <andi@zend.com>
-
- * zend_compile.c
- zend_compile.h
- zend_language_parser.y: - Replace do_exit() with zend_do_exit().
- - Problem reported by David Hedbor <david@hedbor.org>
-
-2000-11-02 Zeev Suraski <zeev@zend.com>
-
- * zend_ini_parser.y: Remove unnecessary variables
-
- * zend_ini.c:
- explicit declaration here too - sigh, way too early in the morning
-
- * zend_ini.h: oops
-
- * zend_ini.h: explicit declaration
-
-2000-10-31 Zeev Suraski <zeev@zend.com>
-
- * zend_highlight.h: Fix Apache build
-
- * zend_ini.c
- zend_ini.h: Remove unnecessary code, fix phpinfo()
-
- * Zend.m4: Require bison 1.28
-
-2000-10-30 Zeev Suraski <zeev@zend.com>
-
- * Zend.dsp: Fix non-thread-safe Windows build
-
- * zend_globals.h
- zend_ini.h
- zend_ini_parser.y
- zend_ini_scanner.h
- zend_ini_scanner.l: Final touches on the INI parser
-
-2000-10-30 Stanislav Malyshev <stas@zend.com>
-
- * Makefile.am: Another attempt to make it build
-
- * Makefile.am
- zend_ini_scanner.l: Fix build
-
-2000-10-29 Zeev Suraski <zeev@zend.com>
-
- * zend_ini_parser.y
- zend_ini_scanner.h
- zend_ini_scanner.l: Fix leaks
-
- * zend_alloc.h
- zend_ini.h
- zend_ini_parser.y
- zend_ini_scanner.h
- zend_ini_scanner.l: The new INI parser is showing some signs of life
-
- * zend_compile.c
- zend_compile.h
- zend_execute.c:
- Fix a corruption bug, when erroneously allowing to send non-variables by reference (several
- bug-db reports seem to originate in this bug)
-
- * zend_extensions.c
- zend_ini_parser.y: Fix build
-
- * zend_ini_scanner.h: Forgot this one
-
- * Makefile.am
- ZendTS.dsp
- zend_globals.h
- zend_ini.h
- zend_ini_parser.y
- zend_ini_scanner.l: Generalization work
-
-2000-10-29 Stanislav Malyshev <stas@zend.com>
-
- * zend_extensions.c
- zend_extensions.h:
- Allow module to proclaim compatibility with any Zend version
-
-2000-10-29 Zeev Suraski <zeev@zend.com>
-
- * Makefile.am
- ZendTS.dsp
- zend_ini_parser.y
- zend_ini_scanner.l
- zend_language_scanner.l: Some more work on the INI parser/scanner
-
- * Makefile.am
- zend_ini_parser.y
- zend_ini_scanner.l: Initial step in rewriting the INI parsing mechanism
-
- * .cvsignore
- Makefile.am
- Zend.dsp
- ZendCore.dep
- ZendTS.dsp
- zend-parser.y
- zend-scanner.h
- zend-scanner.l
- zend_compile.c
- zend_compile.h
- zend_highlight.c
- zend_indent.c
- zend_language_parser.y
- zend_language_scanner.h
- zend_language_scanner.l: Unify the names of these last 3 files...
-
- * Zend.dsp
- ZendTS.dsp: Fix Windows build
-
- * Makefile.am
- zend_ini.c
- zend_ini.h
- zend_operators.c
- zend_operators.h:
- Initial steps to move the INI mechanism to the Zend engine
-
-2000-10-27 Andrei Zmievski <andrei@ispi.net>
-
- * zend_operators.h: Added macros for object properties and class entry.
-
-2000-10-26 Andi Gutmans <andi@zend.com>
-
- * zend_API.c
- zend_modules.h: - Fix new -m on Windows
-
-2000-10-25 Andrei Zmievski <andrei@ispi.net>
-
- * zend_list.h: Remove the patch to register_list_destructors().
-
-2000-10-20 Andrei Zmievski <andrei@ispi.net>
-
- * zend_list.c
- zend_list.h: - Fixed a bug in zend_rsrc_list_get_rsrc_type()
- - Switched register_list_destructors() to use
- zend_register_list_destructors_ex() instead
-
-2000-10-19 Andi Gutmans <andi@zend.com>
-
- * zend_compile.c:
- - Constant expressions which are used multiple times need to be copy_ctored
-
-2000-10-18 Andi Gutmans <andi@zend.com>
-
- * zend_llist.c: - Fix whitespace
-
- * zend_extensions.c
- zend_llist.c
- zend_llist.h:
- - Try #2. Wasn't allowed to delete in the previous manner because we were
- in the middle of an llist_apply()
-
-2000-10-18 sascha <sascha@pb1.pair.com>
-
- * zend_fast_cache.h:
- Add explicit conversion from 'void *', otherwise ANSI C++ compilers
- will break out.
-
-2000-10-18 Andi Gutmans <andi@zend.com>
-
- * zend_extensions.c: - Fix crash
-
-2000-10-17 Andi Gutmans <andi@zend.com>
-
- * zend_builtin_functions.c: - Fix copy&paste bug
-
-2000-10-15 Andi Gutmans <andi@zend.com>
-
- * zend_opcode.c:
- - Increase op_array size faster and make eralloc() it in the end to save
- memory.
-
-2000-10-14 Andi Gutmans <andi@zend.com>
-
- * zend_builtin_functions.c: - Add another patch from Sterling.
-
- * zend_builtin_functions.c:
- - Preliminary commit of Sterlings get_defined_functions()/get_defined_vars
- functions
-
- * zend_extensions.c:
- - Only run startup() if ZEND_EXTENSIONS is defined to 1.
- This fixes a link error on platforms which don't support libdl
-
-2000-10-13 Andi Gutmans <andi@zend.com>
-
- * zend_operators.c: - Make increment of "" become "1"
-
-2000-10-11 Andi Gutmans <andi@zend.com>
-
- * zend_hash.c
- zend_hash.h: Don't use 'new' symbol
-
-2000-10-11 Zeev Suraski <zeev@zend.com>
-
- * zend_execute.c
- zend_execute_API.c:
- Fix -a interactive mode (no idea how the previous commit got committed)
-
- * zend_execute.c: *** empty log message ***
-
- * zend.h: Update version
-
- * zend_hash.c
- zend_hash.h: Add zend_hash_merge_ex(), for selective merging
-
-2000-10-06 Andi Gutmans <andi@zend.com>
-
- * zend_execute.h: - Fix Bug #7061
-
-2000-10-05 Andi Gutmans <andi@zend.com>
-
- * zend-scanner.l:
- - Updated included_files() also for plain include()/require().
-
-2000-10-04 Andi Gutmans <andi@zend.com>
-
- * zend_alloc.c: - Fix fprintf
-
-2000-10-02 Andi Gutmans <andi@zend.com>
-
- * zend_extensions.h: - Change zend_extension_api_no
-
-2000-09-30 Andi Gutmans <andi@zend.com>
-
- * zend_builtin_functions.c: - Cleanup error output
-
-2000-09-28 Andi Gutmans <andi@zend.com>
-
- * zend_hash.c:
- - Another has optimization/fix like the hash_copy one from earlier on
-
-2000-09-28 Stanislav Malyshev <stas@zend.com>
-
- * zend_hash.c:
- Make hash_copy call copy constructor on a real copy, not on a temp
-
-2000-09-28 Andi Gutmans <andi@zend.com>
-
- * ZendTS.dsp: - Remove zend_gcc_inline.c
-
-2000-09-26 sascha <sascha@pb1.pair.com>
-
- * Makefile.am
- Zend.m4
- zend_execute.h
- zend_gcc_inline.c
- zend_operators.h:
- Remove --enable-c9x-inline option. We now use a syntax which is compatible
- with all compilers by providing the function with static linkage in every
- compilation unit.
-
-2000-09-25 Zeev Suraski <zeev@zend.com>
-
- * zend.c
- zend_extensions.c
- zend_extensions.h:
- Fix previous update - move extension startup further down the startup sequence
-
- * zend.c: Move extension startup further down the startup sequence
-
-2000-09-19 Andi Gutmans <andi@zend.com>
-
- * zend_operators.h: - Add Z_BVAL* macros
-
-2000-09-19 Stanislav Malyshev <stas@zend.com>
-
- * zend_execute_locks.h:
- Fix crash on Solaris with function parameter destruction
-
-2000-09-18 Stanislav Malyshev <stas@zend.com>
-
- * zend_builtin_functions.c:
- Made get_included_files() work again, in somewhat different way
-
-2000-09-17 Stanislav Malyshev <stas@zend.com>
-
- * zend_compile.c: Set filename even on recursive include
-
-2000-09-14 Andi Gutmans <andi@zend.com>
-
- * zend_execute.c:
- - Fix NULL handling in ARRAY opcode and resolve memory leak
-
-2000-09-12 Zeev Suraski <zeev@zend.com>
-
- * zend-scanner.l
- zend.c
- zend_builtin_functions.c
- zend_compile.h
- zend_execute.c
- zend_execute.h
- zend_execute_API.c
- zend_highlight.h: Make compile_string() accept a description of the code
-
-2000-09-11 Andi Gutmans <andi@zend.com>
-
- * zend_compile.c:
- - Forgot to create extended info in include()/require() call
-
-2000-09-10 Stanislav Malyshev <stas@zend.com>
-
- * zend-parser.y: Allow require_once to take expressions, just like require
-
- * ZEND_CHANGES: Try once more to remove dups
-
- * ZEND_CHANGES: Test commit - weed out duplicate messages
-
-2000-09-09 Zeev Suraski <zeev@zend.com>
-
- * zend.c: Don't use unsafe sprintf()
-
-2000-09-08 Stanislav Malyshev <stas@zend.com>
-
- * zend.c: Don't trust snprintf return
-
-2000-09-06 Andi Gutmans <andi@zend.com>
-
- * zend_config.w32.h: - Save two lines
-
- * zend_config.w32.h: - Fix header
-
-2000-09-06 sascha <sascha@pb1.pair.com>
-
- * Zend.m4: Unless overwritten, default to no optimization in debug mode.
-
-2000-09-05 Andi Gutmans <andi@zend.com>
-
- * zend_operators.h
- zend_operators.c: - Commiting Sterling's new multi_convert* functions
-
-2000-09-05 Andrei Zmievski <andrei@ispi.net>
-
- * zend_builtin_functions.c: Fix memory overrun.
-
-2000-09-05 Stanislav Malyshev <stas@zend.com>
-
- * zend_builtin_functions.c:
- Fix crash with trigger_error having no args (#6549)
-
-2000-09-04 Andi Gutmans <andi@zend.com>
-
- * Makefile.am: - Remove two tabs
-
-2000-09-02 Andi Gutmans <andi@zend.com>
-
- * ZendTS.dsp:
- - Defining TSRM_WIN32 in each and every dsp sucked. Revert this change
-
- * ZendTS.dsp: - Fix windows build
-
-2000-08-31 Andi Gutmans <andi@zend.com>
-
- * ZendTS.dsp:
- - This should fix the performance problem with Release builds
-
- * zend-scanner.l
- zend.c
- zend_execute.c:
- - Use emalloc() for opened_path now. This was a potential leak before.
- - This patch has potential to break stuff but I tested it as much as I
- - could. Fixes should be easy.
-
- * zend.c: - Remove support for __string_value() in print $obj
-
-2000-08-31 Zeev Suraski <zeev@zend.com>
-
- * zend.c: Safer shutdown process
-
-2000-08-29 Andi Gutmans <andi@zend.com>
-
- * zend.h: - Update Zend version.
-
-2000-08-26 Andi Gutmans <andi@zend.com>
-
- * zend_builtin_functions.c: - Don't define this function in non-debug mode
-
-2000-08-24 Andi Gutmans <andi@zend.com>
-
- * zend_execute.c:
- - Revert patch from 9/7/2000 which seems to have broken unset().
- - I hope what made me do this patch doesn't appear again.
-
-2000-08-22 Andi Gutmans <andi@zend.com>
-
- * zend_execute_API.c:
- - Fix bug report by Andrei when using a method as a sort user function
- - parameter in usort() like functions
-
-2000-08-20 Zeev Suraski <zeev@zend.com>
-
- * zend_config.w32.h: Fix Win32 build
-
-2000-08-20 sascha <sascha@pb1.pair.com>
-
- * zend_config.w32.h:
- _isnan seems to be supported on Win32, add an appropiate macro.
-
- * acconfig.h: If available, use fpclassify for substituting zend_finite.
-
- * acconfig.h:
- Including math.h before using macros defined there will work better :)
-
- * acconfig.h: Add zend_isinf and zend_isnan.
-
-2000-08-19 Andrei Zmievski <andrei@ispi.net>
-
- * zend-scanner.l: One more fix to C compile.
-
-2000-08-19 Zeev Suraski <zeev@zend.com>
-
- * zend-scanner.l: Fix C build
-
- * zend-scanner.l: Fix eval() leakage in ZTS mode
-
- * zend_compile.c
- zend_globals.h: Eliminate run-time leak with eval()'s
-
- * zend_alloc.c: Fix build with no memory_limit
-
- * zend_alloc.c: Fix memory_limit
-
-2000-08-19 Andi Gutmans <andi@zend.com>
-
- * zend_execute.c: - Beautify
-
-2000-08-17 Stanislav Malyshev <stas@zend.com>
-
- * zend_API.h: Fix EMPTY_STRING macros
-
-2000-08-15 Zeev Suraski <zeev@zend.com>
-
- * zend_extensions.h
- zend-scanner.l
- zend.c
- zend_compile.c
- zend_compile.h
- zend_execute.c:
- Fix warning issue (compile errors inside require()'d files were incorrectly supressed)
-
-2000-08-14 Zeev Suraski <zeev@zend.com>
-
- * zend_execute.c: - Fix leak and some logic
-
-2000-08-14 Andi Gutmans <andi@zend.com>
-
- * zend_compile.c
- zend_execute.c:
- - This patch should hopefully fix situations where a constructor uses
- - the $this pointer as a reference.
-
-2000-08-14 Stanislav Malyshev <stas@zend.com>
-
- * zend_execute.c: Fix crash
-
-2000-08-14 Andi Gutmans <andi@zend.com>
-
- * zend_compile.c
- zend_execute.h:
- - Unused results should be marked with EXT_TYPE_UNUSED and not IS_UNUSED
-
-2000-08-13 Stanislav Malyshev <stas@zend.com>
-
- * zend-scanner.l
- zend.c
- zend_compile.c
- zend_compile.h
- zend_execute.c: Fix zend_fiel_handle handling. Should fix URL include
- and various opened_path inconsistencies.
-
-2000-08-13 Andi Gutmans <andi@zend.com>
-
- * zend-parser.y:
- - Revert foreach() change which only allowed variables and array(...)
-
-2000-08-11 Andi Gutmans <andi@zend.com>
-
- * zend-parser.y: - Only support variables and array(...) in foreach loops
-
-2000-08-10 Andi Gutmans <andi@zend.com>
-
- * zend-parser.y
- zend_compile.c
- zend_compile.h
- zend_execute.c:
- Fix problem with nested foreach()'s (Andi, Zend Engine)
-
- * zend_compile.c:
- Fix switch which only has a default rule (Andi, Zend Engine)
- Change require_once() to use the same file list as include_once().
- Patch includes making require() & include() to behave the same when it
- comes to scoping. require() is now an include() which isn't allowed to fail.
- require() caused too many memory reallocations which ended up being quite
- slow for sites that required lots of files. (Andi & Zeev, Zend Engine)
- - Fix switch() which only has default rule (bug #5879,
-
-2000-08-09 Zeev Suraski <zeev@zend.com>
-
- * zend_modules.h: that too
-
- * zend_extensions.h: Update API number
-
- * zend-parser.y
- zend-scanner.l
- zend.c
- zend_builtin_functions.c
- zend_compile.c
- zend_compile.h
- zend_execute.c
- zend_execute_API.c
- zend_globals.h
- zend_opcode.c:
- The patch we promised - redesigned the compilation/execution API:
- Advantages:
- - Smaller memory footprint for the op arrays
- - Slightly faster compilation times (due to saved erealloc() calls and faster zend_op
- initialization)
- - include_once() & require_once() share the same file list
- - Consistency between include() and require() - this mostly means that return()
- works inside require()'d files just as it does in include() files (it used to
- be meaningless in require()'d files, most of the time (see below))
- - Made require() consistent with itself. Before, if the argument was not a constant
- string, require() took the include() behavior (with return()).
- - Removed lots of duplicate code.
- Bottom line - require() and include() are very similar now; require() is simply an include()
- which isn't allowed to fail. Due to the erealloc() calls for large op arrays, require()
- didn't end up being any faster than include() in the Zend engine.
-
-2000-08-05 Andi Gutmans <andi@zend.com>
-
- * zend_execute.c:
- - Use some more SEPARATE_ZVAL macros instead of replicated code.
-
-2000-08-05 Stanislav Malyshev <stas@zend.com>
-
- * zend_execute.c: Fix memory leak
-
-2000-08-04 Andi Gutmans <andi@zend.com>
-
- * zend.h
- zend_execute.c:
- - Beautify code. Try and use more macros for splitting instead of
- - replicating the code everywhere.
-
-2000-08-02 Andi Gutmans <andi@zend.com>
-
- * zend_execute.c: - Remove commented code
-
-2000-07-29 Zeev Suraski <zeev@zend.com>
-
- * zend-scanner.l
- zend_execute.c: Fix filename issues
-
-2000-07-28 Stanislav Malyshev <stas@zend.com>
-
- * zend_builtin_functions.c
- zend_constants.c
- zend_constants.h:
- Make define return false and issue E_NOTICE when trying to redefine constant
-
-2000-07-27 Andi Gutmans <andi@zend.com>
-
- * zend-scanner.l
- zend_execute.c: Always store full filename as compiled file name
-
-2000-07-26 Zeev Suraski <zeev@zend.com>
-
- * zend_compile.c:
- Fix a possible issue with runtime inheritence under fairly rare circumstance
- and optimize a tiny bit
-
-2000-07-26 Stanislav Malyshev <stas@zend.com>
-
- * zend_builtin_functions.c
- zend_operators.c
- zend_operators.h: Add strncasecmp function
-
-2000-07-18 Zeev Suraski <zeev@zend.com>
-
- * zend_builtin_functions.c: Forgot to link this function...
-
- * zend_hash.c: This is probably the oldest bug in PHP :)
- Luckily it's unlikely we're ever actually bitten by this bug.
-
-2000-07-16 Andi Gutmans <andi@zend.com>
-
- * zend_compile.c: - Beautify Zeev's patch a bit.
-
-2000-07-16 Zeev Suraski <zeev@zend.com>
-
- * zend_compile.c: Implement parent::foo()
-
-2000-07-15 Zeev Suraski <zeev@zend.com>
-
- * zend-parser.y
- zend_compile.c: Add more extended_info calls
-
-2000-07-14 Zeev Suraski <zeev@zend.com>
-
- * zend_builtin_functions.c
- zend_list.c
- zend_list.h: Improve register_resource_ex() infrastructure
-
-2000-07-12 Thies C. Arntzen <thies@thieso.net>
-
- * zend.c: fix ZTS startup without filename (thanx purify!)
-
- * zend.c: unset active_symbol_table on zend-shutdown.
-
-2000-07-11 Zeev Suraski <zeev@zend.com>
-
- * zend_list.c: Another persistent hash - disable apply protection
-
- * zend.c
- zend_hash.c
- zend_hash.h:
- Disable the hash_apply() protection on hashes that persist across requests - it's unsafe
- because we may be aborted at any point
-
-2000-07-11 Stanislav Malyshev <stas@zend.com>
-
- * zend_execute.c:
- Fix a bug in passing second parameter of RECV_INIT with is_ref set
-
-2000-07-11 Andi Gutmans <andi@zend.com>
-
- * zend_compile.h: - Oops. Too early in the morning
-
- * zend_compile.h: - Include iostream.h in C++.
-
-2000-07-09 Andi Gutmans <andi@zend.com>
-
- * zend_execute.c: - Fix memory leak.
-
- * zend_execute.c: - Need to seperate if the hash isn't a reference
-
-2000-07-08 Andi Gutmans <andi@zend.com>
-
- * zend.h: - Add zend_ulong
-
-2000-07-07 Stanislav Malyshev <stas@zend.com>
-
- * zend_execute.c: Remove C++ commennts.
-
-2000-07-06 Andi Gutmans <andi@zend.com>
-
- * zend-scanner.l:
- - Remove code which has never been used (neither in PHP 3)
-
- * zend_compile.c:
- - Make is_method_call() static and remove a couple of old lines
-
- * zend_execute.c
- zend_extensions.h: - Yet another fix...
-
- * zend_execute.c: - One more...
-
- * zend_compile.c: - One more fix for the latest patch
-
- * zend_compile.c: - One dumb bug in my latest patch
-
- * zend-parser.y
- zend_compile.c
- zend_execute.c:
- - Complex fix for solving a problem with objects & method calls.
- - Previous version is tagged PRE_METHOD_CALL_SEPERATE_FIX_PATCH.
- - I need to check this fix on a server so if it doesn't work I will revert
- - it.
-
- * zend-scanner.l:
- - Fix problem with newlines not being recognized under certain conditions
-
-2000-07-03 Andi Gutmans <andi@zend.com>
-
- * zend_compile.c: - Fix bug #4120
-
-2000-07-03 Stanislav Malyshev <stas@zend.com>
-
- * zend_execute_API.c: Unblock SIGPROF signal when starting timer.
- On Linux, this signal is blocked by default after first signal is run
-
-2000-07-03 sascha <sascha@pb1.pair.com>
-
- * FlexLexer.h
- zend-scanner.h
- zend_alloc.h
- zend_compile.h
- zend_constants.h
- zend_dynamic_array.h
- zend_execute.h
- zend_globals.h
- zend_hash.h
- zend_highlight.h
- zend_list.h
- zend_operators.h
- zend_static_allocator.h
- zend_variables.h:
- Replace macros which begin with an underscore through an appropiately
- named macro.
-
-2000-07-02 sascha <sascha@pb1.pair.com>
-
- * zend.h
- zend_API.h
- zend_builtin_functions.h
- zend_config.w32.h
- zend_dynamic_array.h
- zend_errors.h
- zend_execute_locks.h
- zend_extensions.h
- zend_fast_cache.h
- zend_globals_macros.h
- zend_indent.h
- zend_llist.h
- zend_modules.h
- zend_ptr_stack.h
- zend_stack.h: Change header protection macros to conform to standard.
-
- Draft 3 of IEEE 1003.1 200x, "2.2 The Compilation Environment"
-
- All identifiers that begin with an underscore and either an uppercase
- letter or another underscore are always reserved for any use by the
- implementation.
-
-2000-07-02 Andi Gutmans <andi@zend.com>
-
- * zend-parser.y: - Take #2 with tab size 4
-
- * zend-parser.y:
- - Beautify parser a bit. It still could do with some more at some point
-
- * zend_execute.h
- zend_execute_API.c: - Forgot ZEND_API
-
-2000-06-30 Zeev Suraski <zeev@zend.com>
-
- * zend_config.w32.h:
- Add a messagebox style that's safe to use from an ISAPI filter
-
- * zend_builtin_functions.c
- zend_execute_API.c
- zend_globals.h: error_reporting fix
-
-2000-06-29 Zeev Suraski <zeev@zend.com>
-
- * zend.c
- zend.h: Add $context argument to error handler
-
-2000-06-28 Zeev Suraski <zeev@zend.com>
-
- * zend.c: Improve error handling code
-
- * zend-scanner.l: Be HTML friendly
-
-2000-06-28 Andi Gutmans <andi@zend.com>
-
- * zend.h: version update
-
-2000-06-26 Zeev Suraski <zeev@zend.com>
-
- * zend.h
- zend_constants.c
- zend_extensions.h:
- Make it possible to detect whether we're thread safe or not from PHP scripts and the php.ini
- file
-
-2000-06-26 Andi Gutmans <andi@zend.com>
-
- * zend_extensions.c: - Add another "\n" at the end of error messages.
-
-2000-06-26 Zeev Suraski <zeev@zend.com>
-
- * zend_execute_API.c:
- Make max_execution_time work properly when set to 0 under Win32 (disable)
-
-2000-06-25 Andi Gutmans <andi@zend.com>
-
- * zend.c: - I wrote a long msg but the commit didn't go through.
- - So here is the short version:
- - a) Start moving to binary opens in Windows
- - b) Give checkuid_mode() a small face lift including the fopen-wrappers.c
- - The mode to this function should at least be a #define but that is for
- - another day. Anyway this whole stuff should be given more face lifts in
- - the future.
-
-2000-06-24 Zeev Suraski <zeev@zend.com>
-
- * zend_alloc.c: Nuke a warning
-
-2000-06-23 Andi Gutmans <andi@zend.com>
-
- * zend_static_allocator.c
- zend_static_allocator.h: - Not returning a value anymore
-
- * zend_static_allocator.h: - Don't need SUCCESS/FAILURE anymore
-
- * zend_static_allocator.c
- zend_static_allocator.h: - Add license
-
- * zend_static_allocator.c
- zend_static_allocator.h:
- - Commit static allocator structure which we might use in an upcoming Zend
- - change
-
-2000-06-22 Andi Gutmans <andi@zend.com>
-
- * zend-scanner.l: - Fix asp_tags.
-
- * zend_extensions.c: - Oops I miss-wrote that field
-
- * zend_extensions.c
- zend_extensions.h:
- - Change API version and make the error messages more meaningful.
-
- * zend_alloc.c
- zend_alloc.h: - Change cache size and only initialize part of it.
-
-2000-06-22 Stanislav Malyshev <stas@zend.com>
-
- * zend_alloc.c:
- Cached-freed memory blocks should not be in "occupied" list
-
- * zend_alloc.c
- zend_globals.h: Make cache counters to be unsigned int
- Start collecting statistics after cache pre-fill
-
-2000-06-18 sascha <sascha@pb1.pair.com>
-
- * Zend.m4
- acinclude.m4
- zend.c: fp_except check for FreeBSD 1.0-2.2.5
-
- * Zend.m4
- acconfig.h
- zend_config.w32.h
- zend_operators.h: Welcome zend_finite(n).
-
- This chooses the best combination of what is available:
-
- finite, isfinite, isinf, isnan
-
-2000-06-18 Stanislav Malyshev <stas@zend.com>
-
- * zend.h
- zend.c: Make error callback be publicly accessible
-
-2000-06-18 Andi Gutmans <andi@zend.com>
-
- * zend.c: - Better FreeBSD fix. Does fp_except_t exist on 3.4?
-
- * zend.c:
- - I don't know how this happened. I tested the bloody thing and I remember
- - copy&pasting from code which used ~.
-
-2000-06-17 Zeev Suraski <zeev@zend.com>
-
- * zend_builtin_functions.c
- zend_execute_API.c
- zend_globals.h
- zend_ptr_stack.c
- zend_ptr_stack.h: - Add restore_error_handler()
- error_handler's are now stored in a stack
-
- * zend-scanner.l
- zend.c
- zend_API.h
- zend_execute_API.c:
- Allow the symbol_table to be passed to call_user_function_ex()
-
- * zend-scanner.h
- zend-scanner.l: Fix filenames and line numbers in ZTS mode
-
- * zend_hash.c
- zend_hash.h:
- Avoid crashing with recursive applies - limit apply nest level to 3 (I'm not aware of a place
- in which applying recursively on the same hash makes sense with more than one nest level, but
- 3 should be enough)
-
-2000-06-16 Zeev Suraski <zeev@zend.com>
-
- * zend.c
- zend_execute.c
- zend_execute.h
- zend_execute_API.c
- zend_globals.h:
- Ok, this time here's some real Win32 system programming :)
- Redesigned the timeout system using a single timeout thread and a single window,
- and used a much quicker check.
-
-2000-06-16 Andi Gutmans <andi@zend.com>
-
- * zend_execute_API.c: Fix UNIX build
-
-2000-06-16 Zeev Suraski <zeev@zend.com>
-
- * zend_execute.c: Macro it up the right way
-
- * zend_execute.c: Macro this up, so it can be moved to other places
-
- * zend.c
- zend_execute.c
- zend_execute.h
- zend_execute_API.c
- zend_globals.h: - Move timeout code to Zend
- - Implement timeouts in Win32
-
-2000-06-15 Zeev Suraski <zeev@zend.com>
-
- * Zend.dsp
- zend.c:
- Fix non thread-safe mode - asp_tags/short_tags etc weren't getting initialized properly
-
-2000-06-15 Andi Gutmans <andi@zend.com>
-
- * zend_list.c: *** empty log message ***
-
- * zend-parser.y: - Support multiple arguments to unset()
-
-2000-06-15 Thies C. Arntzen <thies@thieso.net>
-
- * zend_list.h: ups.
-
- * zend_list.h:
- changed return type of ZEND_VERIFY_RESOURCE from FALSE to NULL
-
-2000-06-14 sascha <sascha@pb1.pair.com>
-
- * zend_operators.h
- zend_operators.c:
- Move some stuff to zend_operators.h which is required by the
- moved inline functions.
-
-2000-06-14 Andi Gutmans <andi@zend.com>
-
- * zend_alloc.c
- zend_alloc.h: - More correct way of doing bit mask
-
-2000-06-14 sascha <sascha@pb1.pair.com>
-
- * Zend.m4: Only replaced C0X and C0x, but not c0x..
-
- * Zend.m4
- zend_execute.h
- zend_gcc_inline.c
- zend_operators.h:
- Rename C0x-inline to C9x-inline, and frame preprocessor directives in
- zend_gcc_inline.c with #ifndef C9X_INLINE_SEMANTICS..#endif.
-
-2000-06-14 Andi Gutmans <andi@zend.com>
-
- * ZendTS.dsp: - Make Win32 build
-
-2000-06-13 Andi Gutmans <andi@zend.com>
-
- * zend_compile.c
- zend_compile.h: Add to the API
-
-2000-06-13 sascha <sascha@pb1.pair.com>
-
- * Makefile.am
- Zend.m4
- zend_API.h
- zend_compile.h
- zend_execute.h
- zend_execute_API.c
- zend_gcc_inline.c
- zend_globals.h
- zend_operators.c
- zend_operators.h: Add optional support for C0x inline semantics.
-
- These are enabled by specifying `--enable-c0x-inline' on the command
- line. We might add an autoconf check for this particular feature
- later.
-
- * zend_llist.h:
- Add llist_apply_func_t and make prototypes use the typedefs.
-
-2000-06-12 Zeev Suraski <zeev@zend.com>
-
- * zend_builtin_functions.c: Make Egon happy :)
-
- * zend_builtin_functions.c:
- Return the previous error handler from set_error_handler()
-
- * zend_API.c
- zend_API.h
- zend_builtin_functions.c:
- Avoid using E_CORE_* errorlevels in any place which is not in the global startup sequence
-
- * zend-parser.y
- zend-scanner.l
- zend.h
- zend_compile.c: Get rid of <?php_track_vars?>
-
-2000-06-11 Andi Gutmans <andi@zend.com>
-
- * zend.c: - Solve floating point precision crash on FreeBSD.
-
- * zend.c:
- - Fixes crash problem on FreeBSD when losing precision. Need to still see
- - how to detect we're on FreeBSD
-
-2000-06-11 Zeev Suraski <zeev@zend.com>
-
- * zend_API.c: Fix zend_get_parameters()
-
-2000-06-10 Andi Gutmans <andi@zend.com>
-
- * zend_operators.c:
- - Fixed problem when using uninitialized values in comparisons with strings.
- - They behave as empty strings again just like in PHP 3.
-
-2000-06-10 Zeev Suraski <zeev@zend.com>
-
- * zend_execute.c:
- I can't think of a reason of why it should just be a notice... Make it a warning, like it was in PHP 3.
-
- * zend_API.c
- zend_builtin_functions.c: Fix bug #4768
-
-2000-06-09 Andrei Zmievski <andrei@ispi.net>
-
- * zend_builtin_functions.c
- zend_hash.h: Made an alias for hash apply with arguments.
-
-2000-06-09 Andi Gutmans <andi@zend.com>
-
- * zend_alloc.c: - Forgot to remove the FIXME
-
- * zend_alloc.c: - Make the memory limit accurate
-
- * zend_alloc.c: - Fix cache initialization
-
- * zend_alloc.c
- zend_alloc.h:
- - Allocate and cache in 8 byte blocks. Most allocators anyway use 8 byte
- - blocks. This should help fragmentation and cache hits.
- - The old tree is tagged as PRE_EIGHT_BYTE_ALLOC_PATCH
-
-2000-06-09 Zeev Suraski <zeev@zend.com>
-
- * zend_execute.c: Fix bug #4933
-
- * zend_builtin_functions.c: Fixed bug #4819
-
-2000-06-09 Andi Gutmans <andi@zend.com>
-
- * zend_modules.h:
- - Time to change it. We changed register_internal_class() ->
- - zend_register_internal_class()
-
- * zend_API.c
- zend_API.h
- zend_compile.c
- zend_compile.h: - Andrei, this is for you!
- - Add zend_register_internal_class_ex() which allows you to specify a
- - parent to inherit from. You can either specify the parent directly or via
- - its name.
-
- * zend-parser.y
- zend-scanner.l: - Typo
-
- * zend_execute.c: - Remove old obsolete code.
-
- * zend_execute.c: - Make unset consistent with the way array offsets work
-
-2000-06-09 Stanislav Malyshev <stas@zend.com>
-
- * zend_execute.c: Handle unset with empty key
-
-2000-06-09 Andi Gutmans <andi@zend.com>
-
- * zend_API.c
- zend_API.h:
- - Change register_internal_class to zend_register_internal_class for
- - consistency.
- - Andrei: I'm still thinking about the _ex you want me to implement
-
-2000-06-08 sascha <sascha@pb1.pair.com>
-
- * Zend.m4
- acconfig.h: Clean up acconfig.h
-
- * zend_execute_API.c
- zend_operators.c: Add a couple of casts
-
-2000-06-06 Zeev Suraski <zeev@zend.com>
-
- * zend.c
- zend.h
- zend_compile.c:
- Enable asp_tags/short_tags/allow_call_time_pass_by_reference to work on a per-directory
- basis as well
-
-2000-06-06 sascha <sascha@pb1.pair.com>
-
- * zend_API.c:
- Add newline at the end of the file (breaks at least SCO and Tru64 C compiler).
-
-2000-06-05 Andi Gutmans <andi@zend.com>
-
- * zend-scanner.l: - Revert internazionalization fix.
-
- * zend_builtin_functions.c: - Complete change to create_function()
-
-2000-06-04 Zeev Suraski <zeev@zend.com>
-
- * zend_compile.c
- zend_execute_API.c:
- Change shutdown order to sort out a crash when assigning a resource id to a static.
-
- * zend_hash.c
- zend_hash.h
- zend_operators.c: - Support unordered hash comparisons
- - Make == perform an unordered comparison with arrays/objects, and === perform an ordered comparison
-
- * zend_builtin_functions.c: Rename lambda()
-
-2000-06-03 Zeev Suraski <zeev@zend.com>
-
- * zend_hash.c
- zend_hash.h
- zend_operators.c
- zend_operators.h:
- Support comparisons of arrays (with arrays) and objects (with objects)
-
-2000-06-03 Andi Gutmans <andi@zend.com>
-
- * zend.c: - Change #if to #ifdef.
-
-2000-06-03 Zeev Suraski <zeev@zend.com>
-
- * ZendTS.dsp
- zend.c: Don't take chances with new include files
-
- * zend_execute_API.c:
- Improve call_user_function() to support array($obj, $method)
-
- * zend-parser.y
- zend.h
- zend_operators.c: - Export normalize_bool
- - This global/static syntax fix brought us back to the 4 documented conflicts
-
- * zend_builtin_functions.c: Fix a lambda() bug
-
- * zend_builtin_functions.c: Add missing {
-
- * zend_globals.h
- zend_hash.c
- ZendTS.dsp
- zend-scanner.l
- zend.c
- zend.h
- zend_builtin_functions.c
- zend_compile.c
- zend_compile.h: - Fix Win32 compilation (Use winsock2.h from now on)
- - Add lambda() support
-
-2000-06-02 Andi Gutmans <andi@zend.com>
-
- * zend-parser.y: - global/static require a trailing ';'
-
-2000-06-02 Zeev Suraski <zeev@zend.com>
-
- * zend_builtin_functions.c: Update error code
-
- * zend.c
- zend.h
- zend_config.w32.h: Nuke the old error code, use the new one
-
-2000-05-31 Zeev Suraski <zeev@zend.com>
-
- * zend.h: IS_BC isn't really being used, but still...
-
- * zend-parser.y
- zend.h
- zend_API.c
- zend_execute.c
- zend_execute.h
- zend_execute_API.c
- zend_extensions.h
- zend_variables.c:
- Fix a bug in static initializers/default values/class member variables that contained
- array values
-
-2000-05-29 Zeev Suraski <zeev@zend.com>
-
- * zend_API.c
- zend_API.h: Allow disabling of functions for security reasons
-
-2000-05-28 Andi Gutmans <andi@zend.com>
-
- * zend_operators.c:
- - Use pointer arithmetic to speed up the function a bit
-
- * Zend.m4: - This should have been done for 4.0.0.
- - Default build is without debug now. Use --enable-debug if you want a
- - debug build which includes leak/memory overwrite etc. detection
-
-2000-05-26 Andi Gutmans <andi@zend.com>
-
- * zend-scanner.l
- zend_operators.c
- zend_operators.h:
- - Fixed scanning decimal numbers in internationalized environments. They should
- - always be in standard US format e.g. 23.3
-
-2000-05-25 Zeev Suraski <zeev@zend.com>
-
- * zend_compile.c:
- Fix a crash bug in certain situations of class redeclarations
-
-2000-05-24 Thies C. Arntzen <thies@thieso.net>
-
- * zend_hash.h: rename hastable -> _hashtable to avoid clashes
-
- * zend-scanner.l:
- add rdbuf() to our own istdiostream implementation, allowing C++ compile
- using SUN and SGI native compilers. (by Jayakumar Muthukumarasamy <jk@kasenna.com>)
-
-2000-05-22 Zeev Suraski <zeev@zend.com>
-
- * zend.c: - Remove ugly Ltd.
-
-2000-05-21 Sam Ruby <rubys@us.ibm.com>
-
- * zend.c: Windows build failure
-
-2000-05-21 Andi Gutmans <andi@zend.com>
-
- * zend.c
- zend_compile.h:
- - Fix Apache php source highlighting mode. It was crashing due to the
- - module shutdown functions being called when the startup functions weren't
- - being called.
-
- * zend.h
- zend_extensions.h: - Get ready for release
-
-2000-05-19 Zeev Suraski <zeev@zend.com>
-
- * zend_highlight.c
- zend_highlight.h: Open these up for the API
-
-2000-05-18 Zeev Suraski <zeev@zend.com>
-
- * zend_alloc.c: Do it in thread unsafe mode for now.
-
-2000-05-18 sascha <sascha@pb1.pair.com>
-
- * zend_alloc.c: Kill warnings
-
-2000-05-18 Andi Gutmans <andi@zend.com>
-
- * zend_alloc.c: - Do this someplace else.
-
- * zend_execute.c
- zend_operators.c:
- - Fix include() when used on resources (shouldn't work but shouldn't crash
- either).
-
-2000-05-18 Andrei Zmievski <andrei@ispi.net>
-
- * zend_operators.c:
- Update for sort functions - user can now specify sort type.
-
-2000-05-17 Andi Gutmans <andi@zend.com>
-
- * zend_operators.h
- zend_operators.c:
- - Add support for string_compare_function() and number_compare_function().
- UNTESTED!
-
-2000-05-17 Zeev Suraski <zeev@zend.com>
-
- * zend_operators.c: Normalize results of compare_function()
-
- * zend-scanner.l:
- Fix crash if %> is encountered in HTML while ASP-tags are disabled
-
-2000-05-17 Andi Gutmans <andi@zend.com>
-
- * zend_opcode.c: Fix order
-
-2000-05-17 sascha <sascha@pb1.pair.com>
-
- * zend_operators.h: Add missing prototype
-
-2000-05-16 Zeev Suraski <zeev@zend.com>
-
- * zend_alloc.c:
- - Small optimization. Filling up the Cache helps performance.
-
-2000-05-12 sascha <sascha@pb1.pair.com>
-
- * Makefile.am: Fix parallel makes on BSD
-
-2000-05-11 Zeev Suraski <zeev@zend.com>
-
- * zend-parser.y
- zend-scanner.l
- zend.h
- zend_operators.c:
- Get rid of chval - it's really not necessary and seems to be confusing people
-
- * zend_compile.c: Refined fix
-
- * zend_compile.c:
- Fix a memory corruption bug with by-ref function arguments
-
-2000-05-10 Andi Gutmans <andi@zend.com>
-
- * zend_extensions.h: - Bump up Zend extension version number
-
-2000-05-10 Thies C. Arntzen <thies@thieso.net>
-
- * zend_compile.c: make waning readable
-
-2000-05-08 Andi Gutmans <andi@zend.com>
-
- * zend-parser.y
- zend_compile.c
- zend_opcode.c: Thoroughly initialize IS_UNUSED for proper cleanup
-
- * zend.h: - Change Zend Engine version number
-
- * zend_alloc.c: - Return real size allocated
-
-2000-05-08 Zeev Suraski <zeev@zend.com>
-
- * zend_operators.c: Make zend_binary_strcasecmp compile again
-
-2000-05-08 sascha <sascha@pb1.pair.com>
-
- * zend_operators.c: Make strcasecmp() act correctly WRT SUS II.
-
- Patch by: hholzgra@php.net
- PR: #3556
-
-2000-05-06 Andi Gutmans <andi@zend.com>
-
- * zend_execute.h
- zend_execute_API.c: - Make zend_eval_string() return SUCCESS/FAILURE
-
- * zend_execute.c:
- - Make $obj->test = 5; work again (assigning to uninitialized objects)
-
-2000-05-05 sascha <sascha@pb1.pair.com>
-
- * Zend.m4:
- Linking directly against libc might result in unexpected behaviour.
- We check for dlopen in libdl first, and check then whether dlopen exists.
-
-2000-05-03 Andi Gutmans <andi@zend.com>
-
- * zend_compile.h: - Change fetch_type to be zend_uint
-
- * zend_compile.c
- zend_execute.c: - Change the place CAST uses for the op_type
-
-2000-05-02 Zeev Suraski <zeev@zend.com>
-
- * zend_hash.c
- zend_hash.h:
- Change zend_hash_get_current_key_ex() to also return the string length
-
-2000-05-02 sascha <sascha@pb1.pair.com>
-
- * zend_API.c:
- Fix segfault occuring when a temporary module was unloaded and if this
- module did not have a request shutdown function.
-
- * zend_API.h:
- Add ZEND_GET_MODULE(name). This is a short-cut for the common
- get_module function.
-
-2000-05-01 sascha <sascha@pb1.pair.com>
-
- * zend.c:
- Source file does not end with a newline. Some old compilers don't like that.
-
-2000-05-01 Andrei Zmievski <andrei@ispi.net>
-
- * zend_builtin_functions.c: Added a way to get all declared classes.
-
-2000-05-01 sascha <sascha@pb1.pair.com>
-
- * Makefile.am: Fix dependency
-
-2000-04-29 Zeev Suraski <zeev@zend.com>
-
- * zend_extensions.h
- zend_opcode.c:
- Pass the op_array to the ctor/dtor, instead of just the resource
-
- * zend_extensions.c: crash fix
-
- * zend_extensions.c
- zend_extensions.h
- zend_llist.c
- zend_llist.h: - Add zend_llist_apply_with_arguments()
- - Add a message handler to the extensions
-
- * zend_compile.h
- zend_opcode.c:
- Fix possible bug with extension dtors being called without the ctors being called first
-
- * zend-scanner.l
- zend_compile.c
- zend_compile.h
- zend_opcode.c: Beautify
-
-2000-04-28 Zeev Suraski <zeev@zend.com>
-
- * zend.c
- zend_extensions.c
- zend_extensions.h: Fix a bug in the resource dispencer
-
- * zend_operators.c
- zend_operators.h: Make convert_to_string() allocations traceable
-
-2000-04-27 Zeev Suraski <zeev@zend.com>
-
- * zend_extensions.h
- zend-scanner.l
- zend.c
- zend_compile.c
- zend_compile.h
- zend_execute.c: *** empty log message ***
-
- * zend-scanner.l
- zend_compile.c
- zend_compile.h
- zend_execute.c: Change to using the #define's
-
- * zend.c
- zend.h: More error handling work (still completely disabled)
-
-2000-04-26 Zeev Suraski <zeev@zend.com>
-
- * zend_execute_API.c
- zend_variables.c: Fix - forgot to split away if refcount>1
-
-2000-04-25 Zeev Suraski <zeev@zend.com>
-
- * zend_extensions.c: Fix bug
-
- * zend.h: We'll need two...
-
- * zend_hash.h: Add useful macros
-
-2000-04-25 Andi Gutmans <andi@zend.com>
-
- * zend_llist.c: - Fix persistence of llist
-
-2000-04-24 Zeev Suraski <zeev@zend.com>
-
- * zend_compile.c: - Forgot to keep the ':' in the class_name
-
- * zend_API.c: Correct fix
-
-2000-04-24 Thies C. Arntzen <thies@thieso.net>
-
- * zend_API.c: MODULE_TEMPORARY should get a call to RSHUTDOWN as well!
-
- * zend.c:
- fixed shutdown crash if MSHUTDOWN tries to php_error() something.
-
-2000-04-21 Thies C. Arntzen <thies@thieso.net>
-
- * zend_variables.c
- zend_variables.h: export zval_add-ref and zvale_del_ref
-
-2000-04-20 Zeev Suraski <zeev@zend.com>
-
- * zend_operators.h: - Change macro names from Z to Z_
-
- * zend_operators.h: Add some macros for nicer zval handling
-
-2000-04-20 Andrei Zmievski <andrei@ispi.net>
-
- * zend_operators.c: Do proper ieeefp.h check.
-
-2000-04-20 Thies C. Arntzen <thies@thieso.net>
-
- * zend_operators.c:
- compile before commit! compile before commit! compile before commit!
-
- * zend_operators.c:
- revert andrei's path (i can't compile anymore on linux)
- we're always using #ifndef HAVE_BLA instead of if !HAVE_BLA and if we need ieeefp.h for some weird platform (which one is that?) we need an autoconf check for it.
-
-2000-04-19 Andrei Zmievski <andrei@ispi.net>
-
- * zend_operators.c: Include proper files for finite.
-
-2000-04-19 Zeev Suraski <zeev@zend.com>
-
- * zend.c
- zend.h
- zend_builtin_functions.c
- zend_execute_API.c
- zend_globals.h:
- Initial support for trapping errors (not complete and disabled; will be enabled only
- post-PHP 4.0.0)
-
- * zend_builtin_functions.c
- zend_constants.c
- zend_errors.h:
- - Renamed get_used_files() to get_required_files() for consistency
- - Documented some functions
- - Added user-level warning messages
- - Added user_error()
-
-2000-04-19 Andi Gutmans <andi@zend.com>
-
- * zend_opcode.c
- zend_compile.h: - Export pass_include() for Windows
-
-2000-04-18 Zeev Suraski <zeev@zend.com>
-
- * zend_operators.h:
- Add convert_to_writable_*_ex() macros (unused at this time)
-
-2000-04-17 Andi Gutmans <andi@zend.com>
-
- * zend_compile.c
- zend_execute.c: - Fix order of JMPZNZ arguments
-
-2000-04-17 Thies C. Arntzen <thies@thieso.net>
-
- * zend_operators.c: ups, finite is already a macro on Win32
-
- * Zend.m4
- zend_operators.c: HPUX11 only has isfinite()
-
-2000-04-15 Andi Gutmans <andi@zend.com>
-
- * zend-scanner.l: - Fix leak in require_once()
-
-2000-04-15 Thies C. Arntzen <thies@thieso.net>
-
- * zend_extensions.c: fixes compile on platforms without dl() support.
-
-2000-04-15 Zeev Suraski <zeev@zend.com>
-
- * zend.c: Fix ZTS
-
-2000-04-15 Andi Gutmans <andi@zend.com>
-
- * zend-scanner.l:
- "use" is not yet supported; instead use include_once() or require_once()
- for the time being (Andi, Zend library)
-
-2000-04-15 Zeev Suraski <zeev@zend.com>
-
- * zend.c
- zend_API.c
- zend_compile.c
- zend_execute_API.c
- zend_list.c
- zend_list.h: - Clean up resource lists namespace
- - Prepare extended resource list destructor APIs (currently unused)
-
-2000-04-13 Zeev Suraski <zeev@zend.com>
-
- * zend_operators.c:
- Fix a memory leak when using assign-op bitwise operators on strings
-
-2000-04-12 Zeev Suraski <zeev@zend.com>
-
- * zend_execute.c: *** empty log message ***
-
-2000-04-11 Andi Gutmans <andi@zend.com>
-
- * zend_execute_API.c: - Fix memory leak
-
-2000-04-11 Zeev Suraski <zeev@zend.com>
-
- * zend_execute.c: Fix warnings
-
- * zend_execute.c: Fix fd leak in include_once()
-
-2000-04-10 Andi Gutmans <andi@zend.com>
-
- * zend-scanner.l
- zend_execute.c: -
-
-2000-04-10 Zeev Suraski <zeev@zend.com>
-
- * zend.h
- zend_compile.h
- zend_execute.c
- zend_execute.h
- zend_execute_API.c
- zend_globals.h
- zend_operators.c: Fix object overloading support
-
-2000-04-10 Andi Gutmans <andi@zend.com>
-
- * zend_execute.c: - Add warnings
-
- * zend_compile.c: - Two more places needed changing
-
-2000-04-10 Zeev Suraski <zeev@zend.com>
-
- * zend-parser.y
- zend_compile.c
- zend_compile.h
- zend_execute.h: Clean up last/size definitions
-
-2000-04-09 Zeev Suraski <zeev@zend.com>
-
- * zend_compile.h: *** empty log message ***
-
-2000-04-07 Zeev Suraski <zeev@zend.com>
-
- * zend_execute.c: Thoroughly fix include_once()
-
- * zend_execute.c: Fix include_once()
-
-2000-04-06 Andi Gutmans <andi@zend.com>
-
- * zend-parser.y: *** empty log message ***
-
- * zend_execute.c
- zend_execute.h: Initial preparation for OO overloading patch
-
-2000-04-05 Andi Gutmans <andi@zend.com>
-
- * zend_extensions.h: - Bump up version number
-
- * zend_compile.c
- zend_execute.c: - FIx JMPZNZ
-
-2000-04-03 Zeev Suraski <zeev@zend.com>
-
- * zend_list.c:
- Fix the problem with dl()'d modules not freeing their resources properly
-
-2000-04-01 Zeev Suraski <zeev@zend.com>
-
- * zend_API.h
- zend_config.w32.h: *** empty log message ***
-
- * acconfig.h: Have a standard way of exporting symbols
-
- * zend_modules.h: Use int
-
- * zend_API.h: Generalize some common thread-safety stuff
-
- * zend_modules.h: Have a standard entry for the globals id
-
-2000-03-31 Zeev Suraski <zeev@zend.com>
-
- * zend_compile.c:
- The previous fix ended up being broken, this one should do it
-
-2000-03-31 Andi Gutmans <andi@zend.com>
-
- * zend_compile.c: - Fix bug
-
-2000-03-30 Zeev Suraski <zeev@zend.com>
-
- * zend_extensions.c: Fix zend_register_extension()
-
-2000-03-30 Andi Gutmans <andi@zend.com>
-
- * zend_extensions.h: - Bump up API number after Lars' change
-
-2000-03-30 sascha <sascha@pb1.pair.com>
-
- * Makefile.am: Give another hint to BSD makes
-
- * Makefile.am:
- Specifically mention $(srcdir), so that OpenBSD's make gets it
-
-2000-03-29 Zeev Suraski <zeev@zend.com>
-
- * zend_stack.c
- zend_stack.h
- zend_compile.c:
- - Make the argument order for the stack applies more consistent with other Zend
- data structures
- - Fix a possible corruption problem due to switch() C-level optimization
-
-2000-03-29 Torben Wilson <torben@pinc.com>
-
- * zend-parser.y
- zend-scanner.l
- zend_compile.h
- zend_execute.c
- zend_opcode.c
- zend_operators.c
- zend_operators.h:
-
- Added !== (is not identical) operator.
-
-2000-03-29 Zeev Suraski <zeev@zend.com>
-
- * zend_extensions.c
- zend_extensions.h: *** empty log message ***
-
-2000-03-29 Andi Gutmans <andi@zend.com>
-
- * zend_API.h:
- - Make sure zend_API.h has Zend'ish versions of the ZEND macros so that
- Zend'ish modules don't need to mix PHP & Zend notation.
-
-2000-03-28 Zeev Suraski <zeev@zend.com>
-
- * zend_builtin_functions.c:
- The checks for func_num_args() and friends were broken - fixed
-
-2000-03-27 Sam Ruby <rubys@us.ibm.com>
-
- * Zend.dsp: Remove debug libraries from debug build
-
-2000-03-26 Andi Gutmans <andi@zend.com>
-
- * zend_execute.c
- zend_execute_API.c
- zend_API.c
- zend_builtin_functions.c: - Stop zend_func_args() and co. from crashing
-
- * zend.h:
- - Didn't see Thies' commit message although I can't really see how it would
- make a difference
-
- * zend.h
- zend_opcode.c: - Include Andrea's fix for alloca.h
-
-2000-03-26 Thies C. Arntzen <thies@thieso.net>
-
- * zend.h
- zend_execute.c:
- <alloca.h> needs to be included before we define macros calling alloca()
- atleast using SGI's cc - should not harm other platforms (i hope)
-
- * zend_opcode.c: fix cast
-
-2000-03-25 Andi Gutmans <andi@zend.com>
-
- * zend_alloc.c
- zend_alloc.h: *** empty log message ***
-
-2000-03-25 Zeev Suraski <zeev@zend.com>
-
- * zend-parser.y
- zend.c
- zend.h
- zend_API.c
- zend_API.h
- zend_builtin_functions.c
- zend_compile.c
- zend_execute.c
- zend_execute_API.c
- zend_opcode.c
- zend_variables.c: - Some header dependencies cleanup
- - Generalize zval_print() and zval_print_r()
-
-2000-03-25 Sam Ruby <rubys@us.ibm.com>
-
- * zend.h: RTLD_NOW => RTLD_LAZY|RTLD_GLOBAL
-
-2000-03-25 Zeev Suraski <zeev@zend.com>
-
- * Zend.dsp: Update dsp's
-
-2000-03-24 Zeev Suraski <zeev@zend.com>
-
- * zend_execute.c:
- - Fixed a crash when sending a non-variable expression to a runtime-bound function
- that expected a reference.
-
-2000-03-24 Andi Gutmans <andi@zend.com>
-
- * zend_API.c
- zend_builtin_functions.c
- zend_compile.c
- zend_execute.c
- zend_execute_API.c
- zend_hash.c
- zend_hash.h: - Nuke hash_*_ptr functions
-
-2000-03-23 Andrei Zmievski <andrei@ispi.net>
-
- * zend_builtin_functions.c: Use WRONG_PARAM_COUNT.
-
-2000-03-23 Zeev Suraski <zeev@zend.com>
-
- * zend_builtin_functions.c: - Make it compile
-
-2000-03-23 Andrei Zmievski <andrei@ispi.net>
-
- * zend_builtin_functions.c: Added get_class_methods().
-
-2000-03-22 Andi Gutmans <andi@zend.com>
-
- * zend.h: - Change Zend version as API has changed
-
-2000-03-22 Zeev Suraski <zeev@zend.com>
-
- * zend_operators.c: - Wrong fix
-
- * zend_operators.c: - Only free when result != op1
-
-2000-03-21 Andi Gutmans <andi@zend.com>
-
- * zend.c
- zend.h:
- - Change zend_startup to accept a flag for starting builtin functions
-
- * zend.h
- zend_API.h: - Move #defines
-
-2000-03-19 Thies C. Arntzen <thies@thieso.net>
-
- * zend_compile.h: kill warning
-
-2000-03-18 Andi Gutmans <andi@zend.com>
-
- * zend.h: - Fix compile problem on FreeBSD
-
- * zend.h:
- - No reason for refcount to be signed and move to zend_* typedefs
-
-2000-03-18 Thies C. Arntzen <thies@thieso.net>
-
- * zend.c: renamed _string_value_() to __string_value().
-
-2000-03-18 Zeev Suraski <zeev@zend.com>
-
- * zend_builtin_functions.c:
- The third argument to define() wasn't working right, fixed
-
- * zend_execute.c:
- false wouldn't automaticaly switch to an array type, which resulted in an
- incompatibility with PHP 3. Fixed.
-
-2000-03-16 Thies C. Arntzen <thies@thieso.net>
-
- * zend.c: renamed "to_string" -> "_string_value_"
-
-2000-03-15 Zeev Suraski <zeev@zend.com>
-
- * zend-scanner.l
- zend.h
- zend_execute.c: - Fix newly introduced problem reported by Sam Ruby
-
-2000-03-15 Andrei Zmievski <andrei@ispi.net>
-
- * zend_hash.c
- zend_hash.h:
- Make zend_hash_move_forward()/zenv_hash_move_backwards() a little smarter.
-
-2000-03-15 Zeev Suraski <zeev@zend.com>
-
- * zend_opcode.c: - Fix warning (I thought I fixed this one before)
-
-2000-03-14 Andrei Zmievski <andrei@ispi.net>
-
- * zend_llist.c
- zend_llist.h: Implemented external list traversing.
-
-2000-03-14 Andi Gutmans <andi@zend.com>
-
- * zend-parser.y:
- - Allow array(1,2,3,) i.e. with trailing comma. You can only have one
- trailing comma.
-
-2000-03-13 Zeev Suraski <zeev@zend.com>
-
- * zend_compile.c: -
-
- * zend_compile.c: - Spare a byte :)
-
-2000-03-13 Andi Gutmans <andi@zend.com>
-
- * zend_compile.h
- zend_modules.h: - Another zend_uchar
-
- * zend_compile.c: *** empty log message ***
-
- * zend.h
- zend_compile.h:
- - define zend_uint and zend_uchar and use them in a few places
-
-2000-03-13 Andrei Zmievski <andrei@ispi.net>
-
- * zend_hash.c
- zend_hash.h:
- Introduced a way to traverse hashes through external pointers.
-
-2000-03-13 Andi Gutmans <andi@zend.com>
-
- * zend_compile.h: - Change type from int -> char
-
-2000-03-13 Zeev Suraski <zeev@zend.com>
-
- * zend-scanner.l: - Fix filename/lineno initialization for do_return
-
-2000-03-12 Zeev Suraski <zeev@zend.com>
-
- * zend_builtin_functions.c
- zend_modules.h: -
-
-2000-03-11 Andi Gutmans <andi@zend.com>
-
- * zend_execute.c:
- - Remove inline from functions which are pretty large and besides eating up
- memory in compile time probably doesn't boost performance.
-
-2000-03-10 Andi Gutmans <andi@zend.com>
-
- * zend_operators.c:
- - Seems to be a problem here with the return value not being set
-
- * zend-parser.y
- zend_builtin_functions.c
- zend_execute.c
- zend_execute_API.c
- zend_globals.h: - Quick way of supporting include_once().
- Good enough for RC1.
-
- * zend-parser.y
- zend-scanner.l
- zend_compile.c
- zend_compile.h: - Support require_once().
-
- * zend_compile.h
- zend_execute.c: - Cleanup old IMPORT stuff
-
- * zend-parser.y
- zend-scanner.l:
- - Nuke import, add include_once and include_require scanner/parser rules.
- Hope to nuke use too :)
-
- * zend_modules.h: - That broke the Win32 build
-
- * zend_modules.h: - Fix a bug and define an API_NO for the ZEND_MODULE_API
-
- * zend_modules.h: - zend_config.h is enough
-
- * zend_modules.h: - Save ZEND_DEBUG, ZTS, ZEND_API information
-
-2000-03-09 Andi Gutmans <andi@zend.com>
-
- * zend_highlight.c: - Fix bug in syntax highlighter
-
-2000-03-06 stig <stig@pb1.pair.com>
-
- * zend_modules.h: added GINIT_FUNC_ARGS and GINIT_FUNC_ARGS_PASSTHRU
-
-2000-03-06 Zeev Suraski <zeev@zend.com>
-
- * zend_extensions.h: - Bump up Zend's API version
-
-2000-03-06 stig <stig@pb1.pair.com>
-
- * zend_modules.h: Added ZEND_MODULE_INFO_FUNC_ARGS_PASSTHRU.
-
-2000-03-06 Andi Gutmans <andi@zend.com>
-
- * zend-scanner.l: - Fix memory leak
-
- * zend.c: - Missed one
-
-2000-03-06 Sam Ruby <rubys@us.ibm.com>
-
- * zend.c
- zend.h: Unresolved externs
-
-2000-03-06 Zeev Suraski <zeev@zend.com>
-
- * zend_extensions.c
- zend_extensions.h
- zend_fast_cache.h
- zend_globals.h
- zend_globals_macros.h
- zend_hash.c
- zend_hash.h
- zend_highlight.c
- zend_highlight.h
- zend_indent.c
- zend_indent.h
- zend_list.c
- zend_list.h
- zend_llist.c
- zend_llist.h
- zend_opcode.c
- zend_operators.c
- zend_operators.h
- zend_ptr_stack.c
- zend_ptr_stack.h
- zend_sprintf.c
- zend_stack.c
- zend_stack.h
- zend_variables.c
- zend_variables.h
- LICENSE
- zend-parser.y
- zend-scanner.h
- zend-scanner.l
- zend.c
- zend.h
- zend_API.c
- zend_API.h
- zend_alloc.c
- zend_alloc.h
- zend_builtin_functions.c
- zend_builtin_functions.h
- zend_compile.c
- zend_compile.h
- zend_config.w32.h
- zend_constants.c
- zend_constants.h
- zend_dynamic_array.c
- zend_dynamic_array.h
- zend_errors.h
- zend_execute.c
- zend_execute.h
- zend_execute_API.c
- zend_modules.h: It's official now...
-
-2000-03-05 Zeev Suraski <zeev@zend.com>
-
- * ZendTS.dsp
- zend.c
- zend.h: Wrap some commonly unused callbacks
-
-2000-03-04 Zeev Suraski <zeev@zend.com>
-
- * zend-scanner.l:
- The default return value from include() and eval() changed from 1 to 0
- unintentionally after the old return-reference patches - fixed
-
-2000-03-02 Sam Ruby <rubys@us.ibm.com>
-
- * zend_config.w32.h: Fix Win32 build breakage
-
-2000-03-01 Andi Gutmans <andi@zend.com>
-
- * zend.c: - Upgrade to year 2000
-
- * ZEND_CHANGES
- zend_compile.c
- zend_execute.c: - Fix typos
-
-2000-03-01 Thies C. Arntzen <thies@thieso.net>
-
- * zend_operators.c: now
-
-2000-02-27 Egon Schmid <eschmid@s.netic.de>
-
- * zend_builtin_functions.c: Fixed some protos.
-
-2000-02-26 Sam Ruby <rubys@us.ibm.com>
-
- * zend_builtin_functions.c: compilation error - Win32
-
-2000-02-26 Andrei Zmievski <andrei@ispi.net>
-
- * zend_builtin_functions.c:
- Added get_class_vars() and get_object_vars() functions.
-
- * zend_execute.c: Fix typo.
-
-2000-02-26 Zeev Suraski <zeev@zend.com>
-
- * zend_operators.c: Fix comparisons of "inf"=="inf" and "-inf"=="-inf"
-
-2000-02-25 Zeev Suraski <zeev@zend.com>
-
- * zend_fast_cache.h
- zend_variables.c: Use the fast cache here too
-
-2000-02-19 Zeev Suraski <zeev@zend.com>
-
- * zend-parser.y
- zend-scanner.h
- zend-scanner.l
- zend.c
- zend.h
- zend_API.c
- zend_API.h
- zend_alloc.c
- zend_alloc.h
- zend_builtin_functions.c
- zend_builtin_functions.h
- zend_compile.c
- zend_compile.h
- zend_config.w32.h
- zend_constants.c
- zend_constants.h
- zend_dynamic_array.c
- zend_dynamic_array.h
- zend_errors.h
- zend_execute.c
- zend_execute.h
- zend_execute_API.c
- zend_extensions.c
- zend_extensions.h
- zend_fast_cache.h
- zend_globals.h
- zend_globals_macros.h
- zend_hash.c
- zend_hash.h
- zend_highlight.c
- zend_highlight.h
- zend_indent.c
- zend_indent.h
- zend_list.c
- zend_list.h
- zend_llist.c
- zend_llist.h
- zend_modules.h
- zend_opcode.c
- zend_operators.c
- zend_operators.h
- zend_ptr_stack.c
- zend_ptr_stack.h
- zend_sprintf.c
- zend_stack.c
- zend_stack.h
- zend_variables.c
- zend_variables.h: (c) patch
-
- * zend_API.c
- zend_API.h
- zend_fast_cache.h
- zend_hash.c:
- - Fix a nasty bug in the hash, introduced in the recent migration to macros
- - Make array_init() and friends trackable
-
- * zend_API.c
- zend_API.h
- zend_execute.c
- zend_operators.c
- zend_operators.h: Generalize macros
-
-2000-02-18 Zeev Suraski <zeev@zend.com>
-
- * zend-scanner.l: *** empty log message ***
-
-2000-02-18 sascha <sascha@pb1.pair.com>
-
- * zend_llist.c
- zend_llist.h:
- Get rid of second declaration of compare_func_t. Either put in a common
- header file or prefix it with i.e. zend_llist_
-
-2000-02-18 Andi Gutmans <andi@zend.com>
-
- * zend_llist.c
- zend_llist.h:
- - Quick and dirty hack for supporting sorts. Improve later on when I wake up.
-
- * ZendTS.dsp
- zend_dynamic_array.c: - Didn't compile on Win32
-
- * zend_dynamic_array.c:
- - Tiny change (I know I don't have to cast malloc() to void * but I like
- casting my malloc()'s)
-
- * Makefile.am
- zend_dynamic_array.c
- zend_dynamic_array.h:
- - Preliminary support for dynamic arrays. I need it on order to try out a
- new hash implementation. It isn't used anywhere.
-
-2000-02-17 Andi Gutmans <andi@zend.com>
-
- * zend.c
- zend.h: - Add ZEND_API
-
-2000-02-16 Andi Gutmans <andi@zend.com>
-
- * zend_execute.c: -Fix bug 3504 concerning leaks with unset()
-
- * zend_execute.c
- zend.h
- zend_compile.h: - Hopefully fix Thies' bug report.
-
-2000-02-16 Zeev Suraski <zeev@zend.com>
-
- * zend_builtin_functions.c:
- ZEND_TEST_EXCEPTIONS should be defined/undefined before it's checked
-
-2000-02-16 Andi Gutmans <andi@zend.com>
-
- * zend_execute.c: - Fix bug #3309
-
-2000-02-14 Andi Gutmans <andi@zend.com>
-
- * zend-parser.y
- zend_compile.c
- zend_compile.h
- zend_execute.c:
- - Put in the infrastructure for the unset() fix. Right now it has the old
- behavior but I just need time tomorrow to add the correct behavior.
-
- * zend_builtin_functions.c: - Fix bug in func_get_arg()
- - Get rid of compiler warnings for unused function crash()
-
-2000-02-13 Zeev Suraski <zeev@zend.com>
-
- * zend_constants.c: Fix a memory leak
-
-2000-02-13 Andi Gutmans <andi@zend.com>
-
- * zend_hash.c: - Save a function call one very hash_add
-
- * zend_hash.c
- zend_hash.h:
- - Make startup a bit faster by changing some hash_update()'s and hash_add()'s
- to hash_update_ptr()/hash_add_ptr()
-
- * zend_hash.c:
- - Fix a couple of potential bugs where we were using emalloc/efree instead
- of pemalloc/pefree.
- - Fix a bug were we potentially would be freeing the key by mistake
-
-2000-02-13 Zeev Suraski <zeev@zend.com>
-
- * zend_builtin_functions.c: *** empty log message ***
-
- * zend_operators.c: Make (array) false == array() and not array(false)
-
-2000-02-11 Andrei Zmievski <andrei@ispi.net>
-
- * zend_hash.c
- zend_hash.h: Made a couple of typedefs for zend_hash_apply_*() calls.
-
-2000-02-11 Zeev Suraski <zeev@zend.com>
-
- * Zend.dsp
- ZendTS.dsp
- zend_config.w32.h: Update .dsp's
-
- * zend-scanner.l
- zend.h
- zend_API.h
- zend_alloc.c
- zend_config.w32.h
- zend_constants.c
- zend_execute.c
- zend_extensions.c: Fine tune Andi's patch
-
-2000-02-10 Andi Gutmans <andi@zend.com>
-
- * zend.h: - #define ZEND_WIN32 differently
-
- * zend-scanner.l
- zend.h
- zend_API.h
- zend_alloc.c
- zend_constants.c
- zend_execute.c
- zend_extensions.c: - Finally beautify those WIN32|WINNT checks
-
- * zend_execute.c: - Shouldn't be there
-
- * zend_execute.c: - Cleanup the code
-
-2000-02-09 Zeev Suraski <zeev@zend.com>
-
- * zend-parser.y
- zend_execute.c:
- Fix last known nasty bugs in Zend. It'll be cool if there are no new ones :)
-
-2000-02-09 Thies C. Arntzen <thies@thieso.net>
-
- * zend_execute.c: foreach() works now for objects as well.
-
-2000-02-08 Zeev Suraski <zeev@zend.com>
-
- * zend_operators.c: Fix declaration
-
- * zend_execute.c: Fix an elusive bug
-
-2000-02-08 Andrei Zmievski <andrei@ispi.net>
-
- * zend_operators.c: Fix up the patch.
-
- * zend_builtin_functions.c
- zend_operators.c
- zend_operators.h: Patches from Walter for strncmp() stuff.
-
-2000-02-07 Zeev Suraski <zeev@zend.com>
-
- * zend_highlight.c: Remove old unnecessary check
-
- * zend-parser.y
- zend-scanner.l
- zend_compile.c
- zend_highlight.c:
- Syntax highlighting was erronously emitting more than one semicolon and/or garbage with heredocs
-
-2000-02-06 Andi Gutmans <andi@zend.com>
-
- * zend_compile.c:
- - Support the string offset syntax $a{2} with the regular array opcodes.
- Will need to write new opcodes sometime but right now it's good enough
- to announce the change to this string offset syntax for beta 4.
-
-2000-02-05 Andi Gutmans <andi@zend.com>
-
- * zend-parser.y
- zend_compile.c:
- - This hopefully fixes the list($a, $a) = array(1,2) crash, i.e. when list
- by mistake contains the same variable twice.
- - BTW, there is no defined order of assignment. The value of $a after the
- previous example is undefined, and should not be assumed to be either 1
- nor 2.
-
-2000-02-05 Zeev Suraski <zeev@zend.com>
-
- * zend_execute.c: More cleanup
-
- * zend.h
- zend_builtin_functions.c
- zend_execute.c
- zend_execute_API.c: Pass the executor globals to internal functions
-
- * zend.c
- zend.h
- zend_API.c
- zend_compile.c
- zend_constants.c
- zend_execute.c
- zend_execute_API.c
- zend_hash.c
- zend_hash.h
- zend_modules.h
- zend_variables.c: - Stop passing list/plist to internal functions
- - Add a typedef for the pCopyConstructor function pointer
- - Minor hacks
-
- * zend-scanner.l:
- That was the broken downcasting that prevented the interactive C++ mode from working properly under UNIX
-
-2000-02-04 Zeev Suraski <zeev@zend.com>
-
- * zend-scanner.l
- zend_compile.c
- zend_compile.h
- zend_execute.c
- zend_execute.h
- zend_execute_API.c
- zend_globals.h
- zend_opcode.c:
- Maintain a state of whether we're compiling and/or executing
-
-2000-02-03 Andrei Zmievski <andrei@ispi.net>
-
- * zend_API.c
- zend_API.h: *** empty log message ***
-
-2000-02-02 Zeev Suraski <zeev@zend.com>
-
- * zend_API.c: - Fix built-in classes with more than 5 methods
-
- * zend_compile.c:
- - Fix the annoying problem with list(), that surfaced up after our recent cleaning
- patches
-
-2000-02-01 Andrei Zmievski <andrei@ispi.net>
-
- * zend_API.c
- zend_API.h: Added add_property_unset() and add_property_bool().
-
-2000-02-01 Zeev Suraski <zeev@zend.com>
-
- * ZendTS.dsp
- zend_compile.h
- zend_execute.c
- zend_execute_API.c
- zend_execute_locks.h: Improve dependencies
-
- * zend_execute.c: Sort out a gdb problem
-
- * zend_execute.c: Fix warning
-
-2000-02-01 Andi Gutmans <andi@zend.com>
-
- * zend_compile.c
- zend_execute_API.c
- zend_globals.h: - Get rid of remains of garbage.
- - This should fix Thies' UMR
-
-2000-02-01 Thies C. Arntzen <thies@thieso.net>
-
- * zend_execute_API.c:
- moved destroying of garbage before resource-list gets destroyed - (see my previous mail)
- zeev, andi - please comment!
-
- * zend.c: added missing break.
-
- * zend_hash.c
- zend_hash.h:
- took out zend_hash_pointer_update() & zend_hash_pointer_index_update_or_next_insert() - i really prefer link-errors instead of runtime-errors, don't you?
-
-2000-01-31 Andi Gutmans <andi@zend.com>
-
- * zend_compile.h: - This has to always be done.
-
-2000-01-31 Zeev Suraski <zeev@zend.com>
-
- * zend-parser.y
- zend_compile.h
- zend_execute.c
- zend_execute_API.c: - Optimized garbage mechanism
- - Fixed another buglet in the parser
-
- * zend-parser.y
- zend_alloc.c
- zend_execute.c
- zend_fast_cache.h: - Fix foreach()
- - Fix indirect reference with object properties
-
-2000-01-30 Andi Gutmans <andi@zend.com>
-
- * zend_execute.c:
- - Fix the bug Thies found where I forgot to change a break; to NEXT_OPCODE();
- - If you find anymore let me know
-
- * zend_alloc.h: - Run it on align_test
-
-2000-01-29 Zeev Suraski <zeev@zend.com>
-
- * zend_compile.c: Fix ``'s
-
- * zend-parser.y
- zend-scanner.l
- zend_compile.h: Fix require()
-
-2000-01-29 Andi Gutmans <andi@zend.com>
-
- * zend-parser.y: - Get rid of another rule which isn't needed.
-
- * zend-parser.y
- zend_compile.c
- zend_compile.h:
- - Add parser support for string offsets. This added three shift/reduce
- conflicts but they all seem to be fine.
- - Cleaned up the parsing rules a bit and made them much more compact and
- elegant.
- - Please CVS update and see that I didn't break anything.
-
- * zend_alloc.h:
- - This will save some memory w/ GCC compilers on some platforms
-
- * zend_execute.c: - Yet another tiny optimization.
-
-2000-01-28 Andi Gutmans <andi@zend.com>
-
- * zend-parser.y
- zend_compile.c
- zend_execute.c: - Make loop a bit faster.
-
- * zend.h: - Make sure its use is understood.
-
- * zend.h
- zend_execute.c: - Double the speed of some key switch() tests for Win32.
-
- * zend_execute.c:
- - This makes the switch() statement twice as quick. Moving to enum
- might make this a general speed up for other platforms too
-
-2000-01-26 Andi Gutmans <andi@zend.com>
-
- * zend_execute_API.c: - Keep objects as references.
-
- * zend_execute_API.c
- zend_opcode.c:
- - Allow is_ref to become 0 in case the refcount is back to 1.
-
-2000-01-24 Andi Gutmans <andi@zend.com>
-
- * zend_compile.c
- zend_execute.c:
- - Make foreach() now copy the array but use the original array. It can
- still be optimized A LOT but it's only a performance issue and not
- a feature issue.
-
-2000-01-24 Zeev Suraski <zeev@zend.com>
-
- * zend-parser.y
- zend-scanner.l
- zend.c
- zend.h
- zend_builtin_functions.c
- zend_compile.c
- zend_compile.h
- zend_execute.c
- zend_execute_API.c
- zend_globals.h
- zend_operators.c
- zend_operators.h: - Implement declare() with declarables framework
- - Implement ticks - Germany&Norway - 5 points!
-
- * zend_execute.c
- zend_execute_API.c: Fixes
-
-2000-01-22 Zeev Suraski <zeev@zend.com>
-
- * zend_execute_API.c: Fix an elusive bug
-
-2000-01-20 Zeev Suraski <zeev@zend.com>
-
- * zend_hash.c: Add some order...
-
- * zend_hash.c: Indentation fixes
-
-2000-01-19 Andi Gutmans <andi@zend.com>
-
- * zend_hash.c: - Optimize zend_hash_del a tiny bit.
-
- * zend_hash.c
- zend_hash.h: - Hopefully fix the hash problem.
-
- * zend_hash.c: - Hrm I'm not concentrating
-
- * zend_hash.c:
- - Actually the destructor should run after the data is already detached
- from the hash but before the bucket is freed.
-
- * zend_hash.c:
- - Rollback hash_apply and friends. They assume now that hash_del is reentrant
- as it first applies the destructor and only later nukes the bucket
-
- * zend_hash.c:
- - Run destructor before the hash structure is modified, thus, making
- hash_del, reentrant (BLOCK_INTERRUPTIONS needs to be made a counter now).
-
- * zend_hash.c: - Undo a bug we introduced. (Another one out there).
-
-2000-01-19 Thies C. Arntzen <thies@thieso.net>
-
- * zend_API.h:
- RETURN_NULL -> RETURN_NULL() // we don't want macros without an argumnet
-
-2000-01-18 Zeev Suraski <zeev@zend.com>
-
- * zend_execute.c: Leak fix
-
-2000-01-18 Thies C. Arntzen <thies@thieso.net>
-
- * zend_API.h: RETURN_NULL & RETVAL_NULL don't need ().
-
-2000-01-17 Thies C. Arntzen <thies@thieso.net>
-
- * zend_hash.c: use defines
-
-2000-01-17 Zeev Suraski <zeev@zend.com>
-
- * zend_hash.c
- zend_hash.h
- zend_variables.c: Get rid of the IsPointer functionality in the hash.
-
- * zend_hash.c: - Fixes a newly introduced bug in the hash
-
- * zend_compile.c
- zend_compile.h
- zend_constants.c
- zend_constants.h
- zend_execute_API.c
- zend_hash.c
- zend_hash.h
- zend_list.c
- zend_list.h
- zend_modules.h
- zend_opcode.c
- zend_variables.c
- zend_variables.h:
- Destructors no longer return ints, the low level problem it was intended to solve is long gone now...
-
-2000-01-16 Zeev Suraski <zeev@zend.com>
-
- * zend.c
- zend_execute_API.c
- zend_hash.c
- zend_hash.h
- zend_list.c
- zend_list.h:
- - Make zend_hash_apply() (and friends) reentrant and much, much quicker
- - Introduce zend_hash_graceful_destroy(), which allows the destructor functions to
- use zend_hash_apply() and/or zend_hash_graceful_destroy()
- - Switch to zend_hash_graceful_destroy() in the resource list shutdowns
-
- * zend.c
- zend_compile.c
- zend_compile.h:
- Allow module startup to be separate from the compiler/executor startup
-
-2000-01-16 Thies C. Arntzen <thies@thieso.net>
-
- * zend_hash.c: make the ht->inconsistent stuff less ugly:)
-
-2000-01-15 Zeev Suraski <zeev@zend.com>
-
- * zend_execute_API.c
- zend_list.c: Fix a bug in call_user_function_ex()
-
- * zend-parser.y:
- Added support for $foo->{$bar}["foobar"] notation (was supported in PHP 3)
-
-2000-01-15 Thies C. Arntzen <thies@thieso.net>
-
- * zend_hash.c
- zend_hash.h:
- if ZEND_DEBUG mode is on we'll now see warnings when a HashTable is accessed
- while it's inconsistent.
-
- Zeev, Andi - you welcome to revert this patch if you don't like it - i find it
- useful! accesssing inconsistent hashtables is one of the hardest things to track!
-
-2000-01-14 Andrei Zmievski <andrei@ispi.net>
-
- * zend_highlight.c:
- Since we're highlighting code, put <code> and </code> around the code.
-
-2000-01-13 Zeev Suraski <zeev@zend.com>
-
- * zend.h
- zend_config.w32.h: Make Win32 compile again
-
-2000-01-12 sascha <sascha@pb1.pair.com>
-
- * acconfig.h
- zend.h:
- Move dl stuff from acconfig.h into zend.h. That allows us finer control
- when it comes to suppressing dlfcn.h.
-
-2000-01-09 Zeev Suraski <zeev@zend.com>
-
- * zend_execute.c: Functionality & crash fixes
-
-2000-01-04 Andi Gutmans <andi@zend.com>
-
- * zend.h
- zend_operators.c:
- - Rename IS_BC to FLAG_IS_BC. We will probably nuke it.
-
-2000-01-04 Thies C. Arntzen <thies@thieso.net>
-
- * zend_API.h: added ZVAL_*() macros.
-
-2000-01-04 Andi Gutmans <andi@zend.com>
-
- * zend.h
- zend_execute.c:
- - Separate the overloaded objects' types from Zend's data types.
- There is no reason for them to be the same, and IS_METHOD just cluttered
- there data types.
-
- * zend.h
- zend_API.c
- zend_API.h
- zend_builtin_functions.c
- zend_constants.c
- zend_execute.c
- zend_execute_API.c
- zend_operators.c
- zend_variables.c
- zend-parser.y
- zend.c: - Change IS_UNSET -> IS_NULL
-
-2000-01-03 Zeev Suraski <zeev@zend.com>
-
- * zend_execute.c: Fix a bug when using [] on a string
-
-2000-01-03 Joey Smith <joey@joeysmith.com>
-
- * zend_operators.c: number.h comes from ext/bcmath, not functions/
-
-2000-01-03 Zeev Suraski <zeev@zend.com>
-
- * zend_execute.c: Fix
-
-2000-01-03 Andi Gutmans <andi@zend.com>
-
- * zend_operators.c: - Fix compare_function() for IS_UNSET
-
-2000-01-02 Zeev Suraski <zeev@zend.com>
-
- * zend_execute.c: Fix
-
-2000-01-02 Thies C. Arntzen <thies@thieso.net>
-
- * zend_API.h: renamed RET???_UNSET -> RET???_NULL
-
-2000-01-01 sascha <sascha@pb1.pair.com>
-
- * Zend.m4
- acconfig.h
- acinclude.m4: Some cleanup
-
-2000-01-01 Andi Gutmans <andi@zend.com>
-
- * zend_operators.c:
- - IS_NULL should be 0 when converted to a long although I don't think it
- really should be documented.
-
-2000-01-01 Zeev Suraski <zeev@zend.com>
-
- * zend_operators.c: Fix buglet
-
-1999-12-31 Zeev Suraski <zeev@zend.com>
-
- * Zend.dsp
- ZendTS.dsp: .dsp updates
-
- * Zend.dsp
- ZendTS.dsp
- zend_config.w32.h: - Add Release_inline builds
-
- * zend-parser.y
- zend-scanner.l
- zend.c
- zend.h
- zend_API.c
- zend_API.h
- zend_builtin_functions.c
- zend_compile.c
- zend_constants.c
- zend_execute.c
- zend_execute_API.c
- zend_operators.c
- zend_operators.h
- zend_variables.c: - Nuke undefined_variable_string
- - Introduce IS_UNSET
-
-1999-12-31 Andi Gutmans <andi@zend.com>
-
- * ZendTS.dsp
- zend-parser.y
- zend_compile.c
- zend_compile.h:
- - Fix bug #3073. continue in do..while() loops should work now
-
-1999-12-30 Zeev Suraski <zeev@zend.com>
-
- * zend.c
- zend_alloc.c
- zend_fast_cache.h
- zend_globals.h
- zend_globals_macros.h:
- This should enable people to use ALLOC_ZVAL() in code outside the php4.dll
-
-1999-12-30 sascha <sascha@pb1.pair.com>
-
- * Zend.m4:
- Solaris' sed does not like this expression. Since -O0 is the default,
- we can also omit it.
-
-1999-12-29 Zeev Suraski <zeev@zend.com>
-
- * zend_variables.c:
- - Change var_reset() to set bool(0) instead of string("")
-
- Authors should go over their code and change it to use var_reset() instead of manually
- setting it to string(""), in case they're interested in the false value.
-
- * zend_alloc.c: time_t is an int under Linux... this should always work.
-
-1999-12-28 sascha <sascha@pb1.pair.com>
-
- * zend_alloc.c: Fix warnings
-
-1999-12-28 Thies C. Arntzen <thies@thieso.net>
-
- * zend_API.h
- zend_constants.c: new constant: SQL_NULL
- new macros: RETURN_SQLNULL,RETVAL_SQLNULL,IS_SQLNULL
-
-1999-12-27 Zeev Suraski <zeev@zend.com>
-
- * zend_fast_cache.h: Fix
-
-1999-12-27 Andi Gutmans <andi@zend.com>
-
- * zend_API.c: - Get rid of warning
-
-1999-12-27 Zeev Suraski <zeev@zend.com>
-
- * Zend.dsp
- ZendTS.dsp
- zend_API.c
- zend_API.h
- zend_alloc.c
- zend_compile.c
- zend_execute.c
- zend_execute_API.c
- zend_fast_cache.h
- zend_globals.h
- zend_opcode.c
- zend_operators.c
- zend_variables.c
- zend_zval_alloc.h: - Generalize the fast cache mechanism
- - Add the HashTable struct to the fast cache mechanism
-
-1999-12-27 Andi Gutmans <andi@zend.com>
-
- * zend_API.c:
- - Make zend_internal_function allocate a full zend_function structure so
- that we don't get memory overruns and Thies doesn't get angry :)
-
-1999-12-27 Zeev Suraski <zeev@zend.com>
-
- * zend_alloc.c: *** empty log message ***
-
- * zend_globals.h
- zend_zval_alloc.h
- zend_alloc.c: Add cache statistics support
-
-1999-12-27 Thies C. Arntzen <thies@thieso.net>
-
- * zend.c: fix UMR in ZTS mode
-
-1999-12-26 Zeev Suraski <zeev@zend.com>
-
- * Zend.dsp
- ZendTS.dsp
- zend_alloc.c
- zend_globals.h
- zend_zval_alloc.h:
- - Enable the new zval cache on debug too. No real reason not to, and it keeps
- the code cleaner.
- - ZTS compile fixes
-
- * zend_alloc.c: Fix buglet
-
- * zend_zval_alloc.h: Add missing file
-
- * zend.h
- zend_API.h
- zend_alloc.c
- zend_compile.c
- zend_execute.c
- zend_globals.h
- zend_operators.c:
- Introduce a zval-specific cache - 5-15% speed improvement
-
-1999-12-26 sascha <sascha@pb1.pair.com>
-
- * Makefile.am
- acinclude.m4: Makefile.am: Add dummy target for dependencies
- acinclude.m4: Cache result of broken sprintf check
-
-1999-12-26 Zeev Suraski <zeev@zend.com>
-
- * zend.h
- zend_API.c
- zend_API.h
- zend_builtin_functions.c
- zend_compile.c
- zend_execute.c
- zend_execute_API.c
- zend_operators.c: Change ALLOC_ZVAL() semantics
-
- * zend_alloc.c
- zend_alloc.h
- zend_globals.h: namespace protection
-
-1999-12-25 Zeev Suraski <zeev@zend.com>
-
- * zend_ptr_stack.c
- zend_ptr_stack.h: inline functions cannot accept varargs
-
-1999-12-25 Andi Gutmans <andi@zend.com>
-
- * zend-parser.y: - Prepare Zend for the new $a{2} string offset syntax.
-
-1999-12-24 Zeev Suraski <zeev@zend.com>
-
- * zend_config.w32.h:
- Use __forceinline under Win32 (inlining under Win32 gives roughly 30% performance
- increase)
-
- * zend-scanner.l: Shut gcc up
-
- * zend_compile.c: Optimize
-
-1999-12-24 Andi Gutmans <andi@zend.com>
-
- * zend.h
- zend_API.c
- zend_API.h
- zend_builtin_functions.c
- zend_compile.c
- zend_compile.h
- zend_execute.c
- zend_execute_API.c
- zend_operators.c
- zend_variables.c:
- - Create two new macro's. ALLOC_ZVAL() and FREE_ZVAL(z) and make Zend use
- them.
-
-1999-12-24 Zeev Suraski <zeev@zend.com>
-
- * zend_compile.c: - Use function_add_ref() here too
-
-1999-12-23 Zeev Suraski <zeev@zend.com>
-
- * zend_compile.c
- zend_opcode.c:
- Fix a class inheritence leak, when using static varibles in a parent class member function
-
- * zend_compile.c: This one slipped away
-
-1999-12-23 sascha <sascha@pb1.pair.com>
-
- * Zend.m4: Rename option to match description string
-
-1999-12-23 Zeev Suraski <zeev@zend.com>
-
- * zend-parser.y
- zend-scanner.l
- zend_compile.c
- zend_compile.h
- zend_execute.c:
- - require() of a dynamic expression now has the standard require() semantics
- - Fixed a memory leak in require() of a dynamic expression
-
-1999-12-23 sascha <sascha@pb1.pair.com>
-
- * Makefile.am
- Zend.m4:
- Compile zend_execute.c with special CFLAGS. For GCC, INLINE_CFLAGS
- contains -O0 to disable optimizations. This can be disabled by using
- the appropiate parameter.
-
-1999-12-22 sascha <sascha@pb1.pair.com>
-
- * zend_builtin_functions.c: Kill compiler warning
-
- * Zend.m4: Don't set DEBUG_CFLAGS to -g, if -g is already in CFLAGS
-
-1999-12-22 Zeev Suraski <zeev@zend.com>
-
- * zend.c
- zend.h: export
-
- * zend_extensions.h: Those void's don't belong in there
-
- * zend_API.h
- zend_builtin_functions.c: - Fix function_exists()
-
- * zend_execute.c:
- - Fix a very old legacy memory leak in break(n) statements
-
- * zend_execute.c: Fix for the array() initialization bug Stas found
-
-1999-12-22 Andi Gutmans <andi@zend.com>
-
- * zend_compile.c: - Remove unused variable.
-
-1999-12-21 Zeev Suraski <zeev@zend.com>
-
- * zend-scanner.l
- zend.h
- zend_compile.c
- zend_execute.c:
- Fix the highlighting problem. STR_REALLOC() should be used instead of plain erealloc()
- whenever you're dealing with strings that might be coming back from the engine - there seem
- to be a few other places like this in PHP.
-
-1999-12-21 Andrei Zmievski <andrei@ispi.net>
-
- * zend.c
- zend_API.c
- zend_compile.c
- zend_execute.c
- zend_execute_API.c
- zend_operators.c
- zend_variables.c
- zend_variables.h: We're using ZVAL's now.
-
-1999-12-21 Zeev Suraski <zeev@zend.com>
-
- * zend_execute.c: - Fix Sascha's leak. Good report!
-
- * zend_alloc.c: No need to block for interruptions so early
-
-1999-12-21 sascha <sascha@pb1.pair.com>
-
- * Zend.m4:
- Explicitly check for C++ preprocessor, otherwise autoconf forces it onto
- us at the wrong place (subsequent autoconf checks failed).
-
-1999-12-20 Zeev Suraski <zeev@zend.com>
-
- * zend_compile.c: - Fix @expr
-
- * zend.h
- zend_compile.c
- zend_execute.c:
- - Fix the crash Thies was experiencing (returning a function call could cause a crash)
- - Fix the leak Thies was experiencing (@fcall() leaked)
-
-1999-12-19 Zeev Suraski <zeev@zend.com>
-
- * Zend.dsp: Some updates
-
- * Zend.dsp
- ZendTS.dsp: Make these work again
-
- * FlexLexer.h
- Makefile.am
- Zend.dsp
- Zend.m4
- ZendTS.dsp
- configure.in
- flex.skl
- libzend.dsp
- libzend.m4
- libzendts.dsp: libzend -> Zend
-
- * zend.h
- zend_API.h
- zend_compile.c
- zend_execute.c
- zend_execute.h
- zend_execute_API.c
- zend_globals.h:
- - Made things work again (Thies, everybody - please check the latest CVS and see if you're
- still getting any problems)
- - Changed the interface of call_user_function_ex() to support returning of references
-
-1999-12-19 Andi Gutmans <andi@zend.com>
-
- * zend.c
- zend.h
- zend_compile.c
- zend_execute.c
- zend_execute_API.c
- zend_globals.h: - More fixes related to the return references patch
- - eval_string() and call_user_function_ex() still don't work.
- - The libzend tree is untested and might not be stabl yet.
-
-1999-12-19 sascha <sascha@pb1.pair.com>
-
- * Makefile.am: Add zend_sprintf.c
-
- * acconfig.h
- zend_sprintf.c: configure sets ZEND_BROKEN_SPRINTF
-
- * acinclude.m4: Variables are not interpolated unless we use _UNQUOTED
-
-1999-12-18 Zeev Suraski <zeev@zend.com>
-
- * zend.h
- zend_API.h: - The tree compiles again
-
-1999-12-18 sascha <sascha@pb1.pair.com>
-
- * libzend.m4: Let autoconf check for the proper inline keyword
-
- * Makefile.am
- libzend.m4:
- automake created illegal target names due to the ZEND_SCANNER definition.
- We now substitute @ZEND_SCANNER@ directly
-
-1999-12-18 Zeev Suraski <zeev@zend.com>
-
- * zend.h
- zend_API.c
- zend_API.h
- zend_builtin_functions.c:
- - Introduce ZEND_NUM_ARGS(), to replace ARG_COUNT(ht)
- - Rename getParameters() and friends for consistency and namespace cleanliness
-
-1999-12-17 Zeev Suraski <zeev@zend.com>
-
- * zend_constants.c: - Made PHP_VERSION and PHP_OS work again
- - More php3_ cleanup
- - Restored the PHP_VERSION and PHP_OS constants
-
-1999-12-17 sascha <sascha@pb1.pair.com>
-
- * libzend.m4: Define inline to inline explicitly
-
- * Makefile.am
- acinclude.m4
- configure.in
- libzend.m4: Move config code into separate file
-
-1999-12-17 Andi Gutmans <andi@zend.com>
-
- * zend-parser.y
- zend_compile.c
- zend_compile.h:
- - By mistake commited this to the branch. It fixes a bug we introduced with
- the return reference patch.
-
-1999-12-15 Andrei Zmievski <andrei@ispi.net>
-
- * zend_builtin_functions.c: Doh! I'm an idiot.
-
- * zend_builtin_functions.c
- zend_compile.c: - s/inheritence/inheritance/g
- - Added is_subclass_of() function
-
-1999-12-15 Zeev Suraski <zeev@zend.com>
-
- * zend-parser.y
- zend.h
- zend_compile.c
- zend_compile.h
- zend_execute.c
- zend_execute_API.c
- zend_globals.h
- zend_opcode.c: - Implement return by reference:
- - In function declaration instead of the return statement
- - In the assignment phase
- - Implement ability to turn off support for call-time pass by reference
-
-1999-12-15 Andrei Zmievski <andrei@ispi.net>
-
- * zend_builtin_functions.c: val->len
-
- * zend_builtin_functions.c: Faster, must go faster.
-
-1999-12-15 Andi Gutmans <andi@zend.com>
-
- * zend_execute.c
- zend_opcode.c
- zend-parser.y
- zend_compile.c
- zend_compile.h:
- - Preliminary return ref patch. It breaks libzend so don't use this branch
- right now.
-
-1999-12-14 Andrei Zmievski <andrei@ispi.net>
-
- * zend_builtin_functions.c: - Added class_exists()
- - Moved function_exists() here from from the basic_functions.c
- - Modified method_exists() to convert method name to lowercase
- when checking
-
-1999-12-13 Andi Gutmans <andi@zend.com>
-
- * zend_execute.c:
- - Fix problem when return_value's is_ref/refcount is overwritten by the
- internal function.
-
-1999-12-11 Andi Gutmans <andi@zend.com>
-
- * zend_execute.c: - Another small fix.
-
- * zend_execute.c: - Support returning references
-
- * zend-parser.y
- zend_compile.c
- zend_compile.h
- zend_execute.c
- zend_execute_API.c
- zend_globals.h:
- - This is supposed to be commited to the RETURN_REF_PATCH branch which is
- the beginning of work on allowing returning of references from functions.
-
-1999-12-07 Andi Gutmans <andi@zend.com>
-
- * zend-scanner.l:
- - opened_path should not be freed here as the zend_file_dtor() takes care
- of it. This doesn't fix the bug report for the crash of highlight_file()
- though.
-
-1999-12-07 Zeev Suraski <zeev@zend.com>
-
- * zend-parser.y: Support ZTS definition in zend_config.h
-
-1999-12-06 Zeev Suraski <zeev@zend.com>
-
- * zend-scanner.l
- zend_compile.c
- zend_compile.h
- zend_highlight.c
- zend_indent.c: Move the #include of zend-parser.h out of zend_compile.h
-
- * zend-parser.y
- zend_globals_macros.h: More localization
-
- * zend-parser.y
- zend_compile.h
- zend_globals_macros.h: Localize a couple of macros
-
-1999-12-05 Zeev Suraski <zeev@zend.com>
-
- * zend-scanner.l: *** empty log message ***
-
-1999-12-05 sascha <sascha@pb1.pair.com>
-
- * .cvsignore
- zend-parser.y
- zend.c
- zend_API.c
- zend_compile.c
- zend_execute_API.c: Fix some warnings
-
-1999-12-04 Andrei Zmievski <andrei@ispi.net>
-
- * zend_API.c: *** empty log message ***
-
- * zend_API.c
- zend_API.h
- zend_hash.h: Added zend_set_hash_symbol() function.
-
-1999-12-04 Thies C. Arntzen <thies@thieso.net>
-
- * zend_API.h:
- backed out last change after andi decided on a different approach.
-
-1999-12-04 Andi Gutmans <andi@zend.com>
-
- * zend_API.h:
- - Call ZEND_SET_SYMBOL_WITH_LENGTH() with refcount 1 from the standard
- ZEND_SET_SYMBOL()
-
-1999-12-04 Zeev Suraski <zeev@zend.com>
-
- * zend-scanner.l
- zend_builtin_functions.c
- zend_compile.c: - Implement get_used_files() and get_imported_files()
-
- * zend-parser.y
- zend-scanner.l
- zend.c
- zend.h
- zend_compile.c
- zend_compile.h:
- - Break the zend->PHP dependency introduced by the .php extension for use(),
- by providing an API
- - Enable Stig's patch for use() extensions (it wasn't refered to by the parser)
- - Fix a memory leak in that code
-
-1999-12-04 Thies C. Arntzen <thies@thieso.net>
-
- * zend_API.h: the new SET_VAR_* macros forgot to set the refcount!
-
-1999-12-04 Sam Ruby <rubys@us.ibm.com>
-
- * zend-scanner.l: build error - windows
-
-1999-12-04 stig <stig@pb1.pair.com>
-
- * zend-scanner.l
- zend_compile.h: Fix typo, add prototype for use_filename().
-
- * zend-scanner.l: "use" should use arg+".php" as parameter to require
-
-1999-12-04 Zeev Suraski <zeev@zend.com>
-
- * zend-scanner.l: This should fix the fd leak with include()/require()
-
-1999-12-03 Andrei Zmievski <andrei@ispi.net>
-
- * zend_API.h: *** empty log message ***
-
- * zend_API.h: Added ZEND_SET_GLOBAL_VAR_WITH_LENGTH_EX() macro.
-
-1999-12-03 Thies C. Arntzen <thies@thieso.net>
-
- * zend-scanner.l: revert my last patch - WARNING: we leak fd's again.
- add initialzation of opened_path highlight_file()
-
-1999-12-03 Andi Gutmans <andi@zend.com>
-
- * zend_API.h: - Remove _EX and make it the old _LENGTH
-
-1999-12-02 Andi Gutmans <andi@zend.com>
-
- * zend_API.h: - Add _EX macro for Andrei
-
-1999-12-02 Zeev Suraski <zeev@zend.com>
-
- * zend-scanner.h
- zend_compile.h: Solve a couple of compile issues
-
-1999-12-02 Thies C. Arntzen <thies@thieso.net>
-
- * zend-scanner.l:
- php_fopen_wrapper_for_zend() does *NOT* insert the opened files into any list - the caller needs to fclose() the file. (not sure if this is desired)
- fixed "Uninitialized memory read" when including URLs
-
-1999-12-01 stig <stig@pb1.pair.com>
-
- * zend-scanner.h
- zend.c
- zend.h
- zend_alloc.h
- zend_builtin_functions.h
- zend_compile.h
- zend_constants.h
- zend_execute.c
- zend_execute.h
- zend_extensions.h
- zend_globals_macros.h
- zend_hash.h
- zend_indent.h: Fix warnings surfacing in maintainer-mode.
-
-1999-12-01 Zeev Suraski <zeev@zend.com>
-
- * zend_API.h:
- Make it possible to explicitly set refcount in ZEND_SET_SYMBOL_WITH_LENGTH(), part 2
-
- * libzendts.dsp
- zend_API.h:
- Allow to set the reference count explicitly for ZEND_SET_SYMBOL_WITH_LENGTH()
-
-1999-12-01 Andi Gutmans <andi@zend.com>
-
- * zend_execute.c:
- - Forgot to check for BP_VAR_IS in the fix made for Thies' string offset
- problem.
-
-1999-11-30 Andi Gutmans <andi@zend.com>
-
- * zend_API.c: - Applied Thies' bug fix. Great work!
-
- * zend-parser.y
- zend-scanner.l
- zend.c
- zend.h
- zend_compile.c
- zend_compile.h
- zend_execute.c
- zend_execute_API.c
- zend_globals.h:
- - Add use support (behaves like require, but will not use the same file twice)
- - Add import support (behaves like include, but requires parentheses; will not
- use the same file twice; Currently, it is not yet properly implemented, and
- only behaves like include)
-
- * zend_execute.c:
- - Fix problem Thies reported. We by mistake separated variables which were
- being fetched for read only.
-
-1999-11-27 Zeev Suraski <zeev@zend.com>
-
- * zend_alloc.c: Add ability to disable the memory cache
-
-1999-11-26 Zeev Suraski <zeev@zend.com>
-
- * zend-scanner.l: - Fix fd leak in ZTS mode
-
- * zend-scanner.l
- zend_compile.c: UNIX/non ZTS compile fixes
-
- * zend-scanner.l
- zend_compile.c
- zend_compile.h: - Improve the file handle closing code
-
- * zend_llist.c
- zend_llist.h: - Modify zend_llist_del() to receive a comparison function
-
- * zend_API.c:
- This request_shutdown() is no longer needed (never was needed really)
-
- * zend-scanner.l: This should get the file to close properly
-
-1999-11-26 sascha <sascha@pb1.pair.com>
-
- * Makefile.am: Rebuild libzend.la, if the scanner was rebuilt
-
-1999-11-26 Zeev Suraski <zeev@zend.com>
-
- * zend_API.c
- zend_modules.h: Remove request_started, increase thread safety
-
-1999-11-25 Zeev Suraski <zeev@zend.com>
-
- * zend_execute.c: That's a more thorough fix...
-
- * zend_execute.c:
- Fix bug #2817 - assignments to string offsets could erronously modify unrelated strings
-
-1999-11-22 Zeev Suraski <zeev@zend.com>
-
- * zend_alloc.c: Fix compile problem with enable-memory-limit
-
- * zend-scanner.l: Fix inconsistencies with here-docs implementation
-
- * zend-scanner.l
- zend_globals.h: Fix #2744
-
-1999-11-21 Andi Gutmans <andi@zend.com>
-
- * zend_execute.c: That slipped away
-
-1999-11-21 Zeev Suraski <zeev@zend.com>
-
- * zend.h
- zend_API.c
- zend_compile.c
- zend_execute.h
- zend_execute_API.c: - Optimize class instanciation
- - Fix constant instanciation for array elements inside objects
-
-1999-11-19 Andi Gutmans <andi@zend.com>
-
- * zend_execute.c:
- - Moved var_uninit() for return_value to the beginning of DO_FCALL.
- We forgot to do it for overloaded methods
-
- * zend.h
- zend_execute.c:
- - Functions whose return values aren't used have them freed in DO_FCALL
- and don't need a special ZEND_FREE opcode following them anymore
-
-1999-11-17 Andi Gutmans <andi@zend.com>
-
- * zend_compile.c
- zend_execute.c:
- - If a function's return value is unused then don't create a ZEND_FREE
- opcode but free it after the function call in zend_execute.
-
- * zend_execute.c: - Forgot this
-
-1999-11-16 Andi Gutmans <andi@zend.com>
-
- * zend_execute_API.c: - Weird that this compiled for me.
-
- * zend.h: - CHange used_return_value -> return_value_used
-
- * zend_compile.c:
- - In any case create the free opcode. Need to allow the functions to
- create a hint.
-
- * zend.h
- zend_compile.c
- zend_execute.c:
- - Add support for used_return_value passed to internal functions.
-
-1999-11-14 Andi Gutmans <andi@zend.com>
-
- * zend_compile.h: - Fix comment as to Joey's findings
-
-1999-11-13 Andi Gutmans <andi@zend.com>
-
- * zend_execute.c: - Fix crash with string offset assignments.
-
-1999-11-04 Andrei Zmievski <andrei@ispi.net>
-
- * zend_hash.c
- zend_hash.h: Made zend_hash_rehash() callable from outside.
-
-1999-11-03 Andi Gutmans <andi@zend.com>
-
- * zend_API.h
- zend_compile.c
- zend_compile.h
- zend_execute.c: - Add support for BYREF_FORCE_REST
-
-1999-10-28 Andi Gutmans <andi@zend.com>
-
- * zend_compile.c
- zend_execute.c: - Fix for Thies' leak and Andrei's crash
-
-1999-10-25 Zeev Suraski <zeev@zend.com>
-
- * zend_compile.h: *** empty log message ***
-
-1999-10-23 Sam Ruby <rubys@us.ibm.com>
-
- * libzend.dsp
- libzendts.dsp:
- Allow CYGWIN directory to be specified as via environment variable
-
-1999-10-22 Andi Gutmans <andi@zend.com>
-
- * zend_execute.c: - Fix isset() with string offsets.
-
-1999-10-19 Thies C. Arntzen <thies@thieso.net>
-
- * zend_operators.c: fixed is_identicat_function()
-
-1999-10-19 Andi Gutmans <andi@zend.com>
-
- * zend_compile.h: - Move IS_IDENTICAL next to IS_EQUAL
-
- * zend_operators.c: - Fix is_identical function
-
- * zend-parser.y
- zend-scanner.l
- zend_compile.h
- zend_execute.c
- zend_opcode.c
- zend_operators.c
- zend_operators.h:
- - Preliminary submit of Thie's patch. Will fix the rest on Windows
- as this was added on UNIX with patch. Changed IS_SAME -> IS_IDENTICAL
-
-1999-10-18 Andrei Zmievski <andrei@ispi.net>
-
- * zend_API.h: Be safe, use ().
-
-1999-10-15 Andrei Zmievski <andrei@ispi.net>
-
- * zend_operators.c
- zend_operators.h: unstatic'fy is_numeric_string()
-
- * zend_hash.c
- zend_hash.h
- zend_compile.c: *** empty log message ***
-
-1999-10-15 Andi Gutmans <andi@zend.com>
-
- * zend_operators.h: - Add convert_to_number_ex()
-
-1999-10-14 sascha <sascha@pb1.pair.com>
-
- * configure.in:
- Add "--disable-inline" for low-memory machines (be it limited
- RAM or virtual memory). It's also useful for Digital C where
- the C++ compiler thinks "inline" is an invalid specifier.
-
- * Makefile.am: Use sources from $(srcdir)
-
-1999-10-13 sascha <sascha@pb1.pair.com>
-
- * Makefile.am: Do not use $< for anything but implicit rules.
-
-1999-10-13 Thies C. Arntzen <thies@thieso.net>
-
- * zend_list.c:
- (zend_fetch_resource) added warinig if resource is of wrong type
-
-1999-10-13 sascha <sascha@pb1.pair.com>
-
- * acconfig.h: Disable ZEND_EXTENSIONS_SUPPORT, if RTLD_NOW is not defined.
-
- Note that this part could be made platform independent by using
- libltdl (for Solaris, Linux, *BSD, HP-UX, Win16/32, BeOS).
-
-1999-10-12 Thies C. Arntzen <thies@thieso.net>
-
- * zend_list.c
- zend_list.h: new improved resource-API
-
-1999-10-12 sascha <sascha@pb1.pair.com>
-
- * acconfig.h:
- Use DL_LAZY for OpenBSD. This seems to be a compatibility flag which
- should be used for the 2nd parameter to dlopen.
-
- http://www.openbsd.org/cgi-bin/cvsweb/src/share/man/man3/dlfcn.3?rev=1.8
-
-1999-10-12 Andi Gutmans <andi@zend.com>
-
- * zend_execute.c:
- - object.ptr was made NULL in DO_FCALL but wasn't restored. Right now I
- push it in DO_FCALL and at the end of do_fcall_common it always gets
- popped. We might be able to optimize it out.
-
-1999-10-11 Andrei Zmievski <andrei@ispi.net>
-
- * .cvsignore: *** empty log message ***
-
- * zend_hash.c
- zend_hash.h: Modified zend_hash() to accept a pointer to sort function.
-
-1999-10-11 Andi Gutmans <andi@zend.com>
-
- * zend_execute.c:
- - No idea why this bug didn't exist before. But I'm too tired to think of it.
- During a regular do_fcall we need to set object.ptr to NULL and, thus,
- push it in the beginning and pop it in the end.
- I hope this fix more or less cuts it. I just want to sleep :)
-
-1999-10-10 Andi Gutmans <andi@zend.com>
-
- * zend_execute.c:
- - Didn't lower refcount when doing an internal function call linked to a regular object.
-
-1999-10-10 Thies C. Arntzen <thies@thieso.net>
-
- * .cvsignore: added some more autoconf/libtool stuff to be ignored
-
-1999-10-10 Andi Gutmans <andi@zend.com>
-
- * zend_execute.c:
- - Clean up a bit. Separate before the locking so that we can use SEPARATE_ZVAL
- macro.
-
-1999-10-10 sascha <sascha@pb1.pair.com>
-
- * build.mk: Add clean target which removes standard targets
-
- * build.mk: build.mk can be used to generate build tools. It is usually
- faster than buildconf, since it rebuilds only components, if
- it is necessary. To use it, run
-
- $ make -f build.mk
-
-1999-10-09 Andi Gutmans <andi@zend.com>
-
- * zend_execute.c: - Shouldn't be needed
-
- * zend_execute.c:
- - God damn this sucked. I hopefully fixed the problems with classes although
- we might need to clean stuff up a bit.
-
-1999-10-09 sascha <sascha@pb1.pair.com>
-
- * acconfig.h:
- Define RTLD_NOW to DL_NOW, if RTLD_NOW is not defined (for OpenBSD).
-
-1999-10-07 Thies C. Arntzen <thies@thieso.net>
-
- * zend_variables.c
- zend_variables.h: added zval_del_ref() function
-
-1999-10-07 Andi Gutmans <andi@zend.com>
-
- * zend_execute.c: - Reverse my patch
-
-1999-10-06 Andi Gutmans <andi@zend.com>
-
- * zend_execute.c:
- - Fixed memory leak with this pointer. It was somtimes initialized with refcount
- of 2 instead of 1.
- - Also fixed a place where object.ptr_ptr is set to pointing to a zval* instead
- of zval**. I don't think this is ever used so we might be able to remove it
- altogether.
-
-1999-10-06 Thies C. Arntzen <thies@thieso.net>
-
- * zend_execute.c: fix for using resources as array indices
-
-1999-10-05 sascha <sascha@pb1.pair.com>
-
- * configure.in
- zend.h
- zend_globals.h: More portability stuff
-
- * configure.in: OSF/1 V4.0 wants -lcxx
-
- * zend_compile.h:
- This causes link problems with anything higher than -O0.
-
-1999-10-04 sascha <sascha@pb1.pair.com>
-
- * Makefile.am: Add necessary rule.
-
- * Makefile.am
- acconfig.h
- acinclude.m4
- buildconf
- configure.in
- zend_config.in: Use libtool to build.
-
-1999-10-04 Thies C. Arntzen <thies@thieso.net>
-
- * zend_builtin_functions.c: use getParametersEx for all builtin functions
-
- * zend_API.c
- zend_API.h: added add_*_resource() and add_*_bool() functions
-
-1999-10-03 Andi Gutmans <andi@zend.com>
-
- * zend_compile.h
- zend_execute.c
- zend_execute_API.c
- zend_globals.h: - Hooray. This might actually work. (I hope)
-
-1999-10-03 sascha <sascha@pb1.pair.com>
-
- * configure.in: Make it executable.
-
-1999-10-02 Andi Gutmans <andi@zend.com>
-
- * zend_execute.c: - Another locking fix.
-
- * zend_execute.c: - Fixed locking problem when fetching string offsets
-
-1999-10-02 Zeev Suraski <zeev@zend.com>
-
- * zend_execute.c:
- Fix the leak reported on the PHP 3 list (isset() on string offsets)
-
-1999-10-01 Andi Gutmans <andi@zend.com>
-
- * zend.h
- zend_API.h
- zend_builtin_functions.c
- zend_compile.h
- zend_execute.c
- zend_execute_API.c
- zend_opcode.c
- zend_operators.h:
- - Move is_ref back to being an unsigned char and not a bit field.
-
- * zend.h
- zend_API.h
- zend_builtin_functions.c
- zend_compile.h
- zend_execute.c
- zend_execute_API.c: - Remove locking support completely
-
- * zend-parser.y
- zend_compile.c
- zend_compile.h
- zend_execute.c:
- - For Andrei. Implement references in array() initializations
-
-1999-09-29 Zeev Suraski <zeev@zend.com>
-
- * zend_config.w32.h: *** empty log message ***
-
-1999-09-29 Andi Gutmans <andi@zend.com>
-
- * zend_operators.c: Fix leak in += with arrays
-
- * zend-parser.y
- zend_compile.c
- zend_compile.h
- zend_execute.c:
- - Fix SEND_VAR problem after fetch'ing a variable and not knowing the fetch type
-
-1999-09-29 Thies C. Arntzen <thies@thieso.net>
-
- * zend_API.c
- zend_API.h: added add_property_resource
-
-1999-09-28 Andi Gutmans <andi@zend.com>
-
- * zend_compile.h
- zend_execute.c
- zend_execute_API.c:
- - Stop using the locking mechanism and start using refcount.
- Now we know when we need to free but we still need to support it
-
- * zend_execute.c
- zend_execute.h
- zend_execute_API.c:
- - First part of the patch which makes reads use ptr and not ptr_ptr.
-
-1999-09-28 sascha <sascha@pb1.pair.com>
-
- * acconfig.h
- configure.in
- zend-scanner.l: Provide alternative istdiostream.
-
- This has been tested with Sun WorkShop 4.2 C++ which does not
- contain class istdiostream.
-
-1999-09-26 sascha <sascha@pb1.pair.com>
-
- * Makefile.am
- configure.in: Actually allow to set CXXFLAGS
-
- * configure.in
- zend_config.in:
- Build communication channel and add checks for C++ library
-
-1999-09-26 Andi Gutmans <andi@zend.com>
-
- * zend_execute.c
- zend_execute.h
- zend_execute_API.c: - Changed Ts{}.var to Ts{}.var.ptr_ptr.
-
-1999-09-24 sascha <sascha@pb1.pair.com>
-
- * zend_operators.h: Add _ex API implementation for booleans.
-
-1999-09-24 Zeev Suraski <zeev@zend.com>
-
- * zend_list.c
- zend_list.h: Exify the standardized resource stuff
-
-1999-09-23 Andi Gutmans <andi@zend.com>
-
- * zend_operators.c: - Fix bug #2364.
- I haven't checked all of the conversion macros yet but there's a change
- there are more such bugs there.
-
-1999-09-23 sascha <sascha@pb1.pair.com>
-
- * configure.in: Fix vpath build w/ thread-safe enabled on Unix.
-
-1999-09-22 Thies C. Arntzen <thies@thieso.net>
-
- * zend_builtin_functions.c:
- preliminary fix for each until andi & zeev clean up!
-
- * zend_list.c:
- if you pass NULL as the resource_type_name to zend_fetch_resource*&friends the functions will not print any warnings if the resource is not found!
-
-1999-09-21 Andi Gutmans <andi@zend.com>
-
- * zend_compile.c:
- - Fix problem where function parameter fetches were created too late.
-
-1999-09-21 Zeev Suraski <zeev@zend.com>
-
- * zend_builtin_functions.c: Add get_func_args()
-
- * zend_builtin_functions.c: *** empty log message ***
-
-1999-09-20 Andi Gutmans <andi@zend.com>
-
- * zend_builtin_functions.c:
- - Move some more Zend internal functions from PHP
-
- * zend-parser.y: - Next part of locking fix.
- $var = expr; and $var += expr; first create code for expr and later on
- for the fetch_w of $var.
-
- * zend_builtin_functions.c: - Newline for Sun's compiler
-
- * zend_API.h
- zend_builtin_functions.c: - Add some internal functions to Zend
-
- * zend_compile.c
- zend_compile.h
- zend_opcode.c:
- - First step in fixing locking problem. Array fetches are now always done last.
- Later on we will want to delay the write fetches even longer until after their
- resulting expression is parsed. The way it is now, will make it very easy
- to delay as long as we need.
-
- * zend_compile.c
- zend_compile.h:
- - Indirect references had all of the fetches by mistakenly backpatched.
- Actually all of the fetches are supposed to be read, except for the last
- one.
-
-1999-09-20 Zeev Suraski <zeev@zend.com>
-
- * libzend.dsp
- libzendts.dsp
- zend_builtin_functions.c: Added zend_num_args() and zend_get_arg()
-
- * Makefile.am
- zend.c
- zend_builtin_functions.c
- zend_builtin_functions.h:
- Add a file in which we can put Zend builtin functions
-
-1999-09-18 Andi Gutmans <andi@zend.com>
-
- * zend_execute.c:
- - Try to fix the leak Rasmus reported. It's pretty sucky code so I'm really
- not sure this fix is OK.I can't remember all of what we did there.
-
-1999-09-18 Zeev Suraski <zeev@zend.com>
-
- * zend_list.c: Safer behavior
-
-1999-09-17 Thies C. Arntzen <thies@thieso.net>
-
- * zend_execute.c: make SUNs c89 happy
-
- * zend_execute_API.c: no // in the sources please
-
- * zend_globals_macros.h: added newline at end of file
-
-1999-09-17 Zeev Suraski <zeev@zend.com>
-
- * zend_execute.c: - Fix bug #2318
-
-1999-09-16 Zeev Suraski <zeev@zend.com>
-
- * zend_operators.h: Introduce convert_to_*_ex()
-
-1999-09-16 sascha <sascha@pb1.pair.com>
-
- * configure.in: this helps compiling on non-ANSI C compliant platforms
-
-1999-09-13 stig <stig@pb1.pair.com>
-
- * acconfig.h
- configure.in: Make sure HAVE_LIBDL gets defined.
- Disable more C++ tests when not configured for thread safety.
-
-1999-09-12 Zeev Suraski <zeev@zend.com>
-
- * zend.c: Make this class instanciatable
-
-1999-09-12 sascha <sascha@pb1.pair.com>
-
- * configure.in: check for c++ only, if thread safety is enabled
-
-1999-09-10 Zeev Suraski <zeev@zend.com>
-
- * zend_compile.c: Shut up a warning
-
-1999-09-09 Andi Gutmans <andi@zend.com>
-
- * zend_compile.c
- zend_globals.h
- zend_stack.c
- zend_stack.h: - Add foreach() freeing code.
- - Fix switch() freeing code to only free current function's switch expressions.
- - I have a feeling break expr; in a switch where expr > 1 leaks because it
- won't free all of the expressions. Fix is probably not trivial.
-
- * zend_operators.c:
- - Fix leak when decrementing strings which actually are longs.
-
-1999-09-08 Andi Gutmans <andi@zend.com>
-
- * zend_execute.c:
- - Fix for floating point array offsets. Same behaviour as in PHP 3.0. We
- casted to (long).
-
- * Makefile.am
- libzendts.dsp: - Add -b option to flex++
-
-1999-09-07 stig <stig@pb1.pair.com>
-
- * acconfig.h: define tests first, use after.
-
-1999-09-06 Andi Gutmans <andi@zend.com>
-
- * zend_config.w32.h: - Fix win32 compile
-
- * zend_config.w32.h: - Make zend compile again in Win32.
-
-1999-09-06 stig <stig@pb1.pair.com>
-
- * .cvsignore: ignore zend-scanner.cc
-
- * ZendCore.dep
- libzend.dsp
- libzendts.dsp: hand-patched some MSVC files
-
- * Makefile.am
- acconfig.h
- acinclude.m4
- config.unix.h
- config.w32.h
- configure.in
- zend-scanner.l
- zend.h
- zend_API.c
- zend_alloc.c
- zend_compile.h
- zend_config.w32.h
- zend_execute.c
- zend_hash.c
- zend_list.c
- zend_ptr_stack.c
- zend_sprintf.c: * header file cleanup
- * fixed --enable-thread-safety build for UNIX
-
- I don't have a Win32 environment available, could someone please try
- compiling on Win32 to see if I got all the header file stuff right there?
-
-1999-09-05 Andi Gutmans <andi@zend.com>
-
- * zend_globals_macros.h: - Oops
-
- * libzendts.dsp
- zend.c
- zend.h
- zend_alloc.c
- zend_alloc.h
- zend_globals.h: - Shift around header files.
-
-1999-09-04 Zeev Suraski <zeev@zend.com>
-
- * zend_list.c: Fix a stupid bug (from stefan@roehri.ch)
-
-1999-09-03 Zeev Suraski <zeev@zend.com>
-
- * zend_list.h: Damn, forgot to commit that
-
- * zend_list.c
- zend_list.h
- zend_modules.h: Add new API for resources
-
-1999-09-03 sascha <sascha@pb1.pair.com>
-
- * zend_modules.h: Add global startup/shutdown functions
-
-1999-09-03 Zeev Suraski <zeev@zend.com>
-
- * zend_operators.c:
- Revert the IS_RESOURCE patch. It had some unintended behavior.
-
- * zend_variables.c: Let $GLOBALS actually work...
-
- * zend_operators.c:
- Release resources when converting to other types (fix Thies's reported problem)
-
-1999-09-02 Zeev Suraski <zeev@zend.com>
-
- * zend_compile.c:
- Use \0NameFilenameLineno as key instead of numeric index for runtime defined functions
-
-1999-08-28 Zeev Suraski <zeev@zend.com>
-
- * zend_extensions.c
- zend.h
- zend_alloc.c
- zend_extensions.h
- zend_variables.c
- zend_variables.h: *** empty log message ***
-
- * zend.h
- zend_alloc.c
- zend_alloc.h
- zend_variables.c: Beef up debug macros
-
-1999-08-27 Zeev Suraski <zeev@zend.com>
-
- * zend_execute_API.c: Fix a crash bug in case of aborted execution
-
- * zend.h
- zend_alloc.c
- zend_alloc.h
- zend_execute_API.c
- zend_variables.c
- zend_variables.h: Better debug macros
-
-1999-08-26 Andi Gutmans <andi@zend.com>
-
- * zend_execute_API.c: - Damn. It wasn't a correct fix. This should do it.
- When the zval ** are equal we don't want to assign_ref, in any other case
- I can think of we do want to assign_ref.
-
- * zend_execute_API.c: - Fix leak when global is used in the global scope.
-
- * zend_compile.c: - Fix when redefining classes at run-time.
-
-1999-08-25 sascha <sascha@pb1.pair.com>
-
- * zend.h: make it compile with gcc again
-
-1999-08-25 Andi Gutmans <andi@zend.com>
-
- * zend_hash.c
- zend_hash.h: - Add hash_apply_with_arguments()
-
- * zend-scanner.l: - More elegant fix for Win32 include_path
-
- * zend-scanner.l:
- - Temporary fix to allow Win32 MT safe version to use zend_fopen().
-
-1999-08-23 Andi Gutmans <andi@zend.com>
-
- * zend_execute.c: - Fixed a specific memory leak linked to locking.
-
-1999-08-22 sascha <sascha@pb1.pair.com>
-
- * zend.h
- zend_globals.h: This changes makes it work on egcs 1.1.2/Alpha
-
- * configure.in
- zend.h: remove checks
-
-1999-08-20 Zeev Suraski <zeev@zend.com>
-
- * zend_constants.c
- zend_constants.h
- zend.c: Fix for Thies's UMR
-
-1999-08-19 Andi Gutmans <andi@zend.com>
-
- * zend-parser.y
- zend_opcode.c:
- - Make sure expr_list and echo_list are either empty or comma seperated
- expressions
-
-1999-08-18 Thies C. Arntzen <thies@thieso.net>
-
- * zend-scanner.l: on unix ZTS gets defined in zend_config.h
-
-1999-08-17 Zeev Suraski <zeev@zend.com>
-
- * zend_execute_API.c: Fix #2012
-
- * zend_execute.c: Fix #2070
-
-1999-08-17 Andi Gutmans <andi@zend.com>
-
- * zend.c
- zend.h: - Add some ZENDAPI's
-
-1999-08-15 Andi Gutmans <andi@zend.com>
-
- * zend_execute.c: - Oopsie
-
- * zend.h
- zend_compile.h
- zend_execute.c
- zend_globals.h: - Optimize the execute stack a bit.
-
-1999-08-14 Zeev Suraski <zeev@zend.com>
-
- * zend_compile.c: Fix several class issues
-
- * zend_compile.c
- zend_compile.h:
- Generate better warnings for class/function redefinitions
-
-1999-08-10 Andi Gutmans <andi@zend.com>
-
- * zend_compile.c
- zend_constants.c: - Got rid of the C++ comments.
-
-1999-08-09 Andi Gutmans <andi@zend.com>
-
- * zend_execute.c: - Thies's crash fix.
-
-1999-08-07 Zeev Suraski <zeev@zend.com>
-
- * zend_compile.h
- zend_execute.c
- zend_execute_API.c: Fix a few leaks
-
-1999-08-06 Zeev Suraski <zeev@zend.com>
-
- * zend_execute_API.c: Fix a bug in call_user_func_ex()
-
- * zend_API.h: Now that's an annoying bug.
-
- * zend_API.h
- zend_execute_API.c: Introduce call_user_func_ex()
-
- * zend_execute.c: *** empty log message ***
-
-1999-08-03 Andi Gutmans <andi@zend.com>
-
- * zend_compile.c
- zend_compile.h
- zend_execute.c
- zend_opcode.c:
- - Initialize extended value's and put the fetch_type in it's own variable
- name.
-
-1999-08-02 Andi Gutmans <andi@zend.com>
-
- * zend_compile.c
- zend_compile.h:
- Make set_compiled_filename() return a pointer to the allocated file name
-
-1999-07-31 Zeev Suraski <zeev@zend.com>
-
- * zend_API.h: These aren't necessary
-
-1999-07-30 Zeev Suraski <zeev@zend.com>
-
- * zend_API.h: Support symbols in any symbol table, not just the active one
-
-1999-07-30 Andi Gutmans <andi@zend.com>
-
- * zend_ptr_stack.c: - Damn that's more like it.
-
- * zend_ptr_stack.c: - Cut&paste crap
-
- * zend_execute.c
- zend_ptr_stack.c
- zend_ptr_stack.h:
- - Add ptr_stack_n_{push,pop} in order to speed up function calls a bit.
- There seems to be no reason for stack->top in the ptr_stack except for
- when realloc()'in the stack. I think I'll remove it.
-
-1999-07-30 Zeev Suraski <zeev@zend.com>
-
- * zend_API.h:
- * Setting variables in the global scope wasn't handling is_ref's properly
-
-1999-07-29 Andi Gutmans <andi@zend.com>
-
- * zend-parser.y
- zend_compile.c
- zend_compile.h:
- - Fixed a leak when doing inheritance. The parent class name wasn't being freed.
- - Fixed a stack leak. Functions that had late argument binding were set up as
- INIT_FCALL_BY_NAME but were using DO_FCALL and not the corresponding
- DO_FCALL_BY_NAME.
-
-1999-07-28 Andi Gutmans <andi@zend.com>
-
- * zend_compile.c
- zend_execute.c
- zend_execute_API.c
- zend_globals.h
- zend_hash.c: - Fixed various inheritance problems & Andrey's leak
-
-1999-07-27 Zeev Suraski <zeev@zend.com>
-
- * zend_compile.c: Inherit parent's constructor
-
- * zend_compile.c:
- Fix runtime inheritence (child functions/members should have higher precedence)
-
-1999-07-27 Andi Gutmans <andi@zend.com>
-
- * zend_execute.c: - Add missing lock
-
- * zend_execute.c: - Fix up the new operator a bit more.
-
-1999-07-27 Zeev Suraski <zeev@zend.com>
-
- * zend_execute.c: Set reference count and is_ref values for new objects
-
-1999-07-26 Zeev Suraski <zeev@zend.com>
-
- * zend_operators.c:
- - Fixed a memory leak when using assignment-op operators with lvalue of type
- string (or array/object)
-
- * zend_compile.c: *** empty log message ***
-
- * zend_compile.c
- zend_compile.h
- zend_execute.c:
- Fix a bug in inheritence from classes defined in include files, that are
- inherited from require()'d files
-
-1999-07-26 Andi Gutmans <andi@zend.com>
-
- * zend_execute.c: - Oops I erased this by mistake
-
- * zend_execute.c:
- - Should be a complete fix now. This break away code should maybe be made
- somewhat generic
-
- * zend_execute.c: - Temporary fix for "this". Have to fix it tomorrow.
-
- * zend_execute.c:
- - Fix compile error. Weird that Visual didn't catch this one.
-
- * zend-parser.y
- zend.h
- zend_compile.c
- zend_compile.h
- zend_execute.c: - Fix the new operator incompatibility.
- - I commented PHP_FUNCTION(strtotime) in datetime.c because it stopped
- win32 from compiling. This needs to be fixed!!!
- - Check out libzend to compile the tree now.
-
- * zend.h
- zend_execute.c: - new operator fixes
-
-1999-07-25 Andi Gutmans <andi@zend.com>
-
- * zend-parser.y
- zend_compile.c
- zend_compile.h
- zend_execute.c: - Commiting to branch newoperator.
- - To check it out do cvs checkout -rnewoperator libzend
-
-1999-07-24 Zeev Suraski <zeev@zend.com>
-
- * zend_compile.c: Fix that memory leak... nested function issue remains
-
- * zend_compile.c
- zend_stack.c
- zend_stack.h: Fix RETURN & SWITCH memory leak issue
-
- * zend-parser.y
- zend_compile.c
- zend_compile.h
- zend_execute.c:
- Thoroughly fix the SWITCH problem. No RETURN handling yet.
-
-1999-07-23 Zeev Suraski <zeev@zend.com>
-
- * zend-parser.y
- zend_compile.c
- zend_compile.h
- zend_execute.c
- zend_execute.h: Fix bug #1812
-
- * zend.h
- zend_operators.c:
- * Add an API macro users can use to ensure an array member can be modifed
- before they modify it.
- * Fix a bug and remove redundant code in convert_to_long() (booleans and
- resources weren't changing their types
-
-1999-07-22 Zeev Suraski <zeev@zend.com>
-
- * zend_constants.c: New constants
-
-1999-07-22 stig <stig@pb1.pair.com>
-
- * buildconf: identify ourselves
-
-1999-07-20 Andi Gutmans <andi@zend.com>
-
- * zend_execute.c: - Include alloca.h when need and available.
-
- * zend_compile.c
- zend_execute_API.c
- zend_list.c
- zend_operators.c: - Get rid of C++ comments
-
-1999-07-19 Zeev Suraski <zeev@zend.com>
-
- * config.unix.h
- config.w32.h
- zend-parser.y
- zend-scanner.h
- zend-scanner.l
- zend.c
- zend.h
- zend_API.c
- zend_API.h
- zend_alloc.c
- zend_alloc.h
- zend_compile.c
- zend_compile.h
- zend_constants.c
- zend_constants.h
- zend_errors.h
- zend_execute.c
- zend_execute.h
- zend_execute_API.c
- zend_extensions.c
- zend_extensions.h
- zend_globals.h
- zend_hash.c
- zend_hash.h
- zend_highlight.c
- zend_highlight.h
- zend_indent.c
- zend_indent.h
- zend_list.c
- zend_list.h
- zend_llist.c
- zend_llist.h
- zend_modules.h
- zend_opcode.c
- zend_operators.c
- zend_operators.h
- zend_ptr_stack.c
- zend_ptr_stack.h
- zend_sprintf.c
- zend_stack.c
- zend_stack.h
- zend_variables.c
- zend_variables.h: 0.91 update
-
-1999-07-19 Andi Gutmans <andi@zend.com>
-
- * zend.h
- zend_execute.c
- zend_extensions.h: * Fix Zend version
- * Fix a method call bug
-
- * LICENSE
- libzendts.dsp: License update
-
- * zend_errors.h: Make error codes PHP 3.0 compatible
-
-1999-07-18 Andi Gutmans <andi@zend.com>
-
- * zend_execute_API.c:
- - Should fix the memory leak when returning from the main scope.
-
-1999-07-17 Zeev Suraski <zeev@zend.com>
-
- * configure.in: Debug on by default
-
-1999-07-16 Zeev Suraski <zeev@zend.com>
-
- * zend_compile.c:
- Ignore T_PHP_TRACK_VARS in the parser (handled in the scanner)
-
- * config.unix.h
- config.w32.h
- zend-parser.y
- zend-scanner.h
- zend-scanner.l
- zend.c
- zend.h
- zend_API.c
- zend_API.h
- zend_alloc.c
- zend_alloc.h
- zend_compile.c
- zend_compile.h
- zend_constants.c
- zend_constants.h
- zend_errors.h
- zend_execute.c
- zend_execute.h
- zend_execute_API.c
- zend_extensions.c
- zend_extensions.h
- zend_globals.h
- zend_hash.c
- zend_hash.h
- zend_highlight.c
- zend_highlight.h
- zend_indent.c
- zend_indent.h
- zend_list.c
- zend_list.h
- zend_llist.c
- zend_llist.h
- zend_modules.h
- zend_opcode.c
- zend_operators.c
- zend_operators.h
- zend_ptr_stack.c
- zend_ptr_stack.h
- zend_sprintf.c
- zend_stack.c
- zend_stack.h
- zend_variables.c
- zend_variables.h: License update
-
-1999-07-15 Andi Gutmans <andi@zend.com>
-
- * zend.c: Change true/false back to 1/""
-
- * zend_execute.c: Fix a lock issue
-
-1999-07-15 sascha <sascha@pb1.pair.com>
-
- * zend_execute_API.c: disable zend_handle_sigsegv
-
-1999-07-14 Andi Gutmans <andi@zend.com>
-
- * libzendts.dsp
- zend.c: Fix thread unsafe constants startup
-
- * LICENSE
- zend.c
- zend_constants.c
- zend_constants.h: - License update
- - Fix multithreaded constants startup
-
- * zend_operators.c: - Fix for boolean convert to number
-
-1999-07-12 Andi Gutmans <andi@zend.com>
-
- * zend_execute.c: - Fixed a purify warning
-
-1999-07-10 Zeev Suraski <zeev@zend.com>
-
- * zend_alloc.c: Oh, that dumb bug.
-
-1999-07-10 Andi Gutmans <andi@zend.com>
-
- * zend_execute.c
- zend_hash.c: Ok, so we do have to lock in there
-
- * zend.c
- zend_execute.c: Fix assignments of reference variables
-
-1999-07-10 Zeev Suraski <zeev@zend.com>
-
- * zend_execute_API.c: Woops, fix.
-
- * zend_execute.c
- zend_execute_API.c
- zend_globals.h: Put the garbage in the garbage bin
-
- * zend_alloc.c
- zend_compile.c
- zend_compile.h
- zend_execute.c
- zend_execute_API.c
- zend_globals.h
- zend_variables.c: Get rid of AiCount completely
-
- * zend_execute.c: Final tweaks
-
- * zend_execute.c
- zend_hash.c: More locking work
-
-1999-07-09 Zeev Suraski <zeev@zend.com>
-
- * zend_execute.c: *** empty log message ***
-
- * zend_execute.c: More stuff
-
- * zend-parser.y
- zend.h
- zend_API.c
- zend_API.h
- zend_compile.c
- zend_compile.h
- zend_execute.c
- zend_execute_API.c
- zend_opcode.c
- zend_operators.c
- zend_variables.c: Step 4:
- Move to a 7-bit counter (not fully implemented yet)
-
- * zend_API.c
- zend_compile.h
- zend_execute.c
- zend_execute_API.c
- zend_opcode.c
- zend_variables.c: Phase 3:
- Use a single bit to mark IS_REF variables
-
- * zend-parser.y
- zend.h
- zend_API.c
- zend_API.h
- zend_compile.c
- zend_execute.c
- zend_execute_API.c
- zend_opcode.c
- zend_operators.c: Step 2:
- Rename is_ref to EA
-
- * zend.c
- zend_API.c
- zend_compile.c
- zend_compile.h
- zend_constants.c
- zend_constants.h
- zend_execute_API.c
- zend_hash.c
- zend_hash.h
- zend_list.c
- zend_list.h
- zend_modules.h
- zend_opcode.c
- zend_variables.c
- zend_variables.h: Step 1 in nuking the garbage collector:
- - Change the hash destructor to return int
- - Don't kill the bucket on hash_destroy if the destructor returns 0
-
- * config.w32.h
- configure.in
- zend_alloc.c: *** empty log message ***
-
- * zend_alloc.c: Send a SIGSEGV instead of exiting, to trigger a core dump
-
- * zend_alloc.c
- zend_alloc.h
- zend_hash.c: * Support recoverable failure from erealloc()
- * Fix the shutdown code on an unrecoverable erealloc() failure
-
- * zend_execute_API.c: Fix the mess in SIGSEGV handling, hopefully
-
-1999-07-08 Zeev Suraski <zeev@zend.com>
-
- * zend_compile.h
- zend_compile.c:
- Support definition of classes that are derived from classes that are defined in runtime
-
-1999-07-06 sascha <sascha@pb1.pair.com>
-
- * zend.h: enable it, until we find a better way
-
-1999-07-05 sascha <sascha@pb1.pair.com>
-
- * zend.h: make Solaris gcc happy
-
- * configure.in
- zend.h: use void * instead of long for 64-bit test
-
-1999-07-05 Thies C. Arntzen <thies@thieso.net>
-
- * zend_API.h: added RETVAL_RESOURCE and RETURN_RESOURCE
-
-1999-07-04 Zeev Suraski <zeev@zend.com>
-
- * zend_operators.c:
- Make convert_to_string() regard false as "" instead of "0"
-
-1999-07-03 sascha <sascha@pb1.pair.com>
-
- * Makefile.am: don't wipe files for distributions
-
- * configure.in
- zend.h:
- checking for ints won't work, since they are 32 bit on both platforms
-
-1999-07-03 Zeev Suraski <zeev@zend.com>
-
- * zend_execute.c: Support isset()/empty() for string offsets
-
- * zend-scanner.l: Fix a crash
-
-1999-07-03 sascha <sascha@pb1.pair.com>
-
- * configure.in: add usual rhapsody hack
-
- * config.unix.h: missing DL_HANDLE broke build
-
- * zend_extensions.c: typo
-
-1999-07-02 sascha <sascha@pb1.pair.com>
-
- * acconfig.h
- configure.in
- zend.h: workaround for 64-bit platforms
-
-1999-07-02 Zeev Suraski <zeev@zend.com>
-
- * acconfig.h
- configure.in
- zend_globals.h: define zend_bool
-
-1999-06-30 Zeev Suraski <zeev@zend.com>
-
- * zend-parser.y: Make require accept any parameter
-
-1999-06-26 Zeev Suraski <zeev@zend.com>
-
- * zend_alloc.h
- zend_operators.c
- zend_alloc.c:
- * Make the memory leak reporting code much better with repeats
- * Remove useless variables
-
-1999-06-22 Zeev Suraski <zeev@zend.com>
-
- * zend_compile.c: Fix Thies's bug report
-
- * zend_alloc.c
- zend_compile.c
- zend_operators.c:
- * Fix concatenation of arrays (it was PHP 3.0 style, copying zval's instead
- of zval *, and it wasn't using reference counting)
- * Fix a memory leak in static array()'s with textual indices
-
-1999-06-19 Zeev Suraski <zeev@zend.com>
-
- * zend.c: *** empty log message ***
-
- * zend.h
- zend_extensions.h:
- Add a standard get_ini_entry() to interface between Zend and the outside world
-
- * configure.in: *** empty log message ***
-
-1999-06-16 stig <stig@pb1.pair.com>
-
- * zend_modules.h:
- added INIT_FUNC_ARGS_PASSTHRU and SHUTDOWN_FUNC_ARGS_PASSTHRU
-
-1999-06-15 stig <stig@pb1.pair.com>
-
- * zend_operators.c
- zend_operators.h: * added zend_binary_strcasecmp()
-
-1999-06-12 Zeev Suraski <zeev@zend.com>
-
- * zend-parser.y:
- We can't quite go with expr there (shift/reduce conflict), go with scalar.
-
- * zend-parser.y: require() improvement as per Andi's suggestion
-
-1999-06-11 Zeev Suraski <zeev@zend.com>
-
- * zend_operators.c:
- Make the concatenation operator use make_printable as well
-
- * zend-scanner.l: Don't take failing on an include file so badly
-
- * zend-scanner.l: Support <?=
-
- * zend_compile.c: E_ERROR -> E_COMPILE_ERROR in the compiler
-
- * zend_compile.c: Two fixes:
- * The error generated by a failed class inheritence wasn't properly
- displaying the file in which he error occured.
- * Inheritence didn't work if the parent class had uppercase letters in it.
-
- * zend-parser.y
- zend-scanner.l
- zend_execute.c: * Use to_string() instead of __print()
- * Support boolean casts ((bool) and (boolean))
-
- * zend.c: Change __print into to_string()
-
- * zend.c
- zend.h
- zend_execute.c
- zend_execute_API.c:
- * Make the output handling of variables much, much cooler.
- Uses zend_make_printable_zval() instead of convert_to_string() now:
-
- $foo = true;
- print "\$foo is $foo";
- will now print
- $foo is true
- (instead of "$foo is 1", earlier).
-
- Also, with objects, it automatically tries to call __print() and use it as a printing
- function.
-
- For example:
-
- class foo {
- function __print() { return "Foo Object"; }
- };
-
- $foo = new foo;
- print $foo;
-
- will print "Foo Object".
-
-1999-06-10 Zeev Suraski <zeev@zend.com>
-
- * zend_operators.c: Now THAT's an annoying bug.
-
-1999-06-09 Zeev Suraski <zeev@zend.com>
-
- * zend_extensions.c: Fix
-
- * zend_API.c
- zend_execute.c:
- * Fix cases where you assign an array element to the parent array (the array was
- being erased before the assignment, so the element was being smashed).
-
- * zend_execute.c
- zend_execute_API.c: * Fix foreach() that receives a non array argument
- * Clean up some C++ comments
-
-1999-06-09 Andi Gutmans <andi@zend.com>
-
- * zend-parser.y
- zend_compile.c
- zend_compile.h
- zend_operators.c: - Fix the static array() initializing
-
-1999-06-08 Zeev Suraski <zeev@zend.com>
-
- * zend_extensions.c: Replace error messages
-
-1999-06-08 Andi Gutmans <andi@zend.com>
-
- * zend_compile.c
- zend_compile.h
- zend_execute.c: * Fix a by-name call/method call bug
- * Clean and optimize the whole function call process
-
-1999-06-07 Zeev Suraski <zeev@zend.com>
-
- * zend_hash.c
- zend_hash.h: Add zend_hash_get_current_key_type()
-
-1999-06-06 Andi Gutmans <andi@zend.com>
-
- * zend_compile.c:
- Work around a compiler bug - mark variables that are sent to functions that aren't yet
- defined as FETCH_W (because they might end up being sent by reference)
-
-1999-06-05 Zeev Suraski <zeev@zend.com>
-
- * zend.c
- zend.h
- zend_compile.c
- zend_compile.h: * Centralized shutdown
- * Change shutdown order again
-
- * zend_compile.c:
- Call the request_shutdown on modules before destroying symbol tables, so that
- the session module can be implemented
-
- * zend-scanner.l
- zend_compile.c
- zend_execute.c:
- - Fixed Karl's bug report. It's not really a thorough fix, we really need to rethink the INIT_FCALL/DO_FCALL issue.
- - Fixed numerous AiCount problems
-
-1999-06-04 Zeev Suraski <zeev@zend.com>
-
- * zend_compile.c
- zend_compile.h
- zend_execute.c
- zend_opcode.c: New $GLOBALS init
-
- * zend_execute_API.c:
- Fix that GLOBALS leak. We were explicitly adding GLOBALS to the main symbol table,
- but there's no reason to do it (INIT_GLOBALS takes care of it if necessary.)
-
- * zend.c
- zend.h
- zend_API.c
- zend_API.h
- zend_list.c
- zend_list.h
- zend_opcode.c
- zend_operators.c: Minor updates (mostly __declspec() stuff)
-
-1999-06-04 Thies C. Arntzen <thies@thieso.net>
-
- * zend_API.h: added is_ref=0 and refcount=1 to SET_VAR_* macros
-
-1999-06-03 Zeev Suraski <zeev@zend.com>
-
- * zend-parser.y: T_BAD_CHARACTER is actually a string.
-
-1999-06-03 Andi Gutmans <andi@zend.com>
-
- * zend-scanner.l
- zend_execute.c:
- - We weren't counting newlines in heredocs. The only place which is still questionable
- is when there's a \ followed by a newline but it seems we have a parse error in this
- case anyways.
- - Fixed the alloca() macros so that the alloca() #define in win32 mode won't clash
- with the real win32 alloca().
-
-1999-06-01 Andi Gutmans <andi@zend.com>
-
- * zend_execute.c:
- - Make execute() use less stack in thread-safe win32 due to Microsoft's shitty 256kb stack.
-
-1999-05-31 Zeev Suraski <zeev@zend.com>
-
- * zend.h
- zend_alloc.c: *** empty log message ***
-
-1999-05-31 Andi Gutmans <andi@zend.com>
-
- * zend-scanner.l
- zend_compile.c
- zend_execute.c
- zend_execute_API.c: Fixes
-
-1999-05-30 sascha <sascha@pb1.pair.com>
-
- * zend_alloc.c
- zend_compile.h
- zend_execute_API.c
- zend_indent.c
- zend_opcode.c: * fix some casts
- * introduce unary_op_type - cleaner than casting data voids to function ptrs
-
-1999-05-29 Zeev Suraski <zeev@zend.com>
-
- * zend_execute_API.c:
- That got fucked up when we went back to using uninitialized_zval
-
-1999-05-29 sascha <sascha@pb1.pair.com>
-
- * Makefile.am: another VPATH related change
-
-1999-05-29 Zeev Suraski <zeev@zend.com>
-
- * zend-parser.y: Fix a bug
-
- * zend_hash.c
- zend_hash.h
- zend_operators.c: Support overwrite mode in zend_hash_merge()
-
-1999-05-29 sascha <sascha@pb1.pair.com>
-
- * Makefile.am: - clean is not called from automake. use CLEANFILES instead
- - allow VPATH compilation
-
-1999-05-29 Zeev Suraski <zeev@zend.com>
-
- * zend_execute.c: Correct fix
-
- * zend_execute_API.c: *** empty log message ***
-
- * zend_execute.c: Fix a leak
-
-1999-05-28 Zeev Suraski <zeev@zend.com>
-
- * zend.h
- zend_API.c
- zend_API.h
- zend_alloc.c
- zend_compile.c
- zend_compile.h
- zend_execute.c
- zend_execute_API.c: * Support getThis() for internal functions.
- * Fix 'new object or die' and AiCount issue thoroughly (earlier fix didn't
- work with the optimizer).
- * Add new macros for standardized definition of classes.
- * Only report AiCount problems if shutdown was not silent.
-
-1999-05-27 Zeev Suraski <zeev@zend.com>
-
- * zend_execute.c: Fix the AiCount issue with objects
-
- * zend_API.h: Moved all #define's for SET_ and RETURN_ to zend_API.h
-
-1999-05-25 Zeev Suraski <zeev@zend.com>
-
- * zend_execute_API.c:
- Avoid crashing if an error occurs before we open the first file.
-
-1999-05-24 Zeev Suraski <zeev@zend.com>
-
- * zend_operators.c: The last fix was wrong
-
- * zend_operators.c: Another operators fix
-
-1999-05-23 Zeev Suraski <zeev@zend.com>
-
- * zend_operators.c:
- boolean comparison didn't work with smaller-than and greater-than, something that
- fucked up berber's site a bit. fixed.
-
-1999-05-22 Zeev Suraski <zeev@zend.com>
-
- * zend_execute.c:
- Sigh, another leak bites the dust. FREE_OP missing in case of a SEND_VAR.
-
- * zend-parser.y: I'm on a roll. Fix a nasty yet stupid AiCount bug
-
- * zend_alloc.c: Warn about AiCount not zeroing out
-
- * zend-parser.y
- zend-scanner.h
- zend.h
- zend_alloc.c
- zend_alloc.h
- zend_compile.c
- zend_compile.h
- zend_constants.h
- zend_execute.c
- zend_execute.h
- zend_execute_API.c
- zend_extensions.h
- zend_highlight.h
- zend_list.h
- zend_llist.h
- zend_ptr_stack.h
- zend_stack.h:
- * Add struct name to all typedef's so that they can be debugged with MSVC
- * Fix an AiCount bug - list(...) = $var was using $var multiple times, and thus
- causing AiCount to be decreased multiple times even though it was increased only
- once for $var. Mark all FETCH_DIM's so that they won't decrease AiCount, and only
- decrease AiCount on the last FETCH_DIM.
- * Fix a stupid bug - forgot to pass CLS_C to some compiler function. For some reason
- MSVC doesn't report these :I
-
- * zend.h
- zend_alloc.c
- zend_execute_API.c:
- Give more information and save log lines in memory leak reports
-
- * zend-scanner.l
- zend_compile.c
- zend_compile.h
- zend_globals.h
- zend_llist.c
- zend_llist.h: Avoid leaking fd's in case of failures
-
- * zend-scanner.l: more fixes
-
-1999-05-21 Zeev Suraski <zeev@zend.com>
-
- * zend-scanner.l: That wasn't supposed to slip in
-
- * zend-scanner.l: * Properly handle failed file opens in C++
- * Properly handle failed require()'s within libzend
-
- * zend-scanner.l: * Fix the comments issue. yymore() worked like a charm.
- * Change all flex states to be prefixed with ST_
-
-1999-05-20 Zeev Suraski <zeev@zend.com>
-
- * zend_compile.h
- zend_execute.c: Optimize allocations into uninitialized_zval assignments
-
-1999-05-20 Andi Gutmans <andi@zend.com>
-
- * config.w32.h
- libzend.dsp
- libzendts.dsp
- zend_compile.c
- zend_compile.h: - Updates we did today
-
- * zend_compile.c: - Fix a small problem with class decelerations.
-
- * zend-scanner.l: -Open curly braces fix?
-
-1999-05-15 Zeev Suraski <zeev@zend.com>
-
- * zend.c
- zend.h
- zend_compile.c
- zend_compile.h
- zend_execute.c
- zend_hash.c
- zend-parser.y:
- * Fix all hash checks that checked Bucket.arKey for NULL, when it was changed
- to char[1], these checks should have been changed to Bucket.nKeyLength==0
- * Support runtime declaration of functions. I ended up changing the grammar
- to catch top level functions vs. nested functions. The reason is simple -
- if we don't have functions properly declared at compile-time, function calls
- cannot be resolved at compile time, and have to be resolved at runtime, which
- ends up being much much slower (without the optimizer, that is).
- It's no biggy though, the grammar change isn't that bad.
-
-1999-05-14 Zeev Suraski <zeev@zend.com>
-
- * configure.in
- zend-scanner.l:
- If a require() dies, we must bail out (since it corrupts an existing op_array
-
- * zend-scanner.l: Fix a bug
-
-1999-05-14 stig <stig@pb1.pair.com>
-
- * Makefile.am: don't install Zend on the system
-
-1999-05-14 Zeev Suraski <zeev@zend.com>
-
- * zend-scanner.l:
- Add \012 and \xff missing support to constant quoted string
-
-1999-05-12 Zeev Suraski <zeev@zend.com>
-
- * zend.h: *** empty log message ***
-
-1999-05-12 stig <stig@pb1.pair.com>
-
- * Makefile.am: install libzend.a and header files on "make install"
-
- * acconfig.h
- configure.in: add --enable-thread-safety option
-
-1999-05-12 Zeev Suraski <zeev@zend.com>
-
- * zend_llist.c
- zend_llist.h: Added prepend to llist
-
-1999-05-11 Zeev Suraski <zeev@zend.com>
-
- * zend-scanner.l
- zend.c: Fixes:
- * Avoid closing stdin (I could have sworn I've committed that already)
- * unclean_shutdown patches
-
- * zend_alloc.c: Easier Win32 debug code
-
- * zend-scanner.l
- zend_compile.c
- zend_globals.h
- zend_highlight.c:
- * Fix a bug that occured in case of parse errors. We need to restore the lexical state
- even if the compilation failed.
-
-1999-05-10 Zeev Suraski <zeev@zend.com>
-
- * zend-scanner.h
- zend-scanner.l
- zend.c
- zend_alloc.c
- zend_compile.h:
- Weed out all BoundsChecker-found bugs (including a serious file descriptor leak
- in the C++ scanner)
-
-1999-05-09 Zeev Suraski <zeev@zend.com>
-
- * zend_modules.h: Change argument name
-
- * zend.c
- zend_API.c
- zend_API.h
- zend_modules.h: Almost forgot to commit those
-
-1999-05-06 Zeev Suraski <zeev@zend.com>
-
- * zend-scanner.l: Ok, I tested it now. It works very nicely!
-
-1999-05-05 Andi Gutmans <andi@zend.com>
-
- * zend_llist.c
- zend_llist.h: llist improvements
-
-1999-05-02 Andi Gutmans <andi@zend.com>
-
- * zend.c
- zend_compile.h: - Don't support interactive mode when thread safe.
-
-1999-05-01 Zeev Suraski <zeev@zend.com>
-
- * zend_operators.c: Several operator fixes. Should fix the MySQL problem.
-
-1999-04-30 Andi Gutmans <andi@zend.com>
-
- * zend_opcode.c: - Free refcount when destroying the last class reference.
-
- * zend-parser.y: - Missed one place
-
- * zend-parser.y: - First try at fixing $a->foo[] syntax.
-
- * zend-scanner.l:
- - Move back to yyless(). I haven't tested it yet because it's taking too long
- to compile and I have to disconnect
-
-1999-04-30 Zeev Suraski <zeev@zend.com>
-
- * zend-parser.y
- zend-scanner.l:
- Fix Boris's problem (in my never ending struggle to show I never mean what I say
- when I say something's not gonna happen :)
-
- * zend-scanner.l
- zend_compile.c:
- * Fix a problem with constant quoted strings, that was causing Thies's problem
- * Remove a development-time printf
-
-1999-04-29 Andi Gutmans <andi@zend.com>
-
- * zend-scanner.l: - No reason to handle newlines here.
-
-1999-04-28 Zeev Suraski <zeev@zend.com>
-
- * zend-scanner.l: Make the C++ scanner support interactive input
-
-1999-04-27 Zeev Suraski <zeev@zend.com>
-
- * zend-scanner.l
- zend_compile.h
- zend_execute_API.c
- zend_extensions.c
- zend_extensions.h
- zend_opcode.c: * Fix debugger+interactive mode bug
- * Recognize whether an extension is with debug information or not
-
-1999-04-26 Zeev Suraski <zeev@zend.com>
-
- * libzendts.dsp: fix
-
- * config.w32.h
- libzend.dsp
- libzendts.dsp
- zend-scanner.l
- zend.c
- zend_alloc.c
- zend_compile.h
- zend_globals.h
- zend_highlight.c
- zend_highlight.h
- zend_indent.c
- zend_indent.h
- zend_opcode.c
- zend_sprintf.c: Various thread safety fixes and DLL updates
-
-1999-04-26 Andi Gutmans <andi@zend.com>
-
- * zend-scanner.l
- zend.c
- zend_alloc.c
- zend_globals.h: -More commits
-
-1999-04-24 Zeev Suraski <zeev@zend.com>
-
- * zend_compile.c: Another small fix
-
- * libzendts.dsp: dsp update
-
- * zend.c
- zend_globals.h: Thread safety fixes
-
- * zend_list.c: Remove redundant includes
-
-1999-04-24 zeevread <zeevread@pb1.pair.com>
-
- * zend-scanner.l: g++ compile fix
-
-1999-04-24 Zeev Suraski <zeev@zend.com>
-
- * Makefile.am
- zend-scanner.l: *** empty log message ***
-
- * zend_API.c
- zend_compile.c
- zend_compile.h
- zend_execute.c
- zend_opcode.c
- zend-parser.y
- zend-scanner.l: Cleanups, remove old ts code
-
-1999-04-23 Zeev Suraski <zeev@zend.com>
-
- * zend_operators.c: Arithmetics bug fix
-
- * zend-scanner.h
- zend-scanner.l: Support eval() and highlight_string() in the C++ scanner
-
-1999-04-23 Andi Gutmans <andi@zend.com>
-
- * zend-scanner.l:
- - Use yyless() instead of unput() where possible. I'll erase the commented
- out code in a day or so.
-
-1999-04-23 Zeev Suraski <zeev@zend.com>
-
- * FlexLexer.h
- flex.skl
- zend-scanner.h
- zend-scanner.l
- zend.h
- zend_alloc.c
- zend_alloc.h
- zend_compile.h
- zend_globals.h
- zend_highlight.c
- zend_highlight.h
- zend_indent.c
- zend_operators.h
- zend_variables.h: Ok, call me crazy, because I probably am.
- Thread safe version now uses a C++ scanner object. Works fully.
-
-1999-04-22 Zeev Suraski <zeev@zend.com>
-
- * acconfig.h
- zend-parser.y
- zend-scanner.l
- zend_compile.c
- zend_compile.h
- zend_execute.c
- zend_globals.h
- zend_highlight.c
- zend_indent.c
- zend_opcode.c: Make token names uniform, they all begin with T_ now.
-
-1999-04-21 stig <stig@pb1.pair.com>
-
- * buildconf: state which aclocal.m4 and configure files are created
-
- * Makefile.am:
- zend-parser.o and zend-scanner.o were included twice in libzend.a
-
-1999-04-21 Zeev Suraski <zeev@zend.com>
-
- * FlexLexer.h
- flex.skl
- libzendts.dsp
- zend_API.c
- zend_API.h
- zend_globals.h:
- * Change the thread safe project to create a C++ scanner.
- * Add in a slightly modified skeleton file (only a couple of #if's for #include's
- that we dont have in Windows)
-
- It does NOT compile or work yet :)
-
- * zend_list.h: Fix
-
- * zend.c
- zend_compile.c
- zend_constants.c
- zend_constants.h
- zend_list.c
- zend_list.h:
- Thread safety patch. It works now with 'just in time' resource initialization!
-
- * libzend.dsp
- libzendts.dsp
- zend_globals.h: Thread-safe project
-
-1999-04-21 stig <stig@pb1.pair.com>
-
- * buildconf: move automake back to before autoconf
-
- * buildconf:
- autoheader must be called after autoconf, automake after autoheader
-
- * zend_config.h.in: think before one commits
-
- * zend_config.h.in: doh. cvs appears to ignore .in files by default
-
-1999-04-21 Zeev Suraski <zeev@zend.com>
-
- * zend-parser.y
- zend-scanner.l
- zend.c
- zend_API.c
- zend_API.h
- zend_alloc.c
- zend_compile.c
- zend_compile.h
- zend_constants.c
- zend_execute.c
- zend_execute.h
- zend_execute_API.c
- zend_globals.h
- zend_opcode.c:
- Thread safety patch. We're still not quite there but it compiles again, and
- more logic has been implemented.
-
-1999-04-20 stig <stig@pb1.pair.com>
-
- * .cvsignore
- Makefile.am
- Makefile.in
- aclocal.m4
- buildconf: Makefile.in and aclocal.m4 are generated
- added buildconf script
-
-1999-04-19 Zeev Suraski <zeev@zend.com>
-
- * zend_extensions.c
- zend_extensions.h:
- Return a success value from the startup function, so we can unload immediately
- if it fails.
-
-1999-04-19 stig <stig@pb1.pair.com>
-
- * .cvsignore
- Makefile.am
- Makefile.in
- acconfig.h
- acinclude.m4
- aclocal.m4
- config.h.in
- configure.in
- zend.h: convert to automake
-
-1999-04-19 Andi Gutmans <andi@zend.com>
-
- * zend_API.c
- zend_API.h: Add a couple of ZEND_API's
-
- * config.w32.h
- zend-parser.y
- zend_compile.c
- zend_execute.c: Support =unset as arguments
-
-1999-04-19 stig <stig@pb1.pair.com>
-
- * acconfig.h
- config.h.in
- configure.in: removed -lnsl and -lsocket checks from zend
-
-1999-04-18 Zeev Suraski <zeev@zend.com>
-
- * zend_execute.c: AiCount needs to be decreased here
-
- * configure.in
- zend-scanner.l
- zend.c
- zend.h
- zend_API.c
- zend_API.h
- zend_alloc.c
- zend_compile.c
- zend_extensions.c
- zend_extensions.h
- zend_globals.h
- zend_llist.c
- zend_modules.h
- zend_opcode.c: Whatnot:
- * updated alloc_persist to use critical sections
- * changed extension shutdown to two-phase
- * updated dependencies
- * PR support (don't remember if there was any really)
-
-1999-04-15 Andi Gutmans <andi@zend.com>
-
- * zend_execute.c:
- - one more place which seems to have needed fixing. I don't have time to look
- more into it. I hope we don't have anymore places which need fixing.
-
- * zend_compile.c:
- - Should fix the pass by reference problem. This happened because we moved
- start from arg 1 now and not arg 0. There might be more places which need fixing
- like in the executor but the bug seems OK now.
-
-1999-04-14 Zeev Suraski <zeev@zend.com>
-
- * zend_compile.h: Compile fix
-
-1999-04-14 Andi Gutmans <andi@zend.com>
-
- * config.w32.h
- libzend.dsp
- zend-scanner.l
- zend_API.c
- zend_API.h
- zend_compile.c
- zend_compile.h
- zend_opcode.c: -Tiny patches
-
-1999-04-13 Zeev Suraski <zeev@zend.com>
-
- * zend_execute.c: Better detection
-
- * zend_execute.c:
- Move Ai stuff before get_zval_*(), like Andi suggested. Fixes Sascha's huge
- memory leak
-
-1999-04-13 Andi Gutmans <andi@zend.com>
-
- * zend-parser.y
- zend_compile.c
- zend_execute.c
- zend_execute_API.c: - Fix various memory leaks.
-
- * zend_execute.c: Refcount bugfix
-
- * libzend.dsp
- zend_API.c
- zend_execute_API.c
- zend_ptr_stack.c: * Optimize argument_stack top lookup
- * Fix a nasty bug in zend_ptr_stack_clean()
-
-1999-04-12 Zeev Suraski <zeev@zend.com>
-
- * zend_execute_API.c
- zend_globals.h: Remove unnecessary stack
-
- * zend_API.c: off by one
-
- * zend_execute.c: Minor optimization
-
- * zend_API.c: Make functions that don't take arguments somewhat happier:)
-
- * zend_execute.c:
- This should take care of "this" for user-defined functions. It wasn't yet working
- for built-in functions anyway, this one is coming soon.
-
- * zend_compile.c
- zend_execute_API.c:
- Destroy the resource list after destroying the symbol table, otherwise the
- auto-destructor for resources are run when the resource list is no longer valid
-
- * zend-parser.y
- zend.h
- zend_API.c
- zend_API.h
- zend_compile.c
- zend_compile.h
- zend_execute.c
- zend_execute.h
- zend_execute_API.c
- zend_globals.h
- zend_ptr_stack.c:
- This patch is a go. Not fully optimized yet, but working properly.
- Prepatch tagged as BEFORE_STACK_PATCH.
-
- * zend_compile.c
- zend_execute.c: Minor fixes:
- missing zval_copy_ctor()
- messed up AiCount fix
-
-1999-04-10 Zeev Suraski <zeev@zend.com>
-
- * zend_alloc.c
- zend_alloc.h: Allow runtime setting of the memory limit
-
- * zend_alloc.c
- zend_alloc.h
- zend_globals.h: Get rid of php3_ini in Zend
-
- * zend.c
- zend.h:
- We need to initialize the utility values after we initialize the INI file, which in
- turn, is after we initialize Zend. Set the utility values separately from Zend's
- initialization
-
-1999-04-09 Andi Gutmans <andi@zend.com>
-
- * zend-scanner.l: - Changed here-docs to <<< followed by whitespace.
-
-1999-04-09 stig <stig@pb1.pair.com>
-
- * .cvsignore: ignore file
-
-1999-04-09 Andi Gutmans <andi@zend.com>
-
- * zend-parser.y
- zend_compile.h:
- - I guess print $GLOBALS and print "$GLOBALS" should yield the same result
- so I returned the one in encaps_var.
- - Made INITAL_OP_ARRAY_SIZE smaller (64? can't remeber). I don't think the
- erealloc()'s during compile time are such a biggy, we might make it even
- smaller. We can have a configure time option as to it's size.
-
- * zend-parser.y:
- - Support $GLOBALS in cvar's. Now list(..) = each($GLOBALS) will work.
- - Remove support of $GLOBALS in enacapsed strings. print "$GLOBALS" isn't
- supposed to work in any case.
-
-1999-04-09 Zeev Suraski <zeev@zend.com>
-
- * zend-scanner.l:
- Honor a semicolon on the same line as an ending token of a heredoc
-
- * zend_compile.c: Prevent class redeclarations
-
-1999-04-08 Zeev Suraski <zeev@zend.com>
-
- * zend_API.c
- zend_modules.h: * Add arguments to shutdown functions
- * Remove traces of php_ini stuff
-
- * zend-parser.y: "Our favourite mistake"
-
- * zend-parser.y
- zend_compile.c
- zend_compile.h
- zend_execute.c
- zend_opcode.c: $GLOBALS support
-
-1999-04-08 Andi Gutmans <andi@zend.com>
-
- * ZEND_CHANGES: foreach() syntax has changed
-
-1999-04-08 Zeev Suraski <zeev@zend.com>
-
- * zend_compile.c
- zend_execute.c: Fix static assignment
-
-1999-04-07 Zeev Suraski <zeev@zend.com>
-
- * zend_execute_API.c: Remove an unused variable
-
- * libzend.dsp: That's better.
-
- * libzend.dsp: We didn't save the .dsp back then...
-
- * ZendCore.dsp
- ZendCore.dsw
- ZendCore.mak
- diffs
- libzend.dsp: Cleanups: ZendCore->libzend
-
-1999-04-07 Rasmus Lerdorf <rasmus@php.net>
-
- * zend.c: *** empty log message ***
-
-1999-04-07 Andi Gutmans <andi@zend.com>
-
- * LICENSE
- Makefile.in
- ZEND_CHANGES
- configure.in
- zend-parser.y
- zend-scanner.h
- zend-scanner.l
- zend.h
- zend_API.c
- zend_API.h
- zend_compile.h
- zend_errors.h
- zend_execute.c
- zend_execute_API.c
- zend_globals.h
- zend_hash.c
- zend_hash.h
- zend_list.c
- zend_list.h
- zend_llist.h
- zend_opcode.c
- zend_operators.c
- zend_operators.h
- zend_ptr_stack.c
- zend_ptr_stack.h
- zend_stack.c
- zend_stack.h
- zend_variables.c
- zend_variables.h: New file.
-
- * LICENSE
- Makefile.in
- ZEND_CHANGES
- configure.in
- zend-parser.y
- zend-scanner.h
- zend-scanner.l
- zend.h
- zend_API.c
- zend_API.h
- zend_compile.h
- zend_errors.h
- zend_execute.c
- zend_execute_API.c
- zend_globals.h
- zend_hash.c
- zend_hash.h
- zend_list.c
- zend_list.h
- zend_llist.h
- zend_opcode.c
- zend_operators.c
- zend_operators.h
- zend_ptr_stack.c
- zend_ptr_stack.h
- zend_stack.c
- zend_stack.h
- zend_variables.c
- zend_variables.h: Zend Library
-
- * ZendCore.dep
- ZendCore.dsp
- ZendCore.dsw
- ZendCore.mak
- acconfig.h
- aclocal.m4
- config.h.in
- config.unix.h
- config.w32.h
- diffs
- zend.c
- zend.ico
- zend_alloc.c
- zend_alloc.h
- zend_compile.c
- zend_constants.c
- zend_constants.h
- zend_execute.h
- zend_extensions.c
- zend_extensions.h
- zend_highlight.c
- zend_highlight.h
- zend_indent.c
- zend_indent.h
- zend_llist.c
- zend_modules.h
- zend_sprintf.c: New file.
-
- * ZendCore.dep
- ZendCore.dsp
- ZendCore.dsw
- ZendCore.mak
- acconfig.h
- aclocal.m4
- config.h.in
- config.unix.h
- config.w32.h
- diffs
- zend.c
- zend.ico
- zend_alloc.c
- zend_alloc.h
- zend_compile.c
- zend_constants.c
- zend_constants.h
- zend_execute.h
- zend_extensions.c
- zend_extensions.h
- zend_highlight.c
- zend_highlight.h
- zend_indent.c
- zend_indent.h
- zend_llist.c
- zend_modules.h
- zend_sprintf.c: Zend Library
-
diff --git a/Zend/tests/bug39018.phpt b/Zend/tests/bug39018.phpt
index e1968ad04..32566ba86 100644
--- a/Zend/tests/bug39018.phpt
+++ b/Zend/tests/bug39018.phpt
@@ -62,17 +62,17 @@ print "\nDone\n";
?>
--EXPECTF--
-Notice: String offset cast occured in %s on line %d
+Notice: String offset cast occurred in %s on line %d
Notice: Uninitialized string offset: 0 in %s on line %d
Notice: Uninitialized string offset: 0 in %s on line %d
-Notice: String offset cast occured in %s on line %d
+Notice: String offset cast occurred in %s on line %d
Notice: Uninitialized string offset: %i in %s on line %d
-Notice: String offset cast occured in %s on line %d
+Notice: String offset cast occurred in %s on line %d
Notice: Uninitialized string offset: %i in %s on line %d
@@ -88,16 +88,16 @@ Notice: Uninitialized string offset: 4 in %s on line %d
Notice: Uninitialized string offset: 4 in %s on line %d
-Notice: String offset cast occured in %s on line %d
+Notice: String offset cast occurred in %s on line %d
Notice: Uninitialized string offset: 12 in %s on line %d
-Notice: String offset cast occured in %s on line %d
+Notice: String offset cast occurred in %s on line %d
Notice: Uninitialized string offset: 12 in %s on line %d
-Notice: String offset cast occured in %s on line %d
+Notice: String offset cast occurred in %s on line %d
-Notice: String offset cast occured in %s on line %d
+Notice: String offset cast occurred in %s on line %d
b
Done
diff --git a/Zend/tests/offset_string.phpt b/Zend/tests/offset_string.phpt
index 34604d634..f7cb81bb2 100644
--- a/Zend/tests/offset_string.phpt
+++ b/Zend/tests/offset_string.phpt
@@ -30,10 +30,10 @@ echo "Done\n";
--EXPECTF--
string(1) "i"
-Notice: String offset cast occured in %s on line %d
+Notice: String offset cast occurred in %s on line %d
string(1) "S"
-Notice: String offset cast occured in %s on line %d
+Notice: String offset cast occurred in %s on line %d
string(1) "S"
Warning: Illegal string offset 'run away' in %s on line %d
@@ -46,10 +46,10 @@ string(1) "o"
Notice: A non well formed numeric value encountered in %s on line %d
string(1) "r"
-Notice: String offset cast occured in %s on line %d
+Notice: String offset cast occurred in %s on line %d
string(1) "i"
-Notice: String offset cast occured in %s on line %d
+Notice: String offset cast occurred in %s on line %d
string(1) "S"
Warning: Illegal offset type in %s on line %d
diff --git a/Zend/tests/traits/bug61998.phpt b/Zend/tests/traits/bug61998.phpt
new file mode 100644
index 000000000..612caa066
--- /dev/null
+++ b/Zend/tests/traits/bug61998.phpt
@@ -0,0 +1,68 @@
+--TEST--
+Bug #61998 (Using traits with method aliases appears to result in crash during execution)
+--FILE--
+<?php
+class Foo {
+ use T1 {
+ func as newFunc;
+ }
+
+ public function func() {
+ echo "From Foo\n";
+ }
+}
+
+trait T1 {
+ public function func() {
+ echo "From T1\n";
+ }
+}
+
+class Bar {
+ public function func() {
+ echo "From Bar\n";
+ }
+ public function func2() {
+ echo "From Bar\n";
+ }
+ public function func3() {
+ echo "From Bar\n";
+ }
+ use T1 {
+ func as newFunc;
+ func as func2;
+ }
+ use T2 {
+ func2 as newFunc2;
+ func2 as newFunc3;
+ func2 as func3;
+ }
+}
+
+trait T2 {
+ public function func2() {
+ echo "From T2\n";
+ }
+}
+
+$f = new Foo();
+
+$f->newFunc(); //from T1
+$f->func(); //from Foo
+
+$b = new Bar();
+$b->newFunc(); //from T1
+$b->func(); //from Bar
+$b->func2(); //from Bar
+$b->newFunc2(); //from T2
+$b->newFunc3(); //from T2
+$b->func3(); //from Bar
+--EXPECTF--
+From T1
+From Foo
+From T1
+From Bar
+From Bar
+From T2
+From T2
+From Bar
diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c
index 602b60041..841e1b931 100644
--- a/Zend/zend_compile.c
+++ b/Zend/zend_compile.c
@@ -1685,7 +1685,7 @@ void zend_do_begin_function_declaration(znode *function_token, znode *function_n
zval key;
if (CG(current_namespace)) {
- /* Prefix function name with current namespcae name */
+ /* Prefix function name with current namespace name */
znode tmp;
tmp.u.constant = *CG(current_namespace);
@@ -3619,6 +3619,7 @@ ZEND_API void zend_do_implement_trait(zend_class_entry *ce, zend_class_entry *tr
}
}
ce->traits[ce->num_traits++] = trait;
+ trait->refcount++;
}
}
/* }}} */
@@ -3711,7 +3712,7 @@ static int zend_traits_merge_functions(zend_function *fn TSRMLS_DC, int num_args
} else {
/* Add it to result function table */
if (zend_hash_quick_add(resulting_table, hash_key->arKey, hash_key->nKeyLength, hash_key->h, fn, sizeof(zend_function), NULL)==FAILURE) {
- zend_error(E_COMPILE_ERROR, "Trait method %s has not been applied, because failure occured during updating resulting trait method table", fn->common.function_name);
+ zend_error(E_COMPILE_ERROR, "Trait method %s has not been applied, because failure occurred during updating resulting trait method table", fn->common.function_name);
}
}
@@ -3828,7 +3829,7 @@ static int zend_traits_merge_functions_to_class(zend_function *fn TSRMLS_DC, int
function_add_ref(&fn_copy);
if (zend_hash_quick_update(&ce->function_table, hash_key->arKey, hash_key->nKeyLength, hash_key->h, &fn_copy, sizeof(zend_function), (void**)&fn_copy_p)==FAILURE) {
- zend_error(E_COMPILE_ERROR, "Trait method %s has not been applied, because failure occured during updating class method table", hash_key->arKey);
+ zend_error(E_COMPILE_ERROR, "Trait method %s has not been applied, because failure occurred during updating class method table", hash_key->arKey);
}
zend_add_magic_methods(ce, hash_key->arKey, hash_key->nKeyLength, fn_copy_p TSRMLS_CC);
@@ -3870,8 +3871,8 @@ static int zend_traits_copy_functions(zend_function *fn TSRMLS_DC, int num_args,
fn_copy = *fn;
function_add_ref(&fn_copy);
/* this function_name is never destroyed, because its refcount
- greater than 1, classes are always destoyed in reverse order
- and trait is declared early than this class */
+ greater than 1 and classes are always destoyed before the
+ traits they use */
fn_copy.common.function_name = aliases[i]->alias;
/* if it is 0, no modifieres has been changed */
@@ -4076,14 +4077,14 @@ static void zend_do_traits_method_binding(zend_class_entry *ce TSRMLS_DC) /* {{{
size_t i;
/* prepare copies of trait function tables for combination */
- function_tables = malloc(sizeof(HashTable*) * ce->num_traits);
- resulting_table = (HashTable *) malloc(sizeof(HashTable));
+ function_tables = emalloc(sizeof(HashTable*) * ce->num_traits);
+ resulting_table = (HashTable *)emalloc(sizeof(HashTable));
/* TODO: revisit this start size, may be its not optimal */
- zend_hash_init_ex(resulting_table, 10, NULL, NULL, 1, 0);
+ zend_hash_init_ex(resulting_table, 10, NULL, NULL, 0, 0);
for (i = 0; i < ce->num_traits; i++) {
- function_tables[i] = (HashTable *) malloc(sizeof(HashTable));
+ function_tables[i] = (HashTable *)emalloc(sizeof(HashTable));
zend_hash_init_ex(function_tables[i], ce->traits[i]->function_table.nNumOfElements, NULL, NULL, 1, 0);
if (ce->trait_precedences) {
@@ -4116,14 +4117,14 @@ static void zend_do_traits_method_binding(zend_class_entry *ce TSRMLS_DC) /* {{{
for (i = 0; i < ce->num_traits; i++) {
/* zend_hash_destroy(function_tables[i]); */
zend_hash_graceful_destroy(function_tables[i]);
- free(function_tables[i]);
+ efree(function_tables[i]);
}
- free(function_tables);
+ efree(function_tables);
/* free temporary resulting table */
/* zend_hash_destroy(resulting_table); */
zend_hash_graceful_destroy(resulting_table);
- free(resulting_table);
+ efree(resulting_table);
}
/* }}} */
diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c
index 205531fd2..fbc73258c 100644
--- a/Zend/zend_execute.c
+++ b/Zend/zend_execute.c
@@ -1161,7 +1161,7 @@ convert_to_array:
case IS_DOUBLE:
case IS_NULL:
case IS_BOOL:
- zend_error(E_NOTICE, "String offset cast occured");
+ zend_error(E_NOTICE, "String offset cast occurred");
break;
default:
zend_error(E_WARNING, "Illegal offset type");
@@ -1284,7 +1284,7 @@ static void zend_fetch_dimension_address_read(temp_variable *result, zval **cont
case IS_NULL:
case IS_BOOL:
if (type != BP_VAR_IS) {
- zend_error(E_NOTICE, "String offset cast occured");
+ zend_error(E_NOTICE, "String offset cast occurred");
}
break;
default:
diff --git a/Zend/zend_hash.h b/Zend/zend_hash.h
index 84ca1de34..5c3b1cde3 100644
--- a/Zend/zend_hash.h
+++ b/Zend/zend_hash.h
@@ -330,7 +330,7 @@ END_EXTERN_C()
if (idx-1 > LONG_MAX) { /* overflow */ \
break; \
} \
- idx = (ulong)(-(long)idx); \
+ idx = -idx; \
} else if (idx > LONG_MAX) { /* overflow */ \
break; \
} \
diff --git a/Zend/zend_ini_scanner.c b/Zend/zend_ini_scanner.c
index 9d0265e90..94c48c897 100644
--- a/Zend/zend_ini_scanner.c
+++ b/Zend/zend_ini_scanner.c
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.13.5 on Fri Mar 2 11:49:21 2012 */
+/* Generated by re2c 0.13.5 on Thu Jun 7 17:48:25 2012 */
#line 1 "Zend/zend_ini_scanner.l"
/*
+----------------------------------------------------------------------+
@@ -481,7 +481,7 @@ yy4:
yy5:
YYDEBUG(5, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 547 "Zend/zend_ini_scanner.l"
+#line 568 "Zend/zend_ini_scanner.l"
{
/* eat whitespace */
goto restart;
@@ -493,7 +493,7 @@ yy6:
yy7:
YYDEBUG(7, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 552 "Zend/zend_ini_scanner.l"
+#line 573 "Zend/zend_ini_scanner.l"
{
SCNG(lineno)++;
return END_OF_LINE;
@@ -533,7 +533,7 @@ yy10:
++YYCURSOR;
YYDEBUG(11, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 475 "Zend/zend_ini_scanner.l"
+#line 496 "Zend/zend_ini_scanner.l"
{ /* Disallow these chars outside option values */
return yytext[0];
}
@@ -554,7 +554,7 @@ yy14:
goto yy54;
YYDEBUG(15, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 575 "Zend/zend_ini_scanner.l"
+#line 596 "Zend/zend_ini_scanner.l"
{
return 0;
}
@@ -926,7 +926,7 @@ yy55:
yy56:
YYDEBUG(56, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 557 "Zend/zend_ini_scanner.l"
+#line 578 "Zend/zend_ini_scanner.l"
{ /* Comment */
BEGIN(INITIAL);
SCNG(lineno)++;
@@ -1012,7 +1012,7 @@ yy64:
yy65:
YYDEBUG(65, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 563 "Zend/zend_ini_scanner.l"
+#line 584 "Zend/zend_ini_scanner.l"
{ /* #Comment */
zend_error(E_DEPRECATED, "Comments starting with '#' are deprecated in %s on line %d", zend_ini_scanner_get_filename(TSRMLS_C), SCNG(lineno));
BEGIN(INITIAL);
@@ -1159,7 +1159,7 @@ yyc_ST_DOUBLE_QUOTES:
yy76:
YYDEBUG(76, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 507 "Zend/zend_ini_scanner.l"
+#line 528 "Zend/zend_ini_scanner.l"
{ /* Escape double quoted string contents */
if (YYCURSOR > YYLIMIT) {
return 0;
@@ -1204,7 +1204,7 @@ yy77:
yy78:
YYDEBUG(78, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 502 "Zend/zend_ini_scanner.l"
+#line 523 "Zend/zend_ini_scanner.l"
{ /* Double quoted '"' string ends */
yy_pop_state(TSRMLS_C);
return '"';
@@ -1323,7 +1323,7 @@ yy86:
yy87:
YYDEBUG(87, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 493 "Zend/zend_ini_scanner.l"
+#line 514 "Zend/zend_ini_scanner.l"
{ /* Get rest as section/offset value */
RETURN_TOKEN(TC_STRING, yytext, yyleng);
}
@@ -1344,7 +1344,7 @@ yy89:
yy90:
YYDEBUG(90, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 575 "Zend/zend_ini_scanner.l"
+#line 596 "Zend/zend_ini_scanner.l"
{
return 0;
}
@@ -1355,7 +1355,7 @@ yy91:
yy92:
YYDEBUG(92, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 497 "Zend/zend_ini_scanner.l"
+#line 518 "Zend/zend_ini_scanner.l"
{ /* Double quoted '"' string start */
yy_push_state(ST_DOUBLE_QUOTES TSRMLS_CC);
return '"';
@@ -1422,7 +1422,7 @@ yy97:
yy98:
YYDEBUG(98, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 471 "Zend/zend_ini_scanner.l"
+#line 492 "Zend/zend_ini_scanner.l"
{ /* Get number option value as string */
RETURN_TOKEN(TC_NUMBER, yytext, yyleng);
}
@@ -1452,7 +1452,7 @@ yy99:
yy100:
YYDEBUG(100, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 467 "Zend/zend_ini_scanner.l"
+#line 488 "Zend/zend_ini_scanner.l"
{ /* Get constant option value */
RETURN_TOKEN(TC_CONSTANT, yytext, yyleng);
}
@@ -1833,7 +1833,7 @@ yyc_ST_RAW:
160, 224, 0, 160, 160, 0, 160, 160,
160, 160, 160, 160, 160, 160, 160, 160,
160, 160, 160, 160, 160, 160, 160, 160,
- 224, 160, 160, 160, 160, 160, 160, 160,
+ 224, 160, 32, 160, 160, 160, 160, 160,
160, 160, 160, 160, 160, 160, 160, 160,
160, 160, 160, 160, 160, 160, 160, 160,
160, 160, 160, 32, 160, 160, 160, 160,
@@ -1865,66 +1865,64 @@ yyc_ST_RAW:
YYDEBUG(135, *YYCURSOR);
YYFILL(3);
yych = *YYCURSOR;
- if (yych <= '\f') {
- if (yych <= 0x08) {
- if (yych >= 0x01) goto yy139;
+ if (yych <= '\r') {
+ if (yych <= '\t') {
+ if (yych <= 0x00) goto yy137;
+ if (yych <= 0x08) goto yy139;
+ goto yy141;
} else {
- if (yych <= '\t') goto yy141;
if (yych <= '\n') goto yy142;
- goto yy139;
+ if (yych <= '\f') goto yy139;
+ goto yy144;
}
} else {
- if (yych <= ' ') {
- if (yych <= '\r') goto yy144;
- if (yych <= 0x1F) goto yy139;
- goto yy141;
+ if (yych <= '!') {
+ if (yych == ' ') goto yy141;
+ goto yy139;
} else {
- if (yych == ';') goto yy145;
+ if (yych <= '"') goto yy145;
+ if (yych == ';') goto yy147;
goto yy139;
}
}
+yy137:
YYDEBUG(137, *YYCURSOR);
++YYCURSOR;
YYDEBUG(138, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 570 "Zend/zend_ini_scanner.l"
+#line 591 "Zend/zend_ini_scanner.l"
{ /* End of option value (if EOF is reached before EOL */
BEGIN(INITIAL);
return END_OF_LINE;
}
-#line 1896 "Zend/zend_ini_scanner.c"
+#line 1899 "Zend/zend_ini_scanner.c"
yy139:
YYDEBUG(139, *YYCURSOR);
++YYCURSOR;
yych = *YYCURSOR;
- goto yy156;
+ goto yy158;
yy140:
YYDEBUG(140, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 448 "Zend/zend_ini_scanner.l"
+#line 474 "Zend/zend_ini_scanner.l"
{ /* Raw value, only used when SCNG(scanner_mode) == ZEND_INI_SCANNER_RAW. */
- /* Eat leading and trailing double quotes */
- if (yytext[0] == '"' && yytext[yyleng - 1] == '"') {
- SCNG(yy_text)++;
- yyleng = yyleng - 2;
- }
RETURN_TOKEN(TC_RAW, yytext, yyleng);
}
-#line 1914 "Zend/zend_ini_scanner.c"
+#line 1912 "Zend/zend_ini_scanner.c"
yy141:
YYDEBUG(141, *YYCURSOR);
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if (yybm[0+yych] & 64) {
- goto yy152;
+ goto yy154;
}
if (yych <= '\f') {
- if (yych == '\n') goto yy151;
- goto yy156;
+ if (yych == '\n') goto yy153;
+ goto yy158;
} else {
- if (yych <= '\r') goto yy154;
- if (yych == ';') goto yy146;
- goto yy156;
+ if (yych <= '\r') goto yy156;
+ if (yych == ';') goto yy148;
+ goto yy158;
}
yy142:
YYDEBUG(142, *YYCURSOR);
@@ -1932,89 +1930,129 @@ yy142:
yy143:
YYDEBUG(143, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 461 "Zend/zend_ini_scanner.l"
+#line 482 "Zend/zend_ini_scanner.l"
{ /* End of option value */
BEGIN(INITIAL);
SCNG(lineno)++;
return END_OF_LINE;
}
-#line 1942 "Zend/zend_ini_scanner.c"
+#line 1940 "Zend/zend_ini_scanner.c"
yy144:
YYDEBUG(144, *YYCURSOR);
yych = *++YYCURSOR;
- if (yych == '\n') goto yy151;
+ if (yych == '\n') goto yy153;
goto yy143;
yy145:
YYDEBUG(145, *YYCURSOR);
- yyaccept = 1;
- yych = *(YYMARKER = ++YYCURSOR);
- goto yy147;
-yy146:
- YYDEBUG(146, *YYCURSOR);
++YYCURSOR;
- YYFILL(2);
- yych = *YYCURSOR;
+ YYDEBUG(146, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+#line 448 "Zend/zend_ini_scanner.l"
+ {
+ while (YYCURSOR < YYLIMIT) {
+ switch (*YYCURSOR++) {
+ case '\n':
+ SCNG(lineno)++;
+ break;
+ case '\r':
+ if (*YYCURSOR != '\n') {
+ SCNG(lineno)++;
+ }
+ break;
+ case '"':
+ yyleng = YYCURSOR - SCNG(yy_text) - 2;
+ SCNG(yy_text)++;
+ RETURN_TOKEN(TC_RAW, yytext, yyleng);
+ case '\\':
+ if (YYCURSOR < YYLIMIT) {
+ YYCURSOR++;
+ }
+ break;
+ }
+ }
+ yyleng = YYCURSOR - SCNG(yy_text);
+ RETURN_TOKEN(TC_RAW, yytext, yyleng);
+}
+#line 1977 "Zend/zend_ini_scanner.c"
yy147:
YYDEBUG(147, *YYCURSOR);
- if (yybm[0+yych] & 32) {
- goto yy146;
- }
- if (yych >= '\r') goto yy150;
+ yyaccept = 1;
+ yych = *(YYMARKER = ++YYCURSOR);
+ goto yy149;
yy148:
YYDEBUG(148, *YYCURSOR);
++YYCURSOR;
+ YYFILL(2);
+ yych = *YYCURSOR;
yy149:
YYDEBUG(149, *YYCURSOR);
+ if (yybm[0+yych] & 32) {
+ goto yy148;
+ }
+ if (yych >= '\r') goto yy152;
+yy150:
+ YYDEBUG(150, *YYCURSOR);
+ ++YYCURSOR;
+yy151:
+ YYDEBUG(151, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 557 "Zend/zend_ini_scanner.l"
+#line 578 "Zend/zend_ini_scanner.l"
{ /* Comment */
BEGIN(INITIAL);
SCNG(lineno)++;
return END_OF_LINE;
}
-#line 1976 "Zend/zend_ini_scanner.c"
-yy150:
- YYDEBUG(150, *YYCURSOR);
+#line 2006 "Zend/zend_ini_scanner.c"
+yy152:
+ YYDEBUG(152, *YYCURSOR);
yych = *++YYCURSOR;
- if (yych == '\n') goto yy148;
- goto yy149;
-yy151:
- YYDEBUG(151, *YYCURSOR);
+ if (yych == '\n') goto yy150;
+ goto yy151;
+yy153:
+ YYDEBUG(153, *YYCURSOR);
yych = *++YYCURSOR;
goto yy143;
-yy152:
- YYDEBUG(152, *YYCURSOR);
+yy154:
+ YYDEBUG(154, *YYCURSOR);
yyaccept = 0;
YYMARKER = ++YYCURSOR;
YYFILL(2);
yych = *YYCURSOR;
- YYDEBUG(153, *YYCURSOR);
+ YYDEBUG(155, *YYCURSOR);
if (yybm[0+yych] & 64) {
- goto yy152;
+ goto yy154;
}
- if (yych <= '\f') {
- if (yych <= 0x00) goto yy140;
- if (yych == '\n') goto yy151;
- goto yy155;
+ if (yych <= '\r') {
+ if (yych <= '\t') {
+ if (yych <= 0x00) goto yy140;
+ goto yy157;
+ } else {
+ if (yych <= '\n') goto yy153;
+ if (yych <= '\f') goto yy157;
+ }
} else {
- if (yych <= '\r') goto yy154;
- if (yych == ';') goto yy146;
- goto yy155;
+ if (yych <= '"') {
+ if (yych <= '!') goto yy157;
+ goto yy140;
+ } else {
+ if (yych == ';') goto yy148;
+ goto yy157;
+ }
}
-yy154:
- YYDEBUG(154, *YYCURSOR);
+yy156:
+ YYDEBUG(156, *YYCURSOR);
yych = *++YYCURSOR;
- if (yych == '\n') goto yy151;
+ if (yych == '\n') goto yy153;
goto yy143;
-yy155:
- YYDEBUG(155, *YYCURSOR);
+yy157:
+ YYDEBUG(157, *YYCURSOR);
++YYCURSOR;
YYFILL(1);
yych = *YYCURSOR;
-yy156:
- YYDEBUG(156, *YYCURSOR);
+yy158:
+ YYDEBUG(158, *YYCURSOR);
if (yybm[0+yych] & 128) {
- goto yy155;
+ goto yy157;
}
goto yy140;
}
@@ -2055,44 +2093,44 @@ yyc_ST_SECTION_RAW:
128, 128, 128, 128, 128, 128, 128, 128,
128, 128, 128, 128, 128, 128, 128, 128,
};
- YYDEBUG(157, *YYCURSOR);
+ YYDEBUG(159, *YYCURSOR);
YYFILL(3);
yych = *YYCURSOR;
if (yych <= '\f') {
- if (yych == '\n') goto yy161;
+ if (yych == '\n') goto yy163;
} else {
- if (yych <= '\r') goto yy161;
- if (yych == ']') goto yy163;
+ if (yych <= '\r') goto yy163;
+ if (yych == ']') goto yy165;
}
- YYDEBUG(159, *YYCURSOR);
+ YYDEBUG(161, *YYCURSOR);
++YYCURSOR;
yych = *YYCURSOR;
- goto yy170;
-yy160:
- YYDEBUG(160, *YYCURSOR);
+ goto yy172;
+yy162:
+ YYDEBUG(162, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 457 "Zend/zend_ini_scanner.l"
+#line 478 "Zend/zend_ini_scanner.l"
{ /* Raw value, only used when SCNG(scanner_mode) == ZEND_INI_SCANNER_RAW. */
RETURN_TOKEN(TC_RAW, yytext, yyleng);
}
-#line 2079 "Zend/zend_ini_scanner.c"
-yy161:
- YYDEBUG(161, *YYCURSOR);
+#line 2117 "Zend/zend_ini_scanner.c"
+yy163:
+ YYDEBUG(163, *YYCURSOR);
++YYCURSOR;
- YYDEBUG(162, *YYCURSOR);
+ YYDEBUG(164, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 575 "Zend/zend_ini_scanner.l"
+#line 596 "Zend/zend_ini_scanner.l"
{
return 0;
}
-#line 2089 "Zend/zend_ini_scanner.c"
-yy163:
- YYDEBUG(163, *YYCURSOR);
+#line 2127 "Zend/zend_ini_scanner.c"
+yy165:
+ YYDEBUG(165, *YYCURSOR);
++YYCURSOR;
yych = *YYCURSOR;
- goto yy166;
-yy164:
- YYDEBUG(164, *YYCURSOR);
+ goto yy168;
+yy166:
+ YYDEBUG(166, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
#line 377 "Zend/zend_ini_scanner.l"
{ /* End of section */
@@ -2100,40 +2138,40 @@ yy164:
SCNG(lineno)++;
return ']';
}
-#line 2104 "Zend/zend_ini_scanner.c"
-yy165:
- YYDEBUG(165, *YYCURSOR);
+#line 2142 "Zend/zend_ini_scanner.c"
+yy167:
+ YYDEBUG(167, *YYCURSOR);
++YYCURSOR;
YYFILL(2);
yych = *YYCURSOR;
-yy166:
- YYDEBUG(166, *YYCURSOR);
- if (yybm[0+yych] & 64) {
- goto yy165;
- }
- if (yych == '\n') goto yy167;
- if (yych == '\r') goto yy168;
- goto yy164;
-yy167:
- YYDEBUG(167, *YYCURSOR);
- yych = *++YYCURSOR;
- goto yy164;
yy168:
YYDEBUG(168, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == '\n') goto yy167;
- goto yy164;
+ if (yybm[0+yych] & 64) {
+ goto yy167;
+ }
+ if (yych == '\n') goto yy169;
+ if (yych == '\r') goto yy170;
+ goto yy166;
yy169:
YYDEBUG(169, *YYCURSOR);
+ yych = *++YYCURSOR;
+ goto yy166;
+yy170:
+ YYDEBUG(170, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if (yych == '\n') goto yy169;
+ goto yy166;
+yy171:
+ YYDEBUG(171, *YYCURSOR);
++YYCURSOR;
YYFILL(1);
yych = *YYCURSOR;
-yy170:
- YYDEBUG(170, *YYCURSOR);
+yy172:
+ YYDEBUG(172, *YYCURSOR);
if (yybm[0+yych] & 128) {
- goto yy169;
+ goto yy171;
}
- goto yy160;
+ goto yy162;
}
/* *********************************** */
yyc_ST_SECTION_VALUE:
@@ -2172,203 +2210,203 @@ yyc_ST_SECTION_VALUE:
132, 132, 132, 132, 132, 132, 132, 132,
132, 132, 132, 132, 132, 132, 132, 132,
};
- YYDEBUG(171, *YYCURSOR);
+ YYDEBUG(173, *YYCURSOR);
YYFILL(3);
yych = *YYCURSOR;
if (yych <= '-') {
if (yych <= ' ') {
if (yych <= '\n') {
- if (yych <= 0x08) goto yy173;
- if (yych <= '\t') goto yy175;
- goto yy176;
+ if (yych <= 0x08) goto yy175;
+ if (yych <= '\t') goto yy177;
+ goto yy178;
} else {
- if (yych == '\r') goto yy176;
- if (yych >= ' ') goto yy175;
+ if (yych == '\r') goto yy178;
+ if (yych >= ' ') goto yy177;
}
} else {
if (yych <= '$') {
- if (yych == '"') goto yy178;
- if (yych >= '$') goto yy180;
+ if (yych == '"') goto yy180;
+ if (yych >= '$') goto yy182;
} else {
- if (yych == '\'') goto yy181;
- if (yych >= '-') goto yy182;
+ if (yych == '\'') goto yy183;
+ if (yych >= '-') goto yy184;
}
}
} else {
if (yych <= 'Z') {
if (yych <= '9') {
- if (yych <= '.') goto yy183;
- if (yych >= '0') goto yy184;
+ if (yych <= '.') goto yy185;
+ if (yych >= '0') goto yy186;
} else {
- if (yych == ';') goto yy176;
- if (yych >= 'A') goto yy186;
+ if (yych == ';') goto yy178;
+ if (yych >= 'A') goto yy188;
}
} else {
if (yych <= '^') {
- if (yych <= '[') goto yy173;
- if (yych <= '\\') goto yy188;
- if (yych <= ']') goto yy189;
+ if (yych <= '[') goto yy175;
+ if (yych <= '\\') goto yy190;
+ if (yych <= ']') goto yy191;
} else {
- if (yych == '`') goto yy173;
- if (yych <= 'z') goto yy186;
+ if (yych == '`') goto yy175;
+ if (yych <= 'z') goto yy188;
}
}
}
-yy173:
- YYDEBUG(173, *YYCURSOR);
+yy175:
+ YYDEBUG(175, *YYCURSOR);
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- goto yy196;
-yy174:
- YYDEBUG(174, *YYCURSOR);
+ goto yy198;
+yy176:
+ YYDEBUG(176, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 493 "Zend/zend_ini_scanner.l"
+#line 514 "Zend/zend_ini_scanner.l"
{ /* Get rest as section/offset value */
RETURN_TOKEN(TC_STRING, yytext, yyleng);
}
-#line 2230 "Zend/zend_ini_scanner.c"
-yy175:
- YYDEBUG(175, *YYCURSOR);
+#line 2268 "Zend/zend_ini_scanner.c"
+yy177:
+ YYDEBUG(177, *YYCURSOR);
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= 0x1F) {
- if (yych == '\t') goto yy222;
- goto yy196;
+ if (yych == '\t') goto yy224;
+ goto yy198;
} else {
- if (yych <= ' ') goto yy222;
- if (yych == '"') goto yy224;
- goto yy196;
+ if (yych <= ' ') goto yy224;
+ if (yych == '"') goto yy226;
+ goto yy198;
}
-yy176:
- YYDEBUG(176, *YYCURSOR);
+yy178:
+ YYDEBUG(178, *YYCURSOR);
++YYCURSOR;
-yy177:
- YYDEBUG(177, *YYCURSOR);
+yy179:
+ YYDEBUG(179, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 575 "Zend/zend_ini_scanner.l"
+#line 596 "Zend/zend_ini_scanner.l"
{
return 0;
}
-#line 2253 "Zend/zend_ini_scanner.c"
-yy178:
- YYDEBUG(178, *YYCURSOR);
+#line 2291 "Zend/zend_ini_scanner.c"
+yy180:
+ YYDEBUG(180, *YYCURSOR);
++YYCURSOR;
-yy179:
- YYDEBUG(179, *YYCURSOR);
+yy181:
+ YYDEBUG(181, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 497 "Zend/zend_ini_scanner.l"
+#line 518 "Zend/zend_ini_scanner.l"
{ /* Double quoted '"' string start */
yy_push_state(ST_DOUBLE_QUOTES TSRMLS_CC);
return '"';
}
-#line 2265 "Zend/zend_ini_scanner.c"
-yy180:
- YYDEBUG(180, *YYCURSOR);
+#line 2303 "Zend/zend_ini_scanner.c"
+yy182:
+ YYDEBUG(182, *YYCURSOR);
yych = *++YYCURSOR;
if (yych <= '\\') {
- if (yych <= 0x00) goto yy177;
- if (yych <= '[') goto yy195;
- goto yy200;
+ if (yych <= 0x00) goto yy179;
+ if (yych <= '[') goto yy197;
+ goto yy202;
} else {
- if (yych == '{') goto yy220;
- goto yy195;
+ if (yych == '{') goto yy222;
+ goto yy197;
}
-yy181:
- YYDEBUG(181, *YYCURSOR);
+yy183:
+ YYDEBUG(183, *YYCURSOR);
yyaccept = 1;
yych = *(YYMARKER = ++YYCURSOR);
if (yybm[0+yych] & 128) {
- goto yy216;
+ goto yy218;
}
- goto yy177;
-yy182:
- YYDEBUG(182, *YYCURSOR);
+ goto yy179;
+yy184:
+ YYDEBUG(184, *YYCURSOR);
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '/') goto yy196;
- if (yych <= '9') goto yy214;
- goto yy196;
-yy183:
- YYDEBUG(183, *YYCURSOR);
+ if (yych <= '/') goto yy198;
+ if (yych <= '9') goto yy216;
+ goto yy198;
+yy185:
+ YYDEBUG(185, *YYCURSOR);
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '/') goto yy196;
- if (yych <= '9') goto yy212;
- goto yy196;
-yy184:
- YYDEBUG(184, *YYCURSOR);
+ if (yych <= '/') goto yy198;
+ if (yych <= '9') goto yy214;
+ goto yy198;
+yy186:
+ YYDEBUG(186, *YYCURSOR);
yyaccept = 2;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= '\'') {
if (yych <= '\r') {
- if (yych == '\n') goto yy185;
- if (yych <= '\f') goto yy196;
+ if (yych == '\n') goto yy187;
+ if (yych <= '\f') goto yy198;
} else {
- if (yych == '"') goto yy185;
- if (yych <= '&') goto yy196;
+ if (yych == '"') goto yy187;
+ if (yych <= '&') goto yy198;
}
} else {
if (yych <= '9') {
- if (yych == '.') goto yy208;
- if (yych <= '/') goto yy196;
- goto yy210;
+ if (yych == '.') goto yy210;
+ if (yych <= '/') goto yy198;
+ goto yy212;
} else {
if (yych <= ';') {
- if (yych <= ':') goto yy196;
+ if (yych <= ':') goto yy198;
} else {
- if (yych != ']') goto yy196;
+ if (yych != ']') goto yy198;
}
}
}
-yy185:
- YYDEBUG(185, *YYCURSOR);
+yy187:
+ YYDEBUG(187, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 471 "Zend/zend_ini_scanner.l"
+#line 492 "Zend/zend_ini_scanner.l"
{ /* Get number option value as string */
RETURN_TOKEN(TC_NUMBER, yytext, yyleng);
}
-#line 2331 "Zend/zend_ini_scanner.c"
-yy186:
- YYDEBUG(186, *YYCURSOR);
+#line 2369 "Zend/zend_ini_scanner.c"
+yy188:
+ YYDEBUG(188, *YYCURSOR);
yyaccept = 3;
yych = *(YYMARKER = ++YYCURSOR);
if (yybm[0+yych] & 32) {
- goto yy206;
+ goto yy208;
}
if (yych <= '"') {
if (yych <= '\f') {
- if (yych != '\n') goto yy196;
+ if (yych != '\n') goto yy198;
} else {
- if (yych <= '\r') goto yy187;
- if (yych <= '!') goto yy196;
+ if (yych <= '\r') goto yy189;
+ if (yych <= '!') goto yy198;
}
} else {
if (yych <= ':') {
- if (yych != '\'') goto yy196;
+ if (yych != '\'') goto yy198;
} else {
- if (yych <= ';') goto yy187;
- if (yych != ']') goto yy196;
+ if (yych <= ';') goto yy189;
+ if (yych != ']') goto yy198;
}
}
-yy187:
- YYDEBUG(187, *YYCURSOR);
+yy189:
+ YYDEBUG(189, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 467 "Zend/zend_ini_scanner.l"
+#line 488 "Zend/zend_ini_scanner.l"
{ /* Get constant option value */
RETURN_TOKEN(TC_CONSTANT, yytext, yyleng);
}
-#line 2361 "Zend/zend_ini_scanner.c"
-yy188:
- YYDEBUG(188, *YYCURSOR);
+#line 2399 "Zend/zend_ini_scanner.c"
+yy190:
+ YYDEBUG(190, *YYCURSOR);
yych = *++YYCURSOR;
- goto yy195;
-yy189:
- YYDEBUG(189, *YYCURSOR);
+ goto yy197;
+yy191:
+ YYDEBUG(191, *YYCURSOR);
++YYCURSOR;
yych = *YYCURSOR;
- goto yy192;
-yy190:
- YYDEBUG(190, *YYCURSOR);
+ goto yy194;
+yy192:
+ YYDEBUG(192, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
#line 377 "Zend/zend_ini_scanner.l"
{ /* End of section */
@@ -2376,97 +2414,86 @@ yy190:
SCNG(lineno)++;
return ']';
}
-#line 2380 "Zend/zend_ini_scanner.c"
-yy191:
- YYDEBUG(191, *YYCURSOR);
+#line 2418 "Zend/zend_ini_scanner.c"
+yy193:
+ YYDEBUG(193, *YYCURSOR);
++YYCURSOR;
YYFILL(2);
yych = *YYCURSOR;
-yy192:
- YYDEBUG(192, *YYCURSOR);
- if (yybm[0+yych] & 2) {
- goto yy191;
- }
- if (yych == '\n') goto yy193;
- if (yych == '\r') goto yy194;
- goto yy190;
-yy193:
- YYDEBUG(193, *YYCURSOR);
- yych = *++YYCURSOR;
- goto yy190;
yy194:
YYDEBUG(194, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == '\n') goto yy193;
- goto yy190;
+ if (yybm[0+yych] & 2) {
+ goto yy193;
+ }
+ if (yych == '\n') goto yy195;
+ if (yych == '\r') goto yy196;
+ goto yy192;
yy195:
YYDEBUG(195, *YYCURSOR);
+ yych = *++YYCURSOR;
+ goto yy192;
+yy196:
+ YYDEBUG(196, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if (yych == '\n') goto yy195;
+ goto yy192;
+yy197:
+ YYDEBUG(197, *YYCURSOR);
yyaccept = 0;
YYMARKER = ++YYCURSOR;
YYFILL(1);
yych = *YYCURSOR;
-yy196:
- YYDEBUG(196, *YYCURSOR);
+yy198:
+ YYDEBUG(198, *YYCURSOR);
if (yybm[0+yych] & 4) {
- goto yy195;
+ goto yy197;
}
- if (yych == '$') goto yy198;
- if (yych != '\\') goto yy174;
-yy197:
- YYDEBUG(197, *YYCURSOR);
+ if (yych == '$') goto yy200;
+ if (yych != '\\') goto yy176;
+yy199:
+ YYDEBUG(199, *YYCURSOR);
++YYCURSOR;
YYFILL(1);
yych = *YYCURSOR;
- goto yy195;
-yy198:
- YYDEBUG(198, *YYCURSOR);
+ goto yy197;
+yy200:
+ YYDEBUG(200, *YYCURSOR);
++YYCURSOR;
YYFILL(1);
yych = *YYCURSOR;
if (yych <= '\\') {
- if (yych <= 0x00) goto yy199;
- if (yych <= '[') goto yy195;
- goto yy200;
+ if (yych <= 0x00) goto yy201;
+ if (yych <= '[') goto yy197;
+ goto yy202;
} else {
- if (yych != '{') goto yy195;
+ if (yych != '{') goto yy197;
}
-yy199:
- YYDEBUG(199, *YYCURSOR);
+yy201:
+ YYDEBUG(201, *YYCURSOR);
YYCURSOR = YYMARKER;
if (yyaccept <= 1) {
if (yyaccept <= 0) {
- goto yy174;
+ goto yy176;
} else {
- goto yy177;
+ goto yy179;
}
} else {
if (yyaccept <= 2) {
- goto yy185;
- } else {
goto yy187;
+ } else {
+ goto yy189;
}
}
-yy200:
- YYDEBUG(200, *YYCURSOR);
- ++YYCURSOR;
- YYFILL(1);
- yych = *YYCURSOR;
- if (yybm[0+yych] & 8) {
- goto yy201;
- }
- if (yych == '\\') goto yy203;
- goto yy195;
-yy201:
- YYDEBUG(201, *YYCURSOR);
+yy202:
+ YYDEBUG(202, *YYCURSOR);
++YYCURSOR;
YYFILL(1);
yych = *YYCURSOR;
- YYDEBUG(202, *YYCURSOR);
if (yybm[0+yych] & 8) {
- goto yy201;
+ goto yy203;
}
if (yych == '\\') goto yy205;
- goto yy195;
+ goto yy197;
yy203:
YYDEBUG(203, *YYCURSOR);
++YYCURSOR;
@@ -2474,219 +2501,230 @@ yy203:
yych = *YYCURSOR;
YYDEBUG(204, *YYCURSOR);
if (yybm[0+yych] & 8) {
- goto yy201;
+ goto yy203;
}
- if (yych == '\\') goto yy203;
- goto yy195;
+ if (yych == '\\') goto yy207;
+ goto yy197;
yy205:
YYDEBUG(205, *YYCURSOR);
++YYCURSOR;
YYFILL(1);
yych = *YYCURSOR;
+ YYDEBUG(206, *YYCURSOR);
if (yybm[0+yych] & 8) {
- goto yy201;
+ goto yy203;
}
- if (yych == '\\') goto yy203;
- goto yy195;
-yy206:
- YYDEBUG(206, *YYCURSOR);
+ if (yych == '\\') goto yy205;
+ goto yy197;
+yy207:
+ YYDEBUG(207, *YYCURSOR);
+ ++YYCURSOR;
+ YYFILL(1);
+ yych = *YYCURSOR;
+ if (yybm[0+yych] & 8) {
+ goto yy203;
+ }
+ if (yych == '\\') goto yy205;
+ goto yy197;
+yy208:
+ YYDEBUG(208, *YYCURSOR);
yyaccept = 3;
YYMARKER = ++YYCURSOR;
YYFILL(1);
yych = *YYCURSOR;
- YYDEBUG(207, *YYCURSOR);
+ YYDEBUG(209, *YYCURSOR);
if (yybm[0+yych] & 32) {
- goto yy206;
+ goto yy208;
}
if (yych <= '$') {
if (yych <= '\r') {
- if (yych == '\n') goto yy187;
- if (yych <= '\f') goto yy195;
- goto yy187;
+ if (yych == '\n') goto yy189;
+ if (yych <= '\f') goto yy197;
+ goto yy189;
} else {
- if (yych == '"') goto yy187;
- if (yych <= '#') goto yy195;
- goto yy198;
+ if (yych == '"') goto yy189;
+ if (yych <= '#') goto yy197;
+ goto yy200;
}
} else {
if (yych <= ';') {
- if (yych == '\'') goto yy187;
- if (yych <= ':') goto yy195;
- goto yy187;
+ if (yych == '\'') goto yy189;
+ if (yych <= ':') goto yy197;
+ goto yy189;
} else {
- if (yych <= '[') goto yy195;
- if (yych <= '\\') goto yy197;
- if (yych <= ']') goto yy187;
- goto yy195;
+ if (yych <= '[') goto yy197;
+ if (yych <= '\\') goto yy199;
+ if (yych <= ']') goto yy189;
+ goto yy197;
}
}
-yy208:
- YYDEBUG(208, *YYCURSOR);
+yy210:
+ YYDEBUG(210, *YYCURSOR);
yyaccept = 2;
YYMARKER = ++YYCURSOR;
YYFILL(1);
yych = *YYCURSOR;
- YYDEBUG(209, *YYCURSOR);
+ YYDEBUG(211, *YYCURSOR);
if (yybm[0+yych] & 64) {
- goto yy208;
+ goto yy210;
}
if (yych <= '$') {
if (yych <= '\r') {
- if (yych == '\n') goto yy185;
- if (yych <= '\f') goto yy195;
- goto yy185;
+ if (yych == '\n') goto yy187;
+ if (yych <= '\f') goto yy197;
+ goto yy187;
} else {
- if (yych == '"') goto yy185;
- if (yych <= '#') goto yy195;
- goto yy198;
+ if (yych == '"') goto yy187;
+ if (yych <= '#') goto yy197;
+ goto yy200;
}
} else {
if (yych <= ';') {
- if (yych == '\'') goto yy185;
- if (yych <= ':') goto yy195;
- goto yy185;
+ if (yych == '\'') goto yy187;
+ if (yych <= ':') goto yy197;
+ goto yy187;
} else {
- if (yych <= '[') goto yy195;
- if (yych <= '\\') goto yy197;
- if (yych <= ']') goto yy185;
- goto yy195;
+ if (yych <= '[') goto yy197;
+ if (yych <= '\\') goto yy199;
+ if (yych <= ']') goto yy187;
+ goto yy197;
}
}
-yy210:
- YYDEBUG(210, *YYCURSOR);
+yy212:
+ YYDEBUG(212, *YYCURSOR);
yyaccept = 2;
YYMARKER = ++YYCURSOR;
YYFILL(1);
yych = *YYCURSOR;
- YYDEBUG(211, *YYCURSOR);
+ YYDEBUG(213, *YYCURSOR);
if (yych <= '\'') {
if (yych <= '!') {
if (yych <= '\n') {
- if (yych <= '\t') goto yy195;
- goto yy185;
+ if (yych <= '\t') goto yy197;
+ goto yy187;
} else {
- if (yych == '\r') goto yy185;
- goto yy195;
+ if (yych == '\r') goto yy187;
+ goto yy197;
}
} else {
if (yych <= '#') {
- if (yych <= '"') goto yy185;
- goto yy195;
+ if (yych <= '"') goto yy187;
+ goto yy197;
} else {
- if (yych <= '$') goto yy198;
- if (yych <= '&') goto yy195;
- goto yy185;
+ if (yych <= '$') goto yy200;
+ if (yych <= '&') goto yy197;
+ goto yy187;
}
}
} else {
if (yych <= ':') {
if (yych <= '.') {
- if (yych <= '-') goto yy195;
- goto yy208;
+ if (yych <= '-') goto yy197;
+ goto yy210;
} else {
- if (yych <= '/') goto yy195;
- if (yych <= '9') goto yy210;
- goto yy195;
+ if (yych <= '/') goto yy197;
+ if (yych <= '9') goto yy212;
+ goto yy197;
}
} else {
if (yych <= '[') {
- if (yych <= ';') goto yy185;
- goto yy195;
+ if (yych <= ';') goto yy187;
+ goto yy197;
} else {
- if (yych <= '\\') goto yy197;
- if (yych <= ']') goto yy185;
- goto yy195;
+ if (yych <= '\\') goto yy199;
+ if (yych <= ']') goto yy187;
+ goto yy197;
}
}
}
-yy212:
- YYDEBUG(212, *YYCURSOR);
+yy214:
+ YYDEBUG(214, *YYCURSOR);
yyaccept = 2;
YYMARKER = ++YYCURSOR;
YYFILL(1);
yych = *YYCURSOR;
- YYDEBUG(213, *YYCURSOR);
+ YYDEBUG(215, *YYCURSOR);
if (yych <= '&') {
if (yych <= '\r') {
- if (yych == '\n') goto yy185;
- if (yych <= '\f') goto yy195;
- goto yy185;
+ if (yych == '\n') goto yy187;
+ if (yych <= '\f') goto yy197;
+ goto yy187;
} else {
if (yych <= '"') {
- if (yych <= '!') goto yy195;
- goto yy185;
+ if (yych <= '!') goto yy197;
+ goto yy187;
} else {
- if (yych == '$') goto yy198;
- goto yy195;
+ if (yych == '$') goto yy200;
+ goto yy197;
}
}
} else {
if (yych <= ':') {
- if (yych <= '\'') goto yy185;
- if (yych <= '/') goto yy195;
- if (yych <= '9') goto yy212;
- goto yy195;
+ if (yych <= '\'') goto yy187;
+ if (yych <= '/') goto yy197;
+ if (yych <= '9') goto yy214;
+ goto yy197;
} else {
if (yych <= '[') {
- if (yych <= ';') goto yy185;
- goto yy195;
+ if (yych <= ';') goto yy187;
+ goto yy197;
} else {
- if (yych <= '\\') goto yy197;
- if (yych <= ']') goto yy185;
- goto yy195;
+ if (yych <= '\\') goto yy199;
+ if (yych <= ']') goto yy187;
+ goto yy197;
}
}
}
-yy214:
- YYDEBUG(214, *YYCURSOR);
+yy216:
+ YYDEBUG(216, *YYCURSOR);
yyaccept = 2;
YYMARKER = ++YYCURSOR;
YYFILL(1);
yych = *YYCURSOR;
- YYDEBUG(215, *YYCURSOR);
+ YYDEBUG(217, *YYCURSOR);
if (yych <= '&') {
if (yych <= '\r') {
- if (yych == '\n') goto yy185;
- if (yych <= '\f') goto yy195;
- goto yy185;
+ if (yych == '\n') goto yy187;
+ if (yych <= '\f') goto yy197;
+ goto yy187;
} else {
if (yych <= '"') {
- if (yych <= '!') goto yy195;
- goto yy185;
+ if (yych <= '!') goto yy197;
+ goto yy187;
} else {
- if (yych == '$') goto yy198;
- goto yy195;
+ if (yych == '$') goto yy200;
+ goto yy197;
}
}
} else {
if (yych <= ':') {
- if (yych <= '\'') goto yy185;
- if (yych <= '/') goto yy195;
- if (yych <= '9') goto yy214;
- goto yy195;
+ if (yych <= '\'') goto yy187;
+ if (yych <= '/') goto yy197;
+ if (yych <= '9') goto yy216;
+ goto yy197;
} else {
if (yych <= '[') {
- if (yych <= ';') goto yy185;
- goto yy195;
+ if (yych <= ';') goto yy187;
+ goto yy197;
} else {
- if (yych <= '\\') goto yy197;
- if (yych <= ']') goto yy185;
- goto yy195;
+ if (yych <= '\\') goto yy199;
+ if (yych <= ']') goto yy187;
+ goto yy197;
}
}
}
-yy216:
- YYDEBUG(216, *YYCURSOR);
+yy218:
+ YYDEBUG(218, *YYCURSOR);
++YYCURSOR;
YYFILL(1);
yych = *YYCURSOR;
- YYDEBUG(217, *YYCURSOR);
+ YYDEBUG(219, *YYCURSOR);
if (yybm[0+yych] & 128) {
- goto yy216;
+ goto yy218;
}
- YYDEBUG(218, *YYCURSOR);
+ YYDEBUG(220, *YYCURSOR);
++YYCURSOR;
- YYDEBUG(219, *YYCURSOR);
+ YYDEBUG(221, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
#line 368 "Zend/zend_ini_scanner.l"
{ /* Raw string */
@@ -2697,65 +2735,65 @@ yy216:
}
RETURN_TOKEN(TC_RAW, yytext, yyleng);
}
-#line 2701 "Zend/zend_ini_scanner.c"
-yy220:
- YYDEBUG(220, *YYCURSOR);
+#line 2739 "Zend/zend_ini_scanner.c"
+yy222:
+ YYDEBUG(222, *YYCURSOR);
++YYCURSOR;
- YYDEBUG(221, *YYCURSOR);
+ YYDEBUG(223, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
#line 401 "Zend/zend_ini_scanner.l"
{ /* Variable start */
yy_push_state(ST_VARNAME TSRMLS_CC);
return TC_DOLLAR_CURLY;
}
-#line 2712 "Zend/zend_ini_scanner.c"
-yy222:
- YYDEBUG(222, *YYCURSOR);
+#line 2750 "Zend/zend_ini_scanner.c"
+yy224:
+ YYDEBUG(224, *YYCURSOR);
yyaccept = 0;
YYMARKER = ++YYCURSOR;
YYFILL(1);
yych = *YYCURSOR;
- YYDEBUG(223, *YYCURSOR);
+ YYDEBUG(225, *YYCURSOR);
if (yych <= '"') {
if (yych <= '\f') {
- if (yych <= 0x08) goto yy195;
- if (yych <= '\t') goto yy222;
- if (yych <= '\n') goto yy174;
- goto yy195;
+ if (yych <= 0x08) goto yy197;
+ if (yych <= '\t') goto yy224;
+ if (yych <= '\n') goto yy176;
+ goto yy197;
} else {
if (yych <= 0x1F) {
- if (yych <= '\r') goto yy174;
- goto yy195;
+ if (yych <= '\r') goto yy176;
+ goto yy197;
} else {
- if (yych <= ' ') goto yy222;
- if (yych <= '!') goto yy195;
+ if (yych <= ' ') goto yy224;
+ if (yych <= '!') goto yy197;
}
}
} else {
if (yych <= ':') {
if (yych <= '$') {
- if (yych <= '#') goto yy195;
- goto yy198;
+ if (yych <= '#') goto yy197;
+ goto yy200;
} else {
- if (yych == '\'') goto yy174;
- goto yy195;
+ if (yych == '\'') goto yy176;
+ goto yy197;
}
} else {
if (yych <= '[') {
- if (yych <= ';') goto yy174;
- goto yy195;
+ if (yych <= ';') goto yy176;
+ goto yy197;
} else {
- if (yych <= '\\') goto yy197;
- if (yych <= ']') goto yy174;
- goto yy195;
+ if (yych <= '\\') goto yy199;
+ if (yych <= ']') goto yy176;
+ goto yy197;
}
}
}
-yy224:
- YYDEBUG(224, *YYCURSOR);
+yy226:
+ YYDEBUG(226, *YYCURSOR);
++YYCURSOR;
yych = *YYCURSOR;
- goto yy179;
+ goto yy181;
}
/* *********************************** */
yyc_ST_VALUE:
@@ -2794,27 +2832,27 @@ yyc_ST_VALUE:
162, 162, 162, 162, 162, 162, 162, 162,
162, 162, 162, 162, 162, 162, 162, 162,
};
- YYDEBUG(225, *YYCURSOR);
+ YYDEBUG(227, *YYCURSOR);
YYFILL(6);
yych = *YYCURSOR;
YYDEBUG(-1, yych);
switch (yych) {
- case 0x00: goto yy227;
+ case 0x00: goto yy229;
case '\t':
- case ' ': goto yy231;
- case '\n': goto yy233;
- case '\r': goto yy235;
+ case ' ': goto yy233;
+ case '\n': goto yy235;
+ case '\r': goto yy237;
case '!':
case '&':
case '(':
case ')':
case '|':
- case '~': goto yy236;
- case '"': goto yy238;
- case '$': goto yy240;
- case '\'': goto yy241;
- case '-': goto yy242;
- case '.': goto yy243;
+ case '~': goto yy238;
+ case '"': goto yy240;
+ case '$': goto yy242;
+ case '\'': goto yy243;
+ case '-': goto yy244;
+ case '.': goto yy245;
case '0':
case '1':
case '2':
@@ -2824,9 +2862,9 @@ yyc_ST_VALUE:
case '6':
case '7':
case '8':
- case '9': goto yy244;
- case ';': goto yy246;
- case '=': goto yy247;
+ case '9': goto yy246;
+ case ';': goto yy248;
+ case '=': goto yy249;
case 'A':
case 'B':
case 'C':
@@ -2869,1529 +2907,1529 @@ yyc_ST_VALUE:
case 'v':
case 'w':
case 'x':
- case 'z': goto yy249;
+ case 'z': goto yy251;
case 'F':
- case 'f': goto yy251;
+ case 'f': goto yy253;
case 'N':
- case 'n': goto yy252;
+ case 'n': goto yy254;
case 'O':
- case 'o': goto yy253;
+ case 'o': goto yy255;
case 'T':
- case 't': goto yy254;
+ case 't': goto yy256;
case 'Y':
- case 'y': goto yy255;
- default: goto yy229;
+ case 'y': goto yy257;
+ default: goto yy231;
}
-yy227:
- YYDEBUG(227, *YYCURSOR);
+yy229:
+ YYDEBUG(229, *YYCURSOR);
++YYCURSOR;
-yy228:
- YYDEBUG(228, *YYCURSOR);
+yy230:
+ YYDEBUG(230, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 570 "Zend/zend_ini_scanner.l"
+#line 591 "Zend/zend_ini_scanner.l"
{ /* End of option value (if EOF is reached before EOL */
BEGIN(INITIAL);
return END_OF_LINE;
}
-#line 2897 "Zend/zend_ini_scanner.c"
-yy229:
- YYDEBUG(229, *YYCURSOR);
+#line 2935 "Zend/zend_ini_scanner.c"
+yy231:
+ YYDEBUG(231, *YYCURSOR);
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- goto yy257;
-yy230:
- YYDEBUG(230, *YYCURSOR);
+ goto yy259;
+yy232:
+ YYDEBUG(232, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 489 "Zend/zend_ini_scanner.l"
+#line 510 "Zend/zend_ini_scanner.l"
{ /* Get everything else as option/offset value */
RETURN_TOKEN(TC_STRING, yytext, yyleng);
}
-#line 2910 "Zend/zend_ini_scanner.c"
-yy231:
- YYDEBUG(231, *YYCURSOR);
+#line 2948 "Zend/zend_ini_scanner.c"
+yy233:
+ YYDEBUG(233, *YYCURSOR);
yyaccept = 1;
yych = *(YYMARKER = ++YYCURSOR);
- goto yy307;
-yy232:
- YYDEBUG(232, *YYCURSOR);
+ goto yy309;
+yy234:
+ YYDEBUG(234, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 543 "Zend/zend_ini_scanner.l"
+#line 564 "Zend/zend_ini_scanner.l"
{
RETURN_TOKEN(TC_WHITESPACE, yytext, yyleng);
}
-#line 2923 "Zend/zend_ini_scanner.c"
-yy233:
- YYDEBUG(233, *YYCURSOR);
+#line 2961 "Zend/zend_ini_scanner.c"
+yy235:
+ YYDEBUG(235, *YYCURSOR);
++YYCURSOR;
-yy234:
- YYDEBUG(234, *YYCURSOR);
+yy236:
+ YYDEBUG(236, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 461 "Zend/zend_ini_scanner.l"
+#line 482 "Zend/zend_ini_scanner.l"
{ /* End of option value */
BEGIN(INITIAL);
SCNG(lineno)++;
return END_OF_LINE;
}
-#line 2936 "Zend/zend_ini_scanner.c"
-yy235:
- YYDEBUG(235, *YYCURSOR);
+#line 2974 "Zend/zend_ini_scanner.c"
+yy237:
+ YYDEBUG(237, *YYCURSOR);
yych = *++YYCURSOR;
- if (yych == '\n') goto yy305;
- goto yy234;
-yy236:
- YYDEBUG(236, *YYCURSOR);
+ if (yych == '\n') goto yy307;
+ goto yy236;
+yy238:
+ YYDEBUG(238, *YYCURSOR);
++YYCURSOR;
yych = *YYCURSOR;
- goto yy304;
-yy237:
- YYDEBUG(237, *YYCURSOR);
+ goto yy306;
+yy239:
+ YYDEBUG(239, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 479 "Zend/zend_ini_scanner.l"
+#line 500 "Zend/zend_ini_scanner.l"
{ /* Boolean operators */
return yytext[0];
}
-#line 2954 "Zend/zend_ini_scanner.c"
-yy238:
- YYDEBUG(238, *YYCURSOR);
+#line 2992 "Zend/zend_ini_scanner.c"
+yy240:
+ YYDEBUG(240, *YYCURSOR);
++YYCURSOR;
-yy239:
- YYDEBUG(239, *YYCURSOR);
+yy241:
+ YYDEBUG(241, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 497 "Zend/zend_ini_scanner.l"
+#line 518 "Zend/zend_ini_scanner.l"
{ /* Double quoted '"' string start */
yy_push_state(ST_DOUBLE_QUOTES TSRMLS_CC);
return '"';
}
-#line 2966 "Zend/zend_ini_scanner.c"
-yy240:
- YYDEBUG(240, *YYCURSOR);
+#line 3004 "Zend/zend_ini_scanner.c"
+yy242:
+ YYDEBUG(242, *YYCURSOR);
yych = *++YYCURSOR;
if (yych <= '\\') {
- if (yych <= 0x00) goto yy228;
- if (yych <= '[') goto yy256;
- goto yy263;
+ if (yych <= 0x00) goto yy230;
+ if (yych <= '[') goto yy258;
+ goto yy265;
} else {
- if (yych == '{') goto yy301;
- goto yy256;
+ if (yych == '{') goto yy303;
+ goto yy258;
}
-yy241:
- YYDEBUG(241, *YYCURSOR);
+yy243:
+ YYDEBUG(243, *YYCURSOR);
yyaccept = 2;
yych = *(YYMARKER = ++YYCURSOR);
if (yybm[0+yych] & 128) {
- goto yy297;
+ goto yy299;
}
- goto yy228;
-yy242:
- YYDEBUG(242, *YYCURSOR);
+ goto yy230;
+yy244:
+ YYDEBUG(244, *YYCURSOR);
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '/') goto yy257;
- if (yych <= '9') goto yy295;
- goto yy257;
-yy243:
- YYDEBUG(243, *YYCURSOR);
+ if (yych <= '/') goto yy259;
+ if (yych <= '9') goto yy297;
+ goto yy259;
+yy245:
+ YYDEBUG(245, *YYCURSOR);
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '/') goto yy257;
- if (yych <= '9') goto yy293;
- goto yy257;
-yy244:
- YYDEBUG(244, *YYCURSOR);
+ if (yych <= '/') goto yy259;
+ if (yych <= '9') goto yy295;
+ goto yy259;
+yy246:
+ YYDEBUG(246, *YYCURSOR);
yyaccept = 3;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= '.') {
if (yych <= '\r') {
if (yych <= 0x08) {
- if (yych >= 0x01) goto yy257;
+ if (yych >= 0x01) goto yy259;
} else {
- if (yych <= '\n') goto yy245;
- if (yych <= '\f') goto yy257;
+ if (yych <= '\n') goto yy247;
+ if (yych <= '\f') goto yy259;
}
} else {
if (yych <= '%') {
- if (yych <= 0x1F) goto yy257;
- if (yych >= '#') goto yy257;
+ if (yych <= 0x1F) goto yy259;
+ if (yych >= '#') goto yy259;
} else {
- if (yych <= ')') goto yy245;
- if (yych <= '-') goto yy257;
- goto yy289;
+ if (yych <= ')') goto yy247;
+ if (yych <= '-') goto yy259;
+ goto yy291;
}
}
} else {
if (yych <= '<') {
if (yych <= '9') {
- if (yych <= '/') goto yy257;
- goto yy291;
+ if (yych <= '/') goto yy259;
+ goto yy293;
} else {
- if (yych != ';') goto yy257;
+ if (yych != ';') goto yy259;
}
} else {
if (yych <= '|') {
- if (yych <= '=') goto yy245;
- if (yych <= '{') goto yy257;
+ if (yych <= '=') goto yy247;
+ if (yych <= '{') goto yy259;
} else {
- if (yych != '~') goto yy257;
+ if (yych != '~') goto yy259;
}
}
}
-yy245:
- YYDEBUG(245, *YYCURSOR);
+yy247:
+ YYDEBUG(247, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 471 "Zend/zend_ini_scanner.l"
+#line 492 "Zend/zend_ini_scanner.l"
{ /* Get number option value as string */
RETURN_TOKEN(TC_NUMBER, yytext, yyleng);
}
-#line 3046 "Zend/zend_ini_scanner.c"
-yy246:
- YYDEBUG(246, *YYCURSOR);
+#line 3084 "Zend/zend_ini_scanner.c"
+yy248:
+ YYDEBUG(248, *YYCURSOR);
yyaccept = 2;
yych = *(YYMARKER = ++YYCURSOR);
- goto yy285;
-yy247:
- YYDEBUG(247, *YYCURSOR);
+ goto yy287;
+yy249:
+ YYDEBUG(249, *YYCURSOR);
++YYCURSOR;
- YYDEBUG(248, *YYCURSOR);
+ YYDEBUG(250, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 483 "Zend/zend_ini_scanner.l"
+#line 504 "Zend/zend_ini_scanner.l"
{ /* Make = used in option value to trigger error */
yyless(0);
BEGIN(INITIAL);
return END_OF_LINE;
}
-#line 3063 "Zend/zend_ini_scanner.c"
-yy249:
- YYDEBUG(249, *YYCURSOR);
+#line 3101 "Zend/zend_ini_scanner.c"
+yy251:
+ YYDEBUG(251, *YYCURSOR);
yyaccept = 4;
yych = *(YYMARKER = ++YYCURSOR);
if (yybm[0+yych] & 4) {
- goto yy258;
+ goto yy260;
}
if (yych <= ')') {
if (yych <= '\f') {
- if (yych <= 0x00) goto yy250;
- if (yych <= 0x08) goto yy257;
- if (yych >= '\v') goto yy257;
+ if (yych <= 0x00) goto yy252;
+ if (yych <= 0x08) goto yy259;
+ if (yych >= '\v') goto yy259;
} else {
if (yych <= 0x1F) {
- if (yych >= 0x0E) goto yy257;
+ if (yych >= 0x0E) goto yy259;
} else {
- if (yych <= '"') goto yy250;
- if (yych <= '%') goto yy257;
+ if (yych <= '"') goto yy252;
+ if (yych <= '%') goto yy259;
}
}
} else {
if (yych <= '=') {
- if (yych == ';') goto yy250;
- if (yych <= '<') goto yy257;
+ if (yych == ';') goto yy252;
+ if (yych <= '<') goto yy259;
} else {
if (yych <= '|') {
- if (yych <= '{') goto yy257;
+ if (yych <= '{') goto yy259;
} else {
- if (yych != '~') goto yy257;
+ if (yych != '~') goto yy259;
}
}
}
-yy250:
- YYDEBUG(250, *YYCURSOR);
+yy252:
+ YYDEBUG(252, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 467 "Zend/zend_ini_scanner.l"
+#line 488 "Zend/zend_ini_scanner.l"
{ /* Get constant option value */
RETURN_TOKEN(TC_CONSTANT, yytext, yyleng);
}
-#line 3103 "Zend/zend_ini_scanner.c"
-yy251:
- YYDEBUG(251, *YYCURSOR);
+#line 3141 "Zend/zend_ini_scanner.c"
+yy253:
+ YYDEBUG(253, *YYCURSOR);
yyaccept = 4;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= '<') {
if (yych <= '"') {
if (yych <= '\n') {
- if (yych <= 0x00) goto yy250;
- if (yych <= 0x08) goto yy257;
- goto yy250;
+ if (yych <= 0x00) goto yy252;
+ if (yych <= 0x08) goto yy259;
+ goto yy252;
} else {
- if (yych == '\r') goto yy250;
- if (yych <= 0x1F) goto yy257;
- goto yy250;
+ if (yych == '\r') goto yy252;
+ if (yych <= 0x1F) goto yy259;
+ goto yy252;
}
} else {
if (yych <= '/') {
- if (yych <= '%') goto yy257;
- if (yych <= ')') goto yy250;
- goto yy257;
+ if (yych <= '%') goto yy259;
+ if (yych <= ')') goto yy252;
+ goto yy259;
} else {
- if (yych <= '9') goto yy258;
- if (yych == ';') goto yy250;
- goto yy257;
+ if (yych <= '9') goto yy260;
+ if (yych == ';') goto yy252;
+ goto yy259;
}
}
} else {
if (yych <= '`') {
if (yych <= 'A') {
- if (yych <= '=') goto yy250;
- if (yych <= '@') goto yy257;
- goto yy281;
+ if (yych <= '=') goto yy252;
+ if (yych <= '@') goto yy259;
+ goto yy283;
} else {
- if (yych <= 'Z') goto yy258;
- if (yych == '_') goto yy258;
- goto yy257;
+ if (yych <= 'Z') goto yy260;
+ if (yych == '_') goto yy260;
+ goto yy259;
}
} else {
if (yych <= '{') {
- if (yych <= 'a') goto yy281;
- if (yych <= 'z') goto yy258;
- goto yy257;
+ if (yych <= 'a') goto yy283;
+ if (yych <= 'z') goto yy260;
+ goto yy259;
} else {
- if (yych == '}') goto yy257;
- if (yych <= '~') goto yy250;
- goto yy257;
+ if (yych == '}') goto yy259;
+ if (yych <= '~') goto yy252;
+ goto yy259;
}
}
}
-yy252:
- YYDEBUG(252, *YYCURSOR);
+yy254:
+ YYDEBUG(254, *YYCURSOR);
yyaccept = 4;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= 'N') {
if (yych <= '%') {
if (yych <= '\f') {
- if (yych <= 0x00) goto yy250;
- if (yych <= 0x08) goto yy257;
- if (yych <= '\n') goto yy250;
- goto yy257;
+ if (yych <= 0x00) goto yy252;
+ if (yych <= 0x08) goto yy259;
+ if (yych <= '\n') goto yy252;
+ goto yy259;
} else {
- if (yych <= '\r') goto yy250;
- if (yych <= 0x1F) goto yy257;
- if (yych <= '"') goto yy250;
- goto yy257;
+ if (yych <= '\r') goto yy252;
+ if (yych <= 0x1F) goto yy259;
+ if (yych <= '"') goto yy252;
+ goto yy259;
}
} else {
if (yych <= ':') {
- if (yych <= ')') goto yy250;
- if (yych <= '/') goto yy257;
- if (yych <= '9') goto yy258;
- goto yy257;
+ if (yych <= ')') goto yy252;
+ if (yych <= '/') goto yy259;
+ if (yych <= '9') goto yy260;
+ goto yy259;
} else {
if (yych <= '<') {
- if (yych <= ';') goto yy250;
- goto yy257;
+ if (yych <= ';') goto yy252;
+ goto yy259;
} else {
- if (yych <= '=') goto yy250;
- if (yych <= '@') goto yy257;
- goto yy258;
+ if (yych <= '=') goto yy252;
+ if (yych <= '@') goto yy259;
+ goto yy260;
}
}
}
} else {
if (yych <= 'n') {
if (yych <= 'Z') {
- if (yych <= 'O') goto yy277;
- if (yych == 'U') goto yy278;
- goto yy258;
+ if (yych <= 'O') goto yy279;
+ if (yych == 'U') goto yy280;
+ goto yy260;
} else {
- if (yych == '_') goto yy258;
- if (yych <= '`') goto yy257;
- goto yy258;
+ if (yych == '_') goto yy260;
+ if (yych <= '`') goto yy259;
+ goto yy260;
}
} else {
if (yych <= 'z') {
- if (yych <= 'o') goto yy277;
- if (yych == 'u') goto yy278;
- goto yy258;
+ if (yych <= 'o') goto yy279;
+ if (yych == 'u') goto yy280;
+ goto yy260;
} else {
if (yych <= '|') {
- if (yych <= '{') goto yy257;
- goto yy250;
+ if (yych <= '{') goto yy259;
+ goto yy252;
} else {
- if (yych == '~') goto yy250;
- goto yy257;
+ if (yych == '~') goto yy252;
+ goto yy259;
}
}
}
}
-yy253:
- YYDEBUG(253, *YYCURSOR);
+yy255:
+ YYDEBUG(255, *YYCURSOR);
yyaccept = 4;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= 'E') {
if (yych <= '%') {
if (yych <= '\f') {
- if (yych <= 0x00) goto yy250;
- if (yych <= 0x08) goto yy257;
- if (yych <= '\n') goto yy250;
- goto yy257;
+ if (yych <= 0x00) goto yy252;
+ if (yych <= 0x08) goto yy259;
+ if (yych <= '\n') goto yy252;
+ goto yy259;
} else {
- if (yych <= '\r') goto yy250;
- if (yych <= 0x1F) goto yy257;
- if (yych <= '"') goto yy250;
- goto yy257;
+ if (yych <= '\r') goto yy252;
+ if (yych <= 0x1F) goto yy259;
+ if (yych <= '"') goto yy252;
+ goto yy259;
}
} else {
if (yych <= ':') {
- if (yych <= ')') goto yy250;
- if (yych <= '/') goto yy257;
- if (yych <= '9') goto yy258;
- goto yy257;
+ if (yych <= ')') goto yy252;
+ if (yych <= '/') goto yy259;
+ if (yych <= '9') goto yy260;
+ goto yy259;
} else {
if (yych <= '<') {
- if (yych <= ';') goto yy250;
- goto yy257;
+ if (yych <= ';') goto yy252;
+ goto yy259;
} else {
- if (yych <= '=') goto yy250;
- if (yych <= '@') goto yy257;
- goto yy258;
+ if (yych <= '=') goto yy252;
+ if (yych <= '@') goto yy259;
+ goto yy260;
}
}
}
} else {
if (yych <= 'e') {
if (yych <= 'Z') {
- if (yych <= 'F') goto yy272;
- if (yych == 'N') goto yy266;
- goto yy258;
+ if (yych <= 'F') goto yy274;
+ if (yych == 'N') goto yy268;
+ goto yy260;
} else {
- if (yych == '_') goto yy258;
- if (yych <= '`') goto yy257;
- goto yy258;
+ if (yych == '_') goto yy260;
+ if (yych <= '`') goto yy259;
+ goto yy260;
}
} else {
if (yych <= 'z') {
- if (yych <= 'f') goto yy272;
- if (yych == 'n') goto yy266;
- goto yy258;
+ if (yych <= 'f') goto yy274;
+ if (yych == 'n') goto yy268;
+ goto yy260;
} else {
if (yych <= '|') {
- if (yych <= '{') goto yy257;
- goto yy250;
+ if (yych <= '{') goto yy259;
+ goto yy252;
} else {
- if (yych == '~') goto yy250;
- goto yy257;
+ if (yych == '~') goto yy252;
+ goto yy259;
}
}
}
}
-yy254:
- YYDEBUG(254, *YYCURSOR);
+yy256:
+ YYDEBUG(256, *YYCURSOR);
yyaccept = 4;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= '=') {
if (yych <= '"') {
if (yych <= '\n') {
- if (yych <= 0x00) goto yy250;
- if (yych <= 0x08) goto yy257;
- goto yy250;
+ if (yych <= 0x00) goto yy252;
+ if (yych <= 0x08) goto yy259;
+ goto yy252;
} else {
- if (yych == '\r') goto yy250;
- if (yych <= 0x1F) goto yy257;
- goto yy250;
+ if (yych == '\r') goto yy252;
+ if (yych <= 0x1F) goto yy259;
+ goto yy252;
}
} else {
if (yych <= '9') {
- if (yych <= '%') goto yy257;
- if (yych <= ')') goto yy250;
- if (yych <= '/') goto yy257;
- goto yy258;
+ if (yych <= '%') goto yy259;
+ if (yych <= ')') goto yy252;
+ if (yych <= '/') goto yy259;
+ goto yy260;
} else {
- if (yych == ';') goto yy250;
- if (yych <= '<') goto yy257;
- goto yy250;
+ if (yych == ';') goto yy252;
+ if (yych <= '<') goto yy259;
+ goto yy252;
}
}
} else {
if (yych <= '`') {
if (yych <= 'R') {
- if (yych <= '@') goto yy257;
- if (yych <= 'Q') goto yy258;
- goto yy270;
+ if (yych <= '@') goto yy259;
+ if (yych <= 'Q') goto yy260;
+ goto yy272;
} else {
- if (yych <= 'Z') goto yy258;
- if (yych == '_') goto yy258;
- goto yy257;
+ if (yych <= 'Z') goto yy260;
+ if (yych == '_') goto yy260;
+ goto yy259;
}
} else {
if (yych <= '{') {
- if (yych == 'r') goto yy270;
- if (yych <= 'z') goto yy258;
- goto yy257;
+ if (yych == 'r') goto yy272;
+ if (yych <= 'z') goto yy260;
+ goto yy259;
} else {
- if (yych == '}') goto yy257;
- if (yych <= '~') goto yy250;
- goto yy257;
+ if (yych == '}') goto yy259;
+ if (yych <= '~') goto yy252;
+ goto yy259;
}
}
}
-yy255:
- YYDEBUG(255, *YYCURSOR);
+yy257:
+ YYDEBUG(257, *YYCURSOR);
yyaccept = 4;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= '=') {
if (yych <= '"') {
if (yych <= '\n') {
- if (yych <= 0x00) goto yy250;
- if (yych <= 0x08) goto yy257;
- goto yy250;
+ if (yych <= 0x00) goto yy252;
+ if (yych <= 0x08) goto yy259;
+ goto yy252;
} else {
- if (yych == '\r') goto yy250;
- if (yych <= 0x1F) goto yy257;
- goto yy250;
+ if (yych == '\r') goto yy252;
+ if (yych <= 0x1F) goto yy259;
+ goto yy252;
}
} else {
if (yych <= '9') {
- if (yych <= '%') goto yy257;
- if (yych <= ')') goto yy250;
- if (yych <= '/') goto yy257;
- goto yy258;
+ if (yych <= '%') goto yy259;
+ if (yych <= ')') goto yy252;
+ if (yych <= '/') goto yy259;
+ goto yy260;
} else {
- if (yych == ';') goto yy250;
- if (yych <= '<') goto yy257;
- goto yy250;
+ if (yych == ';') goto yy252;
+ if (yych <= '<') goto yy259;
+ goto yy252;
}
}
} else {
if (yych <= '`') {
if (yych <= 'E') {
- if (yych <= '@') goto yy257;
- if (yych <= 'D') goto yy258;
- goto yy260;
+ if (yych <= '@') goto yy259;
+ if (yych <= 'D') goto yy260;
+ goto yy262;
} else {
- if (yych <= 'Z') goto yy258;
- if (yych == '_') goto yy258;
- goto yy257;
+ if (yych <= 'Z') goto yy260;
+ if (yych == '_') goto yy260;
+ goto yy259;
}
} else {
if (yych <= '{') {
- if (yych == 'e') goto yy260;
- if (yych <= 'z') goto yy258;
- goto yy257;
+ if (yych == 'e') goto yy262;
+ if (yych <= 'z') goto yy260;
+ goto yy259;
} else {
- if (yych == '}') goto yy257;
- if (yych <= '~') goto yy250;
- goto yy257;
+ if (yych == '}') goto yy259;
+ if (yych <= '~') goto yy252;
+ goto yy259;
}
}
}
-yy256:
- YYDEBUG(256, *YYCURSOR);
+yy258:
+ YYDEBUG(258, *YYCURSOR);
yyaccept = 0;
YYMARKER = ++YYCURSOR;
YYFILL(1);
yych = *YYCURSOR;
-yy257:
- YYDEBUG(257, *YYCURSOR);
+yy259:
+ YYDEBUG(259, *YYCURSOR);
if (yybm[0+yych] & 2) {
- goto yy256;
+ goto yy258;
}
- if (yych == '$') goto yy261;
- goto yy230;
-yy258:
- YYDEBUG(258, *YYCURSOR);
+ if (yych == '$') goto yy263;
+ goto yy232;
+yy260:
+ YYDEBUG(260, *YYCURSOR);
yyaccept = 4;
YYMARKER = ++YYCURSOR;
YYFILL(1);
yych = *YYCURSOR;
- YYDEBUG(259, *YYCURSOR);
+ YYDEBUG(261, *YYCURSOR);
if (yybm[0+yych] & 4) {
- goto yy258;
+ goto yy260;
}
if (yych <= '%') {
if (yych <= '\r') {
if (yych <= 0x08) {
- if (yych <= 0x00) goto yy250;
- goto yy256;
+ if (yych <= 0x00) goto yy252;
+ goto yy258;
} else {
- if (yych <= '\n') goto yy250;
- if (yych <= '\f') goto yy256;
- goto yy250;
+ if (yych <= '\n') goto yy252;
+ if (yych <= '\f') goto yy258;
+ goto yy252;
}
} else {
if (yych <= '"') {
- if (yych <= 0x1F) goto yy256;
- goto yy250;
+ if (yych <= 0x1F) goto yy258;
+ goto yy252;
} else {
- if (yych == '$') goto yy261;
- goto yy256;
+ if (yych == '$') goto yy263;
+ goto yy258;
}
}
} else {
if (yych <= '=') {
if (yych <= ':') {
- if (yych <= ')') goto yy250;
- goto yy256;
+ if (yych <= ')') goto yy252;
+ goto yy258;
} else {
- if (yych == '<') goto yy256;
- goto yy250;
+ if (yych == '<') goto yy258;
+ goto yy252;
}
} else {
if (yych <= '|') {
- if (yych <= '{') goto yy256;
- goto yy250;
+ if (yych <= '{') goto yy258;
+ goto yy252;
} else {
- if (yych == '~') goto yy250;
- goto yy256;
+ if (yych == '~') goto yy252;
+ goto yy258;
}
}
}
-yy260:
- YYDEBUG(260, *YYCURSOR);
+yy262:
+ YYDEBUG(262, *YYCURSOR);
yyaccept = 4;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= '=') {
if (yych <= '"') {
if (yych <= '\n') {
- if (yych <= 0x00) goto yy250;
- if (yych <= 0x08) goto yy257;
- goto yy250;
+ if (yych <= 0x00) goto yy252;
+ if (yych <= 0x08) goto yy259;
+ goto yy252;
} else {
- if (yych == '\r') goto yy250;
- if (yych <= 0x1F) goto yy257;
- goto yy250;
+ if (yych == '\r') goto yy252;
+ if (yych <= 0x1F) goto yy259;
+ goto yy252;
}
} else {
if (yych <= '9') {
- if (yych <= '%') goto yy257;
- if (yych <= ')') goto yy250;
- if (yych <= '/') goto yy257;
- goto yy258;
+ if (yych <= '%') goto yy259;
+ if (yych <= ')') goto yy252;
+ if (yych <= '/') goto yy259;
+ goto yy260;
} else {
- if (yych == ';') goto yy250;
- if (yych <= '<') goto yy257;
- goto yy250;
+ if (yych == ';') goto yy252;
+ if (yych <= '<') goto yy259;
+ goto yy252;
}
}
} else {
if (yych <= '`') {
if (yych <= 'S') {
- if (yych <= '@') goto yy257;
- if (yych <= 'R') goto yy258;
- goto yy266;
+ if (yych <= '@') goto yy259;
+ if (yych <= 'R') goto yy260;
+ goto yy268;
} else {
- if (yych <= 'Z') goto yy258;
- if (yych == '_') goto yy258;
- goto yy257;
+ if (yych <= 'Z') goto yy260;
+ if (yych == '_') goto yy260;
+ goto yy259;
}
} else {
if (yych <= '{') {
- if (yych == 's') goto yy266;
- if (yych <= 'z') goto yy258;
- goto yy257;
+ if (yych == 's') goto yy268;
+ if (yych <= 'z') goto yy260;
+ goto yy259;
} else {
- if (yych == '}') goto yy257;
- if (yych <= '~') goto yy250;
- goto yy257;
+ if (yych == '}') goto yy259;
+ if (yych <= '~') goto yy252;
+ goto yy259;
}
}
}
-yy261:
- YYDEBUG(261, *YYCURSOR);
+yy263:
+ YYDEBUG(263, *YYCURSOR);
++YYCURSOR;
YYFILL(1);
yych = *YYCURSOR;
if (yych <= '\\') {
- if (yych <= 0x00) goto yy262;
- if (yych <= '[') goto yy256;
- goto yy263;
+ if (yych <= 0x00) goto yy264;
+ if (yych <= '[') goto yy258;
+ goto yy265;
} else {
- if (yych != '{') goto yy256;
+ if (yych != '{') goto yy258;
}
-yy262:
- YYDEBUG(262, *YYCURSOR);
+yy264:
+ YYDEBUG(264, *YYCURSOR);
YYCURSOR = YYMARKER;
if (yyaccept <= 3) {
if (yyaccept <= 1) {
if (yyaccept <= 0) {
- goto yy230;
- } else {
goto yy232;
+ } else {
+ goto yy234;
}
} else {
if (yyaccept <= 2) {
- goto yy228;
+ goto yy230;
} else {
- goto yy245;
+ goto yy247;
}
}
} else {
if (yyaccept <= 5) {
if (yyaccept <= 4) {
- goto yy250;
+ goto yy252;
} else {
- goto yy267;
+ goto yy269;
}
} else {
- goto yy274;
+ goto yy276;
}
}
-yy263:
- YYDEBUG(263, *YYCURSOR);
+yy265:
+ YYDEBUG(265, *YYCURSOR);
++YYCURSOR;
YYFILL(1);
yych = *YYCURSOR;
if (yybm[0+yych] & 8) {
- goto yy264;
+ goto yy266;
}
- goto yy256;
-yy264:
- YYDEBUG(264, *YYCURSOR);
+ goto yy258;
+yy266:
+ YYDEBUG(266, *YYCURSOR);
++YYCURSOR;
YYFILL(1);
yych = *YYCURSOR;
- YYDEBUG(265, *YYCURSOR);
+ YYDEBUG(267, *YYCURSOR);
if (yybm[0+yych] & 8) {
- goto yy264;
+ goto yy266;
}
- if (yych <= 0x00) goto yy230;
- if (yych == '\\') goto yy263;
- goto yy256;
-yy266:
- YYDEBUG(266, *YYCURSOR);
+ if (yych <= 0x00) goto yy232;
+ if (yych == '\\') goto yy265;
+ goto yy258;
+yy268:
+ YYDEBUG(268, *YYCURSOR);
yyaccept = 5;
yych = *(YYMARKER = ++YYCURSOR);
if (yybm[0+yych] & 16) {
- goto yy268;
+ goto yy270;
}
if (yych <= ';') {
if (yych <= ' ') {
if (yych <= '\n') {
- if (yych <= 0x00) goto yy267;
- if (yych <= '\t') goto yy257;
+ if (yych <= 0x00) goto yy269;
+ if (yych <= '\t') goto yy259;
} else {
- if (yych != '\r') goto yy257;
+ if (yych != '\r') goto yy259;
}
} else {
if (yych <= ')') {
- if (yych <= '"') goto yy267;
- if (yych <= '%') goto yy257;
+ if (yych <= '"') goto yy269;
+ if (yych <= '%') goto yy259;
} else {
- if (yych <= '/') goto yy257;
- if (yych <= '9') goto yy258;
- if (yych <= ':') goto yy257;
+ if (yych <= '/') goto yy259;
+ if (yych <= '9') goto yy260;
+ if (yych <= ':') goto yy259;
}
}
} else {
if (yych <= '_') {
if (yych <= '@') {
- if (yych != '=') goto yy257;
+ if (yych != '=') goto yy259;
} else {
- if (yych <= 'Z') goto yy258;
- if (yych <= '^') goto yy257;
- goto yy258;
+ if (yych <= 'Z') goto yy260;
+ if (yych <= '^') goto yy259;
+ goto yy260;
}
} else {
if (yych <= '{') {
- if (yych <= '`') goto yy257;
- if (yych <= 'z') goto yy258;
- goto yy257;
+ if (yych <= '`') goto yy259;
+ if (yych <= 'z') goto yy260;
+ goto yy259;
} else {
- if (yych == '}') goto yy257;
- if (yych >= 0x7F) goto yy257;
+ if (yych == '}') goto yy259;
+ if (yych >= 0x7F) goto yy259;
}
}
}
-yy267:
- YYDEBUG(267, *YYCURSOR);
+yy269:
+ YYDEBUG(269, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
#line 421 "Zend/zend_ini_scanner.l"
{ /* TRUE value (when used outside option value/offset this causes parse error!) */
RETURN_TOKEN(BOOL_TRUE, "1", 1);
}
-#line 3599 "Zend/zend_ini_scanner.c"
-yy268:
- YYDEBUG(268, *YYCURSOR);
+#line 3637 "Zend/zend_ini_scanner.c"
+yy270:
+ YYDEBUG(270, *YYCURSOR);
++YYCURSOR;
YYFILL(1);
yych = *YYCURSOR;
- YYDEBUG(269, *YYCURSOR);
+ YYDEBUG(271, *YYCURSOR);
if (yybm[0+yych] & 16) {
- goto yy268;
+ goto yy270;
}
- goto yy267;
-yy270:
- YYDEBUG(270, *YYCURSOR);
+ goto yy269;
+yy272:
+ YYDEBUG(272, *YYCURSOR);
yyaccept = 4;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= '=') {
if (yych <= '"') {
if (yych <= '\n') {
- if (yych <= 0x00) goto yy250;
- if (yych <= 0x08) goto yy257;
- goto yy250;
+ if (yych <= 0x00) goto yy252;
+ if (yych <= 0x08) goto yy259;
+ goto yy252;
} else {
- if (yych == '\r') goto yy250;
- if (yych <= 0x1F) goto yy257;
- goto yy250;
+ if (yych == '\r') goto yy252;
+ if (yych <= 0x1F) goto yy259;
+ goto yy252;
}
} else {
if (yych <= '9') {
- if (yych <= '%') goto yy257;
- if (yych <= ')') goto yy250;
- if (yych <= '/') goto yy257;
- goto yy258;
+ if (yych <= '%') goto yy259;
+ if (yych <= ')') goto yy252;
+ if (yych <= '/') goto yy259;
+ goto yy260;
} else {
- if (yych == ';') goto yy250;
- if (yych <= '<') goto yy257;
- goto yy250;
+ if (yych == ';') goto yy252;
+ if (yych <= '<') goto yy259;
+ goto yy252;
}
}
} else {
if (yych <= '`') {
if (yych <= 'U') {
- if (yych <= '@') goto yy257;
- if (yych <= 'T') goto yy258;
+ if (yych <= '@') goto yy259;
+ if (yych <= 'T') goto yy260;
} else {
- if (yych <= 'Z') goto yy258;
- if (yych == '_') goto yy258;
- goto yy257;
+ if (yych <= 'Z') goto yy260;
+ if (yych == '_') goto yy260;
+ goto yy259;
}
} else {
if (yych <= '{') {
- if (yych == 'u') goto yy271;
- if (yych <= 'z') goto yy258;
- goto yy257;
+ if (yych == 'u') goto yy273;
+ if (yych <= 'z') goto yy260;
+ goto yy259;
} else {
- if (yych == '}') goto yy257;
- if (yych <= '~') goto yy250;
- goto yy257;
+ if (yych == '}') goto yy259;
+ if (yych <= '~') goto yy252;
+ goto yy259;
}
}
}
-yy271:
- YYDEBUG(271, *YYCURSOR);
+yy273:
+ YYDEBUG(273, *YYCURSOR);
yyaccept = 4;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= '=') {
if (yych <= '"') {
if (yych <= '\n') {
- if (yych <= 0x00) goto yy250;
- if (yych <= 0x08) goto yy257;
- goto yy250;
+ if (yych <= 0x00) goto yy252;
+ if (yych <= 0x08) goto yy259;
+ goto yy252;
} else {
- if (yych == '\r') goto yy250;
- if (yych <= 0x1F) goto yy257;
- goto yy250;
+ if (yych == '\r') goto yy252;
+ if (yych <= 0x1F) goto yy259;
+ goto yy252;
}
} else {
if (yych <= '9') {
- if (yych <= '%') goto yy257;
- if (yych <= ')') goto yy250;
- if (yych <= '/') goto yy257;
- goto yy258;
+ if (yych <= '%') goto yy259;
+ if (yych <= ')') goto yy252;
+ if (yych <= '/') goto yy259;
+ goto yy260;
} else {
- if (yych == ';') goto yy250;
- if (yych <= '<') goto yy257;
- goto yy250;
+ if (yych == ';') goto yy252;
+ if (yych <= '<') goto yy259;
+ goto yy252;
}
}
} else {
if (yych <= '`') {
if (yych <= 'E') {
- if (yych <= '@') goto yy257;
- if (yych <= 'D') goto yy258;
- goto yy266;
+ if (yych <= '@') goto yy259;
+ if (yych <= 'D') goto yy260;
+ goto yy268;
} else {
- if (yych <= 'Z') goto yy258;
- if (yych == '_') goto yy258;
- goto yy257;
+ if (yych <= 'Z') goto yy260;
+ if (yych == '_') goto yy260;
+ goto yy259;
}
} else {
if (yych <= '{') {
- if (yych == 'e') goto yy266;
- if (yych <= 'z') goto yy258;
- goto yy257;
+ if (yych == 'e') goto yy268;
+ if (yych <= 'z') goto yy260;
+ goto yy259;
} else {
- if (yych == '}') goto yy257;
- if (yych <= '~') goto yy250;
- goto yy257;
+ if (yych == '}') goto yy259;
+ if (yych <= '~') goto yy252;
+ goto yy259;
}
}
}
-yy272:
- YYDEBUG(272, *YYCURSOR);
+yy274:
+ YYDEBUG(274, *YYCURSOR);
yyaccept = 4;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= '=') {
if (yych <= '"') {
if (yych <= '\n') {
- if (yych <= 0x00) goto yy250;
- if (yych <= 0x08) goto yy257;
- goto yy250;
+ if (yych <= 0x00) goto yy252;
+ if (yych <= 0x08) goto yy259;
+ goto yy252;
} else {
- if (yych == '\r') goto yy250;
- if (yych <= 0x1F) goto yy257;
- goto yy250;
+ if (yych == '\r') goto yy252;
+ if (yych <= 0x1F) goto yy259;
+ goto yy252;
}
} else {
if (yych <= '9') {
- if (yych <= '%') goto yy257;
- if (yych <= ')') goto yy250;
- if (yych <= '/') goto yy257;
- goto yy258;
+ if (yych <= '%') goto yy259;
+ if (yych <= ')') goto yy252;
+ if (yych <= '/') goto yy259;
+ goto yy260;
} else {
- if (yych == ';') goto yy250;
- if (yych <= '<') goto yy257;
- goto yy250;
+ if (yych == ';') goto yy252;
+ if (yych <= '<') goto yy259;
+ goto yy252;
}
}
} else {
if (yych <= '`') {
if (yych <= 'F') {
- if (yych <= '@') goto yy257;
- if (yych <= 'E') goto yy258;
+ if (yych <= '@') goto yy259;
+ if (yych <= 'E') goto yy260;
} else {
- if (yych <= 'Z') goto yy258;
- if (yych == '_') goto yy258;
- goto yy257;
+ if (yych <= 'Z') goto yy260;
+ if (yych == '_') goto yy260;
+ goto yy259;
}
} else {
if (yych <= '{') {
- if (yych == 'f') goto yy273;
- if (yych <= 'z') goto yy258;
- goto yy257;
+ if (yych == 'f') goto yy275;
+ if (yych <= 'z') goto yy260;
+ goto yy259;
} else {
- if (yych == '}') goto yy257;
- if (yych <= '~') goto yy250;
- goto yy257;
+ if (yych == '}') goto yy259;
+ if (yych <= '~') goto yy252;
+ goto yy259;
}
}
}
-yy273:
- YYDEBUG(273, *YYCURSOR);
+yy275:
+ YYDEBUG(275, *YYCURSOR);
yyaccept = 6;
yych = *(YYMARKER = ++YYCURSOR);
if (yybm[0+yych] & 4) {
- goto yy258;
+ goto yy260;
}
if (yych <= '%') {
if (yych <= '\f') {
if (yych <= 0x08) {
- if (yych >= 0x01) goto yy257;
+ if (yych >= 0x01) goto yy259;
} else {
- if (yych <= '\t') goto yy275;
- if (yych >= '\v') goto yy257;
+ if (yych <= '\t') goto yy277;
+ if (yych >= '\v') goto yy259;
}
} else {
if (yych <= 0x1F) {
- if (yych >= 0x0E) goto yy257;
+ if (yych >= 0x0E) goto yy259;
} else {
- if (yych <= ' ') goto yy275;
- if (yych >= '#') goto yy257;
+ if (yych <= ' ') goto yy277;
+ if (yych >= '#') goto yy259;
}
}
} else {
if (yych <= '=') {
if (yych <= ':') {
- if (yych >= '*') goto yy257;
+ if (yych >= '*') goto yy259;
} else {
- if (yych == '<') goto yy257;
+ if (yych == '<') goto yy259;
}
} else {
if (yych <= '|') {
- if (yych <= '{') goto yy257;
+ if (yych <= '{') goto yy259;
} else {
- if (yych != '~') goto yy257;
+ if (yych != '~') goto yy259;
}
}
}
-yy274:
- YYDEBUG(274, *YYCURSOR);
+yy276:
+ YYDEBUG(276, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
#line 425 "Zend/zend_ini_scanner.l"
{ /* FALSE value (when used outside option value/offset this causes parse error!)*/
RETURN_TOKEN(BOOL_FALSE, "", 0);
}
-#line 3803 "Zend/zend_ini_scanner.c"
-yy275:
- YYDEBUG(275, *YYCURSOR);
+#line 3841 "Zend/zend_ini_scanner.c"
+yy277:
+ YYDEBUG(277, *YYCURSOR);
++YYCURSOR;
YYFILL(1);
yych = *YYCURSOR;
- YYDEBUG(276, *YYCURSOR);
- if (yych == '\t') goto yy275;
- if (yych == ' ') goto yy275;
- goto yy274;
-yy277:
- YYDEBUG(277, *YYCURSOR);
+ YYDEBUG(278, *YYCURSOR);
+ if (yych == '\t') goto yy277;
+ if (yych == ' ') goto yy277;
+ goto yy276;
+yy279:
+ YYDEBUG(279, *YYCURSOR);
yyaccept = 6;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= '<') {
if (yych <= ' ') {
if (yych <= '\n') {
- if (yych <= 0x00) goto yy274;
- if (yych <= 0x08) goto yy257;
- if (yych <= '\t') goto yy275;
- goto yy274;
+ if (yych <= 0x00) goto yy276;
+ if (yych <= 0x08) goto yy259;
+ if (yych <= '\t') goto yy277;
+ goto yy276;
} else {
- if (yych == '\r') goto yy274;
- if (yych <= 0x1F) goto yy257;
- goto yy275;
+ if (yych == '\r') goto yy276;
+ if (yych <= 0x1F) goto yy259;
+ goto yy277;
}
} else {
if (yych <= '/') {
- if (yych <= '"') goto yy274;
- if (yych <= '%') goto yy257;
- if (yych <= ')') goto yy274;
- goto yy257;
+ if (yych <= '"') goto yy276;
+ if (yych <= '%') goto yy259;
+ if (yych <= ')') goto yy276;
+ goto yy259;
} else {
- if (yych <= '9') goto yy258;
- if (yych == ';') goto yy274;
- goto yy257;
+ if (yych <= '9') goto yy260;
+ if (yych == ';') goto yy276;
+ goto yy259;
}
}
} else {
if (yych <= '`') {
if (yych <= 'N') {
- if (yych <= '=') goto yy274;
- if (yych <= '@') goto yy257;
- if (yych <= 'M') goto yy258;
- goto yy280;
+ if (yych <= '=') goto yy276;
+ if (yych <= '@') goto yy259;
+ if (yych <= 'M') goto yy260;
+ goto yy282;
} else {
- if (yych <= 'Z') goto yy258;
- if (yych == '_') goto yy258;
- goto yy257;
+ if (yych <= 'Z') goto yy260;
+ if (yych == '_') goto yy260;
+ goto yy259;
}
} else {
if (yych <= '{') {
- if (yych == 'n') goto yy280;
- if (yych <= 'z') goto yy258;
- goto yy257;
+ if (yych == 'n') goto yy282;
+ if (yych <= 'z') goto yy260;
+ goto yy259;
} else {
- if (yych == '}') goto yy257;
- if (yych <= '~') goto yy274;
- goto yy257;
+ if (yych == '}') goto yy259;
+ if (yych <= '~') goto yy276;
+ goto yy259;
}
}
}
-yy278:
- YYDEBUG(278, *YYCURSOR);
+yy280:
+ YYDEBUG(280, *YYCURSOR);
yyaccept = 4;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= '=') {
if (yych <= '"') {
if (yych <= '\n') {
- if (yych <= 0x00) goto yy250;
- if (yych <= 0x08) goto yy257;
- goto yy250;
+ if (yych <= 0x00) goto yy252;
+ if (yych <= 0x08) goto yy259;
+ goto yy252;
} else {
- if (yych == '\r') goto yy250;
- if (yych <= 0x1F) goto yy257;
- goto yy250;
+ if (yych == '\r') goto yy252;
+ if (yych <= 0x1F) goto yy259;
+ goto yy252;
}
} else {
if (yych <= '9') {
- if (yych <= '%') goto yy257;
- if (yych <= ')') goto yy250;
- if (yych <= '/') goto yy257;
- goto yy258;
+ if (yych <= '%') goto yy259;
+ if (yych <= ')') goto yy252;
+ if (yych <= '/') goto yy259;
+ goto yy260;
} else {
- if (yych == ';') goto yy250;
- if (yych <= '<') goto yy257;
- goto yy250;
+ if (yych == ';') goto yy252;
+ if (yych <= '<') goto yy259;
+ goto yy252;
}
}
} else {
if (yych <= '`') {
if (yych <= 'L') {
- if (yych <= '@') goto yy257;
- if (yych <= 'K') goto yy258;
+ if (yych <= '@') goto yy259;
+ if (yych <= 'K') goto yy260;
} else {
- if (yych <= 'Z') goto yy258;
- if (yych == '_') goto yy258;
- goto yy257;
+ if (yych <= 'Z') goto yy260;
+ if (yych == '_') goto yy260;
+ goto yy259;
}
} else {
if (yych <= '{') {
- if (yych == 'l') goto yy279;
- if (yych <= 'z') goto yy258;
- goto yy257;
+ if (yych == 'l') goto yy281;
+ if (yych <= 'z') goto yy260;
+ goto yy259;
} else {
- if (yych == '}') goto yy257;
- if (yych <= '~') goto yy250;
- goto yy257;
+ if (yych == '}') goto yy259;
+ if (yych <= '~') goto yy252;
+ goto yy259;
}
}
}
-yy279:
- YYDEBUG(279, *YYCURSOR);
+yy281:
+ YYDEBUG(281, *YYCURSOR);
yyaccept = 4;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= '=') {
if (yych <= '"') {
if (yych <= '\n') {
- if (yych <= 0x00) goto yy250;
- if (yych <= 0x08) goto yy257;
- goto yy250;
+ if (yych <= 0x00) goto yy252;
+ if (yych <= 0x08) goto yy259;
+ goto yy252;
} else {
- if (yych == '\r') goto yy250;
- if (yych <= 0x1F) goto yy257;
- goto yy250;
+ if (yych == '\r') goto yy252;
+ if (yych <= 0x1F) goto yy259;
+ goto yy252;
}
} else {
if (yych <= '9') {
- if (yych <= '%') goto yy257;
- if (yych <= ')') goto yy250;
- if (yych <= '/') goto yy257;
- goto yy258;
+ if (yych <= '%') goto yy259;
+ if (yych <= ')') goto yy252;
+ if (yych <= '/') goto yy259;
+ goto yy260;
} else {
- if (yych == ';') goto yy250;
- if (yych <= '<') goto yy257;
- goto yy250;
+ if (yych == ';') goto yy252;
+ if (yych <= '<') goto yy259;
+ goto yy252;
}
}
} else {
if (yych <= '`') {
if (yych <= 'L') {
- if (yych <= '@') goto yy257;
- if (yych <= 'K') goto yy258;
- goto yy273;
+ if (yych <= '@') goto yy259;
+ if (yych <= 'K') goto yy260;
+ goto yy275;
} else {
- if (yych <= 'Z') goto yy258;
- if (yych == '_') goto yy258;
- goto yy257;
+ if (yych <= 'Z') goto yy260;
+ if (yych == '_') goto yy260;
+ goto yy259;
}
} else {
if (yych <= '{') {
- if (yych == 'l') goto yy273;
- if (yych <= 'z') goto yy258;
- goto yy257;
+ if (yych == 'l') goto yy275;
+ if (yych <= 'z') goto yy260;
+ goto yy259;
} else {
- if (yych == '}') goto yy257;
- if (yych <= '~') goto yy250;
- goto yy257;
+ if (yych == '}') goto yy259;
+ if (yych <= '~') goto yy252;
+ goto yy259;
}
}
}
-yy280:
- YYDEBUG(280, *YYCURSOR);
+yy282:
+ YYDEBUG(282, *YYCURSOR);
yyaccept = 4;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= '=') {
if (yych <= '"') {
if (yych <= '\n') {
- if (yych <= 0x00) goto yy250;
- if (yych <= 0x08) goto yy257;
- goto yy250;
+ if (yych <= 0x00) goto yy252;
+ if (yych <= 0x08) goto yy259;
+ goto yy252;
} else {
- if (yych == '\r') goto yy250;
- if (yych <= 0x1F) goto yy257;
- goto yy250;
+ if (yych == '\r') goto yy252;
+ if (yych <= 0x1F) goto yy259;
+ goto yy252;
}
} else {
if (yych <= '9') {
- if (yych <= '%') goto yy257;
- if (yych <= ')') goto yy250;
- if (yych <= '/') goto yy257;
- goto yy258;
+ if (yych <= '%') goto yy259;
+ if (yych <= ')') goto yy252;
+ if (yych <= '/') goto yy259;
+ goto yy260;
} else {
- if (yych == ';') goto yy250;
- if (yych <= '<') goto yy257;
- goto yy250;
+ if (yych == ';') goto yy252;
+ if (yych <= '<') goto yy259;
+ goto yy252;
}
}
} else {
if (yych <= '`') {
if (yych <= 'E') {
- if (yych <= '@') goto yy257;
- if (yych <= 'D') goto yy258;
- goto yy273;
+ if (yych <= '@') goto yy259;
+ if (yych <= 'D') goto yy260;
+ goto yy275;
} else {
- if (yych <= 'Z') goto yy258;
- if (yych == '_') goto yy258;
- goto yy257;
+ if (yych <= 'Z') goto yy260;
+ if (yych == '_') goto yy260;
+ goto yy259;
}
} else {
if (yych <= '{') {
- if (yych == 'e') goto yy273;
- if (yych <= 'z') goto yy258;
- goto yy257;
+ if (yych == 'e') goto yy275;
+ if (yych <= 'z') goto yy260;
+ goto yy259;
} else {
- if (yych == '}') goto yy257;
- if (yych <= '~') goto yy250;
- goto yy257;
+ if (yych == '}') goto yy259;
+ if (yych <= '~') goto yy252;
+ goto yy259;
}
}
}
-yy281:
- YYDEBUG(281, *YYCURSOR);
+yy283:
+ YYDEBUG(283, *YYCURSOR);
yyaccept = 4;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= '=') {
if (yych <= '"') {
if (yych <= '\n') {
- if (yych <= 0x00) goto yy250;
- if (yych <= 0x08) goto yy257;
- goto yy250;
+ if (yych <= 0x00) goto yy252;
+ if (yych <= 0x08) goto yy259;
+ goto yy252;
} else {
- if (yych == '\r') goto yy250;
- if (yych <= 0x1F) goto yy257;
- goto yy250;
+ if (yych == '\r') goto yy252;
+ if (yych <= 0x1F) goto yy259;
+ goto yy252;
}
} else {
if (yych <= '9') {
- if (yych <= '%') goto yy257;
- if (yych <= ')') goto yy250;
- if (yych <= '/') goto yy257;
- goto yy258;
+ if (yych <= '%') goto yy259;
+ if (yych <= ')') goto yy252;
+ if (yych <= '/') goto yy259;
+ goto yy260;
} else {
- if (yych == ';') goto yy250;
- if (yych <= '<') goto yy257;
- goto yy250;
+ if (yych == ';') goto yy252;
+ if (yych <= '<') goto yy259;
+ goto yy252;
}
}
} else {
if (yych <= '`') {
if (yych <= 'L') {
- if (yych <= '@') goto yy257;
- if (yych <= 'K') goto yy258;
+ if (yych <= '@') goto yy259;
+ if (yych <= 'K') goto yy260;
} else {
- if (yych <= 'Z') goto yy258;
- if (yych == '_') goto yy258;
- goto yy257;
+ if (yych <= 'Z') goto yy260;
+ if (yych == '_') goto yy260;
+ goto yy259;
}
} else {
if (yych <= '{') {
- if (yych == 'l') goto yy282;
- if (yych <= 'z') goto yy258;
- goto yy257;
+ if (yych == 'l') goto yy284;
+ if (yych <= 'z') goto yy260;
+ goto yy259;
} else {
- if (yych == '}') goto yy257;
- if (yych <= '~') goto yy250;
- goto yy257;
+ if (yych == '}') goto yy259;
+ if (yych <= '~') goto yy252;
+ goto yy259;
}
}
}
-yy282:
- YYDEBUG(282, *YYCURSOR);
+yy284:
+ YYDEBUG(284, *YYCURSOR);
yyaccept = 4;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= '=') {
if (yych <= '"') {
if (yych <= '\n') {
- if (yych <= 0x00) goto yy250;
- if (yych <= 0x08) goto yy257;
- goto yy250;
+ if (yych <= 0x00) goto yy252;
+ if (yych <= 0x08) goto yy259;
+ goto yy252;
} else {
- if (yych == '\r') goto yy250;
- if (yych <= 0x1F) goto yy257;
- goto yy250;
+ if (yych == '\r') goto yy252;
+ if (yych <= 0x1F) goto yy259;
+ goto yy252;
}
} else {
if (yych <= '9') {
- if (yych <= '%') goto yy257;
- if (yych <= ')') goto yy250;
- if (yych <= '/') goto yy257;
- goto yy258;
+ if (yych <= '%') goto yy259;
+ if (yych <= ')') goto yy252;
+ if (yych <= '/') goto yy259;
+ goto yy260;
} else {
- if (yych == ';') goto yy250;
- if (yych <= '<') goto yy257;
- goto yy250;
+ if (yych == ';') goto yy252;
+ if (yych <= '<') goto yy259;
+ goto yy252;
}
}
} else {
if (yych <= '`') {
if (yych <= 'S') {
- if (yych <= '@') goto yy257;
- if (yych <= 'R') goto yy258;
+ if (yych <= '@') goto yy259;
+ if (yych <= 'R') goto yy260;
} else {
- if (yych <= 'Z') goto yy258;
- if (yych == '_') goto yy258;
- goto yy257;
+ if (yych <= 'Z') goto yy260;
+ if (yych == '_') goto yy260;
+ goto yy259;
}
} else {
if (yych <= '{') {
- if (yych == 's') goto yy283;
- if (yych <= 'z') goto yy258;
- goto yy257;
+ if (yych == 's') goto yy285;
+ if (yych <= 'z') goto yy260;
+ goto yy259;
} else {
- if (yych == '}') goto yy257;
- if (yych <= '~') goto yy250;
- goto yy257;
+ if (yych == '}') goto yy259;
+ if (yych <= '~') goto yy252;
+ goto yy259;
}
}
}
-yy283:
- YYDEBUG(283, *YYCURSOR);
+yy285:
+ YYDEBUG(285, *YYCURSOR);
yyaccept = 4;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= '=') {
if (yych <= '"') {
if (yych <= '\n') {
- if (yych <= 0x00) goto yy250;
- if (yych <= 0x08) goto yy257;
- goto yy250;
+ if (yych <= 0x00) goto yy252;
+ if (yych <= 0x08) goto yy259;
+ goto yy252;
} else {
- if (yych == '\r') goto yy250;
- if (yych <= 0x1F) goto yy257;
- goto yy250;
+ if (yych == '\r') goto yy252;
+ if (yych <= 0x1F) goto yy259;
+ goto yy252;
}
} else {
if (yych <= '9') {
- if (yych <= '%') goto yy257;
- if (yych <= ')') goto yy250;
- if (yych <= '/') goto yy257;
- goto yy258;
+ if (yych <= '%') goto yy259;
+ if (yych <= ')') goto yy252;
+ if (yych <= '/') goto yy259;
+ goto yy260;
} else {
- if (yych == ';') goto yy250;
- if (yych <= '<') goto yy257;
- goto yy250;
+ if (yych == ';') goto yy252;
+ if (yych <= '<') goto yy259;
+ goto yy252;
}
}
} else {
if (yych <= '`') {
if (yych <= 'E') {
- if (yych <= '@') goto yy257;
- if (yych <= 'D') goto yy258;
- goto yy273;
+ if (yych <= '@') goto yy259;
+ if (yych <= 'D') goto yy260;
+ goto yy275;
} else {
- if (yych <= 'Z') goto yy258;
- if (yych == '_') goto yy258;
- goto yy257;
+ if (yych <= 'Z') goto yy260;
+ if (yych == '_') goto yy260;
+ goto yy259;
}
} else {
if (yych <= '{') {
- if (yych == 'e') goto yy273;
- if (yych <= 'z') goto yy258;
- goto yy257;
+ if (yych == 'e') goto yy275;
+ if (yych <= 'z') goto yy260;
+ goto yy259;
} else {
- if (yych == '}') goto yy257;
- if (yych <= '~') goto yy250;
- goto yy257;
+ if (yych == '}') goto yy259;
+ if (yych <= '~') goto yy252;
+ goto yy259;
}
}
}
-yy284:
- YYDEBUG(284, *YYCURSOR);
+yy286:
+ YYDEBUG(286, *YYCURSOR);
++YYCURSOR;
YYFILL(2);
yych = *YYCURSOR;
-yy285:
- YYDEBUG(285, *YYCURSOR);
+yy287:
+ YYDEBUG(287, *YYCURSOR);
if (yybm[0+yych] & 32) {
- goto yy284;
+ goto yy286;
}
- if (yych >= '\r') goto yy288;
-yy286:
- YYDEBUG(286, *YYCURSOR);
+ if (yych >= '\r') goto yy290;
+yy288:
+ YYDEBUG(288, *YYCURSOR);
++YYCURSOR;
-yy287:
- YYDEBUG(287, *YYCURSOR);
+yy289:
+ YYDEBUG(289, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 557 "Zend/zend_ini_scanner.l"
+#line 578 "Zend/zend_ini_scanner.l"
{ /* Comment */
BEGIN(INITIAL);
SCNG(lineno)++;
return END_OF_LINE;
}
-#line 4185 "Zend/zend_ini_scanner.c"
-yy288:
- YYDEBUG(288, *YYCURSOR);
+#line 4223 "Zend/zend_ini_scanner.c"
+yy290:
+ YYDEBUG(290, *YYCURSOR);
yych = *++YYCURSOR;
- if (yych == '\n') goto yy286;
- goto yy287;
-yy289:
- YYDEBUG(289, *YYCURSOR);
+ if (yych == '\n') goto yy288;
+ goto yy289;
+yy291:
+ YYDEBUG(291, *YYCURSOR);
yyaccept = 3;
YYMARKER = ++YYCURSOR;
YYFILL(1);
yych = *YYCURSOR;
- YYDEBUG(290, *YYCURSOR);
+ YYDEBUG(292, *YYCURSOR);
if (yybm[0+yych] & 64) {
- goto yy289;
+ goto yy291;
}
if (yych <= '%') {
if (yych <= '\r') {
if (yych <= 0x08) {
- if (yych <= 0x00) goto yy245;
- goto yy256;
+ if (yych <= 0x00) goto yy247;
+ goto yy258;
} else {
- if (yych <= '\n') goto yy245;
- if (yych <= '\f') goto yy256;
- goto yy245;
+ if (yych <= '\n') goto yy247;
+ if (yych <= '\f') goto yy258;
+ goto yy247;
}
} else {
if (yych <= '"') {
- if (yych <= 0x1F) goto yy256;
- goto yy245;
+ if (yych <= 0x1F) goto yy258;
+ goto yy247;
} else {
- if (yych == '$') goto yy261;
- goto yy256;
+ if (yych == '$') goto yy263;
+ goto yy258;
}
}
} else {
if (yych <= '=') {
if (yych <= ':') {
- if (yych <= ')') goto yy245;
- goto yy256;
+ if (yych <= ')') goto yy247;
+ goto yy258;
} else {
- if (yych == '<') goto yy256;
- goto yy245;
+ if (yych == '<') goto yy258;
+ goto yy247;
}
} else {
if (yych <= '|') {
- if (yych <= '{') goto yy256;
- goto yy245;
+ if (yych <= '{') goto yy258;
+ goto yy247;
} else {
- if (yych == '~') goto yy245;
- goto yy256;
+ if (yych == '~') goto yy247;
+ goto yy258;
}
}
}
-yy291:
- YYDEBUG(291, *YYCURSOR);
+yy293:
+ YYDEBUG(293, *YYCURSOR);
yyaccept = 3;
YYMARKER = ++YYCURSOR;
YYFILL(1);
yych = *YYCURSOR;
- YYDEBUG(292, *YYCURSOR);
+ YYDEBUG(294, *YYCURSOR);
if (yych <= '-') {
if (yych <= 0x1F) {
if (yych <= '\n') {
- if (yych <= 0x00) goto yy245;
- if (yych <= 0x08) goto yy256;
- goto yy245;
+ if (yych <= 0x00) goto yy247;
+ if (yych <= 0x08) goto yy258;
+ goto yy247;
} else {
- if (yych == '\r') goto yy245;
- goto yy256;
+ if (yych == '\r') goto yy247;
+ goto yy258;
}
} else {
if (yych <= '$') {
- if (yych <= '"') goto yy245;
- if (yych <= '#') goto yy256;
- goto yy261;
+ if (yych <= '"') goto yy247;
+ if (yych <= '#') goto yy258;
+ goto yy263;
} else {
- if (yych <= '%') goto yy256;
- if (yych <= ')') goto yy245;
- goto yy256;
+ if (yych <= '%') goto yy258;
+ if (yych <= ')') goto yy247;
+ goto yy258;
}
}
} else {
if (yych <= '<') {
if (yych <= '9') {
- if (yych <= '.') goto yy289;
- if (yych <= '/') goto yy256;
- goto yy291;
+ if (yych <= '.') goto yy291;
+ if (yych <= '/') goto yy258;
+ goto yy293;
} else {
- if (yych == ';') goto yy245;
- goto yy256;
+ if (yych == ';') goto yy247;
+ goto yy258;
}
} else {
if (yych <= '|') {
- if (yych <= '=') goto yy245;
- if (yych <= '{') goto yy256;
- goto yy245;
+ if (yych <= '=') goto yy247;
+ if (yych <= '{') goto yy258;
+ goto yy247;
} else {
- if (yych == '~') goto yy245;
- goto yy256;
+ if (yych == '~') goto yy247;
+ goto yy258;
}
}
}
-yy293:
- YYDEBUG(293, *YYCURSOR);
+yy295:
+ YYDEBUG(295, *YYCURSOR);
yyaccept = 3;
YYMARKER = ++YYCURSOR;
YYFILL(1);
yych = *YYCURSOR;
- YYDEBUG(294, *YYCURSOR);
+ YYDEBUG(296, *YYCURSOR);
if (yych <= ')') {
if (yych <= '\r') {
if (yych <= 0x08) {
- if (yych <= 0x00) goto yy245;
- goto yy256;
+ if (yych <= 0x00) goto yy247;
+ goto yy258;
} else {
- if (yych <= '\n') goto yy245;
- if (yych <= '\f') goto yy256;
- goto yy245;
+ if (yych <= '\n') goto yy247;
+ if (yych <= '\f') goto yy258;
+ goto yy247;
}
} else {
if (yych <= '#') {
- if (yych <= 0x1F) goto yy256;
- if (yych <= '"') goto yy245;
- goto yy256;
+ if (yych <= 0x1F) goto yy258;
+ if (yych <= '"') goto yy247;
+ goto yy258;
} else {
- if (yych <= '$') goto yy261;
- if (yych <= '%') goto yy256;
- goto yy245;
+ if (yych <= '$') goto yy263;
+ if (yych <= '%') goto yy258;
+ goto yy247;
}
}
} else {
if (yych <= '<') {
if (yych <= '9') {
- if (yych <= '/') goto yy256;
- goto yy293;
+ if (yych <= '/') goto yy258;
+ goto yy295;
} else {
- if (yych == ';') goto yy245;
- goto yy256;
+ if (yych == ';') goto yy247;
+ goto yy258;
}
} else {
if (yych <= '|') {
- if (yych <= '=') goto yy245;
- if (yych <= '{') goto yy256;
- goto yy245;
+ if (yych <= '=') goto yy247;
+ if (yych <= '{') goto yy258;
+ goto yy247;
} else {
- if (yych == '~') goto yy245;
- goto yy256;
+ if (yych == '~') goto yy247;
+ goto yy258;
}
}
}
-yy295:
- YYDEBUG(295, *YYCURSOR);
+yy297:
+ YYDEBUG(297, *YYCURSOR);
yyaccept = 3;
YYMARKER = ++YYCURSOR;
YYFILL(1);
yych = *YYCURSOR;
- YYDEBUG(296, *YYCURSOR);
+ YYDEBUG(298, *YYCURSOR);
if (yych <= ')') {
if (yych <= '\r') {
if (yych <= 0x08) {
- if (yych <= 0x00) goto yy245;
- goto yy256;
+ if (yych <= 0x00) goto yy247;
+ goto yy258;
} else {
- if (yych <= '\n') goto yy245;
- if (yych <= '\f') goto yy256;
- goto yy245;
+ if (yych <= '\n') goto yy247;
+ if (yych <= '\f') goto yy258;
+ goto yy247;
}
} else {
if (yych <= '#') {
- if (yych <= 0x1F) goto yy256;
- if (yych <= '"') goto yy245;
- goto yy256;
+ if (yych <= 0x1F) goto yy258;
+ if (yych <= '"') goto yy247;
+ goto yy258;
} else {
- if (yych <= '$') goto yy261;
- if (yych <= '%') goto yy256;
- goto yy245;
+ if (yych <= '$') goto yy263;
+ if (yych <= '%') goto yy258;
+ goto yy247;
}
}
} else {
if (yych <= '<') {
if (yych <= '9') {
- if (yych <= '/') goto yy256;
- goto yy295;
+ if (yych <= '/') goto yy258;
+ goto yy297;
} else {
- if (yych == ';') goto yy245;
- goto yy256;
+ if (yych == ';') goto yy247;
+ goto yy258;
}
} else {
if (yych <= '|') {
- if (yych <= '=') goto yy245;
- if (yych <= '{') goto yy256;
- goto yy245;
+ if (yych <= '=') goto yy247;
+ if (yych <= '{') goto yy258;
+ goto yy247;
} else {
- if (yych == '~') goto yy245;
- goto yy256;
+ if (yych == '~') goto yy247;
+ goto yy258;
}
}
}
-yy297:
- YYDEBUG(297, *YYCURSOR);
+yy299:
+ YYDEBUG(299, *YYCURSOR);
++YYCURSOR;
YYFILL(1);
yych = *YYCURSOR;
- YYDEBUG(298, *YYCURSOR);
+ YYDEBUG(300, *YYCURSOR);
if (yybm[0+yych] & 128) {
- goto yy297;
+ goto yy299;
}
- YYDEBUG(299, *YYCURSOR);
+ YYDEBUG(301, *YYCURSOR);
++YYCURSOR;
- YYDEBUG(300, *YYCURSOR);
+ YYDEBUG(302, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
#line 368 "Zend/zend_ini_scanner.l"
{ /* Raw string */
@@ -4402,66 +4440,66 @@ yy297:
}
RETURN_TOKEN(TC_RAW, yytext, yyleng);
}
-#line 4406 "Zend/zend_ini_scanner.c"
-yy301:
- YYDEBUG(301, *YYCURSOR);
+#line 4444 "Zend/zend_ini_scanner.c"
+yy303:
+ YYDEBUG(303, *YYCURSOR);
++YYCURSOR;
- YYDEBUG(302, *YYCURSOR);
+ YYDEBUG(304, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
#line 401 "Zend/zend_ini_scanner.l"
{ /* Variable start */
yy_push_state(ST_VARNAME TSRMLS_CC);
return TC_DOLLAR_CURLY;
}
-#line 4417 "Zend/zend_ini_scanner.c"
-yy303:
- YYDEBUG(303, *YYCURSOR);
+#line 4455 "Zend/zend_ini_scanner.c"
+yy305:
+ YYDEBUG(305, *YYCURSOR);
++YYCURSOR;
YYFILL(1);
yych = *YYCURSOR;
-yy304:
- YYDEBUG(304, *YYCURSOR);
- if (yych == '\t') goto yy303;
- if (yych == ' ') goto yy303;
- goto yy237;
-yy305:
- YYDEBUG(305, *YYCURSOR);
- yych = *++YYCURSOR;
- goto yy234;
yy306:
YYDEBUG(306, *YYCURSOR);
+ if (yych == '\t') goto yy305;
+ if (yych == ' ') goto yy305;
+ goto yy239;
+yy307:
+ YYDEBUG(307, *YYCURSOR);
+ yych = *++YYCURSOR;
+ goto yy236;
+yy308:
+ YYDEBUG(308, *YYCURSOR);
yyaccept = 1;
YYMARKER = ++YYCURSOR;
YYFILL(2);
yych = *YYCURSOR;
-yy307:
- YYDEBUG(307, *YYCURSOR);
+yy309:
+ YYDEBUG(309, *YYCURSOR);
if (yych <= 0x1F) {
if (yych <= '\n') {
- if (yych <= 0x08) goto yy232;
- if (yych <= '\t') goto yy306;
- goto yy305;
+ if (yych <= 0x08) goto yy234;
+ if (yych <= '\t') goto yy308;
+ goto yy307;
} else {
- if (yych == '\r') goto yy309;
- goto yy232;
+ if (yych == '\r') goto yy311;
+ goto yy234;
}
} else {
if (yych <= '"') {
- if (yych <= ' ') goto yy306;
- if (yych <= '!') goto yy232;
+ if (yych <= ' ') goto yy308;
+ if (yych <= '!') goto yy234;
} else {
- if (yych == ';') goto yy284;
- goto yy232;
+ if (yych == ';') goto yy286;
+ goto yy234;
}
}
- YYDEBUG(308, *YYCURSOR);
+ YYDEBUG(310, *YYCURSOR);
yych = *++YYCURSOR;
- goto yy239;
-yy309:
- YYDEBUG(309, *YYCURSOR);
+ goto yy241;
+yy311:
+ YYDEBUG(311, *YYCURSOR);
++YYCURSOR;
- if ((yych = *YYCURSOR) == '\n') goto yy305;
- goto yy234;
+ if ((yych = *YYCURSOR) == '\n') goto yy307;
+ goto yy236;
}
/* *********************************** */
yyc_ST_VARNAME:
@@ -4500,47 +4538,47 @@ yyc_ST_VARNAME:
128, 128, 128, 128, 128, 128, 128, 128,
128, 128, 128, 128, 128, 128, 128, 128,
};
- YYDEBUG(310, *YYCURSOR);
+ YYDEBUG(312, *YYCURSOR);
YYFILL(2);
yych = *YYCURSOR;
if (yych <= '\'') {
if (yych <= ' ') {
if (yych <= '\n') {
- if (yych >= '\t') goto yy314;
+ if (yych >= '\t') goto yy316;
} else {
- if (yych == '\r') goto yy314;
+ if (yych == '\r') goto yy316;
}
} else {
if (yych <= '$') {
- if (yych != '#') goto yy314;
+ if (yych != '#') goto yy316;
} else {
- if (yych == '&') goto yy314;
+ if (yych == '&') goto yy316;
}
}
} else {
if (yych <= 'Z') {
if (yych <= ';') {
- if (yych <= ')') goto yy314;
- if (yych >= ';') goto yy314;
+ if (yych <= ')') goto yy316;
+ if (yych >= ';') goto yy316;
} else {
- if (yych == '=') goto yy314;
+ if (yych == '=') goto yy316;
}
} else {
if (yych <= '|') {
- if (yych <= '[') goto yy314;
- if (yych >= '{') goto yy314;
+ if (yych <= '[') goto yy316;
+ if (yych >= '{') goto yy316;
} else {
- if (yych <= '}') goto yy316;
- if (yych <= '~') goto yy314;
+ if (yych <= '}') goto yy318;
+ if (yych <= '~') goto yy316;
}
}
}
- YYDEBUG(312, *YYCURSOR);
+ YYDEBUG(314, *YYCURSOR);
++YYCURSOR;
yych = *YYCURSOR;
- goto yy319;
-yy313:
- YYDEBUG(313, *YYCURSOR);
+ goto yy321;
+yy315:
+ YYDEBUG(315, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
#line 406 "Zend/zend_ini_scanner.l"
{ /* Variable name */
@@ -4552,41 +4590,41 @@ yy313:
RETURN_TOKEN(TC_VARNAME, yytext, yyleng);
}
-#line 4556 "Zend/zend_ini_scanner.c"
-yy314:
- YYDEBUG(314, *YYCURSOR);
+#line 4594 "Zend/zend_ini_scanner.c"
+yy316:
+ YYDEBUG(316, *YYCURSOR);
++YYCURSOR;
- YYDEBUG(315, *YYCURSOR);
+ YYDEBUG(317, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 575 "Zend/zend_ini_scanner.l"
+#line 596 "Zend/zend_ini_scanner.l"
{
return 0;
}
-#line 4566 "Zend/zend_ini_scanner.c"
-yy316:
- YYDEBUG(316, *YYCURSOR);
+#line 4604 "Zend/zend_ini_scanner.c"
+yy318:
+ YYDEBUG(318, *YYCURSOR);
++YYCURSOR;
- YYDEBUG(317, *YYCURSOR);
+ YYDEBUG(319, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
#line 416 "Zend/zend_ini_scanner.l"
{ /* Variable end */
yy_pop_state(TSRMLS_C);
return '}';
}
-#line 4577 "Zend/zend_ini_scanner.c"
-yy318:
- YYDEBUG(318, *YYCURSOR);
+#line 4615 "Zend/zend_ini_scanner.c"
+yy320:
+ YYDEBUG(320, *YYCURSOR);
++YYCURSOR;
YYFILL(1);
yych = *YYCURSOR;
-yy319:
- YYDEBUG(319, *YYCURSOR);
+yy321:
+ YYDEBUG(321, *YYCURSOR);
if (yybm[0+yych] & 128) {
- goto yy318;
+ goto yy320;
}
- goto yy313;
+ goto yy315;
}
}
-#line 579 "Zend/zend_ini_scanner.l"
+#line 600 "Zend/zend_ini_scanner.l"
}
diff --git a/Zend/zend_ini_scanner.l b/Zend/zend_ini_scanner.l
index 0c452e659..8aeb076ea 100644
--- a/Zend/zend_ini_scanner.l
+++ b/Zend/zend_ini_scanner.l
@@ -347,7 +347,7 @@ DOLLAR_CURLY "${"
SECTION_RAW_CHARS [^\]\n\r]
SINGLE_QUOTED_CHARS [^']
-RAW_VALUE_CHARS [^\n\r;\000]
+RAW_VALUE_CHARS [^"\n\r;\000]
LITERAL_DOLLAR ("$"([^{\000]|("\\"{ANY_CHAR})))
VALUE_CHARS ([^$= \t\n\r;&|~()!"'\000]|{LITERAL_DOLLAR})
@@ -445,12 +445,33 @@ SECTION_VALUE_CHARS ([^$\n\r;"'\]\\]|("\\"{ANY_CHAR})|{LITERAL_DOLLAR})
return '=';
}
-<ST_RAW>{RAW_VALUE_CHARS}+ { /* Raw value, only used when SCNG(scanner_mode) == ZEND_INI_SCANNER_RAW. */
- /* Eat leading and trailing double quotes */
- if (yytext[0] == '"' && yytext[yyleng - 1] == '"') {
- SCNG(yy_text)++;
- yyleng = yyleng - 2;
+<ST_RAW>["] {
+ while (YYCURSOR < YYLIMIT) {
+ switch (*YYCURSOR++) {
+ case '\n':
+ SCNG(lineno)++;
+ break;
+ case '\r':
+ if (*YYCURSOR != '\n') {
+ SCNG(lineno)++;
+ }
+ break;
+ case '"':
+ yyleng = YYCURSOR - SCNG(yy_text) - 2;
+ SCNG(yy_text)++;
+ RETURN_TOKEN(TC_RAW, yytext, yyleng);
+ case '\\':
+ if (YYCURSOR < YYLIMIT) {
+ YYCURSOR++;
+ }
+ break;
+ }
}
+ yyleng = YYCURSOR - SCNG(yy_text);
+ RETURN_TOKEN(TC_RAW, yytext, yyleng);
+}
+
+<ST_RAW>{RAW_VALUE_CHARS}+ { /* Raw value, only used when SCNG(scanner_mode) == ZEND_INI_SCANNER_RAW. */
RETURN_TOKEN(TC_RAW, yytext, yyleng);
}
diff --git a/Zend/zend_ini_scanner_defs.h b/Zend/zend_ini_scanner_defs.h
index f7b9e1ffb..0c0471373 100644
--- a/Zend/zend_ini_scanner_defs.h
+++ b/Zend/zend_ini_scanner_defs.h
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.13.5 on Fri Mar 2 11:49:21 2012 */
+/* Generated by re2c 0.13.5 on Thu Jun 7 17:48:25 2012 */
#line 3 "Zend/zend_ini_scanner_defs.h"
enum YYCONDTYPE {
diff --git a/Zend/zend_language_parser.c b/Zend/zend_language_parser.c
index b3740aad5..353a10960 100644
--- a/Zend/zend_language_parser.c
+++ b/Zend/zend_language_parser.c
@@ -6041,7 +6041,7 @@ static YYSIZE_T zend_yytnamerr(char *yyres, const char *yystr)
if (LANG_SCNG(yy_text)[0] == 0 &&
LANG_SCNG(yy_leng) == 1 &&
- memcmp(yystr, ZEND_STRL("\"end of file\"")) == 0) {
+ memcmp(yystr, "\"end of file\"", sizeof("\"end of file\"") - 1) == 0) {
yystpcpy(yyres, "end of file");
return sizeof("end of file")-1;
}
diff --git a/Zend/zend_language_parser.y b/Zend/zend_language_parser.y
index d0730b75d..9a0b3209e 100644
--- a/Zend/zend_language_parser.y
+++ b/Zend/zend_language_parser.y
@@ -1191,7 +1191,7 @@ static YYSIZE_T zend_yytnamerr(char *yyres, const char *yystr)
if (LANG_SCNG(yy_text)[0] == 0 &&
LANG_SCNG(yy_leng) == 1 &&
- memcmp(yystr, ZEND_STRL("\"end of file\"")) == 0) {
+ memcmp(yystr, "\"end of file\"", sizeof("\"end of file\"") - 1) == 0) {
yystpcpy(yyres, "end of file");
return sizeof("end of file")-1;
}
diff --git a/Zend/zend_multibyte.c b/Zend/zend_multibyte.c
index 9149fdcf0..379f50b01 100644
--- a/Zend/zend_multibyte.c
+++ b/Zend/zend_multibyte.c
@@ -168,7 +168,7 @@ ZEND_API const zend_encoding *zend_multibyte_get_script_encoding(TSRMLS_D)
ZEND_API int zend_multibyte_set_script_encoding(const zend_encoding **encoding_list, size_t encoding_list_size TSRMLS_DC)
{
if (CG(script_encoding_list)) {
- efree(CG(script_encoding_list));
+ free(CG(script_encoding_list));
}
CG(script_encoding_list) = encoding_list;
CG(script_encoding_list_size) = encoding_list_size;
diff --git a/Zend/zend_opcode.c b/Zend/zend_opcode.c
index 65fa85185..19fd71e76 100644
--- a/Zend/zend_opcode.c
+++ b/Zend/zend_opcode.c
@@ -215,6 +215,12 @@ ZEND_API int zend_cleanup_class_data(zend_class_entry **pce TSRMLS_DC)
void _destroy_zend_class_traits_info(zend_class_entry *ce)
{
if (ce->num_traits > 0 && ce->traits) {
+ size_t i;
+ for (i = 0; i < ce->num_traits; i++) {
+ if (ce->traits[i]) {
+ destroy_zend_class(&ce->traits[i]);
+ }
+ }
efree(ce->traits);
}
diff --git a/Zend/zend_operators.c b/Zend/zend_operators.c
index dd3ee2d8c..f9686251f 100644
--- a/Zend/zend_operators.c
+++ b/Zend/zend_operators.c
@@ -1605,7 +1605,8 @@ ZEND_API int is_identical_function(zval *result, zval *op1, zval *op2 TSRMLS_DC)
&& (!memcmp(Z_STRVAL_P(op1), Z_STRVAL_P(op2), Z_STRLEN_P(op1))));
break;
case IS_ARRAY:
- Z_LVAL_P(result) = zend_hash_compare(Z_ARRVAL_P(op1), Z_ARRVAL_P(op2), (compare_func_t) hash_zval_identical_function, 1 TSRMLS_CC)==0;
+ Z_LVAL_P(result) = (Z_ARRVAL_P(op1) == Z_ARRVAL_P(op2) ||
+ zend_hash_compare(Z_ARRVAL_P(op1), Z_ARRVAL_P(op2), (compare_func_t) hash_zval_identical_function, 1 TSRMLS_CC)==0);
break;
case IS_OBJECT:
if (Z_OBJ_HT_P(op1) == Z_OBJ_HT_P(op2)) {
@@ -2097,13 +2098,13 @@ static int hash_zval_compare_function(const zval **z1, const zval **z2 TSRMLS_DC
ZEND_API int zend_compare_symbol_tables_i(HashTable *ht1, HashTable *ht2 TSRMLS_DC) /* {{{ */
{
- return zend_hash_compare(ht1, ht2, (compare_func_t) hash_zval_compare_function, 0 TSRMLS_CC);
+ return ht1 == ht2 ? 0 : zend_hash_compare(ht1, ht2, (compare_func_t) hash_zval_compare_function, 0 TSRMLS_CC);
}
/* }}} */
ZEND_API void zend_compare_symbol_tables(zval *result, HashTable *ht1, HashTable *ht2 TSRMLS_DC) /* {{{ */
{
- ZVAL_LONG(result, zend_hash_compare(ht1, ht2, (compare_func_t) hash_zval_compare_function, 0 TSRMLS_CC));
+ ZVAL_LONG(result, ht1 == ht2 ? 0 : zend_hash_compare(ht1, ht2, (compare_func_t) hash_zval_compare_function, 0 TSRMLS_CC));
}
/* }}} */
diff --git a/configure b/configure
index f0b2e87b7..8e38b64f4 100755
--- a/configure
+++ b/configure
@@ -3636,7 +3636,7 @@ ac_config_headers="$ac_config_headers main/php_config.h"
PHP_MAJOR_VERSION=5
PHP_MINOR_VERSION=4
-PHP_RELEASE_VERSION=4
+PHP_RELEASE_VERSION=5
PHP_EXTRA_VERSION=""
PHP_VERSION="$PHP_MAJOR_VERSION.$PHP_MINOR_VERSION.$PHP_RELEASE_VERSION$PHP_EXTRA_VERSION"
PHP_VERSION_ID=`expr $PHP_MAJOR_VERSION \* 10000 + $PHP_MINOR_VERSION \* 100 + $PHP_RELEASE_VERSION`
@@ -11598,6 +11598,18 @@ fi
done
+ for ac_header in sysexits.h
+do :
+ ac_fn_c_check_header_mongrel "$LINENO" "sysexits.h" "ac_cv_header_sysexits_h" "$ac_includes_default"
+if test "x$ac_cv_header_sysexits_h" = x""yes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_SYSEXITS_H 1
+_ACEOF
+
+fi
+
+done
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for prctl" >&5
@@ -11802,10 +11814,10 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
$as_echo_n "checking whether ptrace works... " >&6; }
if test "$cross_compiling" = yes; then :
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error "cannot run test program while cross compiling
-See \`config.log' for more details." "$LINENO" 5; }
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: skipped (cross compiling)" >&5
+$as_echo "skipped (cross compiling)" >&6; }
+
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -11960,10 +11972,10 @@ $as_echo "#define HAVE_MACH_VM_READ 1" >>confdefs.h
$as_echo_n "checking for proc mem file... " >&6; }
if test "$cross_compiling" = yes; then :
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error "cannot run test program while cross compiling
-See \`config.log' for more details." "$LINENO" 5; }
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: skipped (cross compiling)" >&5
+$as_echo "skipped (cross compiling)" >&6; }
+
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -86485,6 +86497,44 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
$as_echo "#define HAVE_SOCKETS 1" >>confdefs.h
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for field ss_family in struct sockaddr_storage" >&5
+$as_echo_n "checking for field ss_family in struct sockaddr_storage... " >&6; }
+if test "${ac_cv_ss_family+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#include <sys/socket.h>
+#include <sys/types.h>
+#include <netdb.h>
+
+int
+main ()
+{
+struct sockaddr_storage sa_store; sa_store.ss_family = AF_INET6;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_ss_family=yes
+else
+ ac_cv_ss_family=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_ss_family" >&5
+$as_echo "$ac_cv_ss_family" >&6; }
+
+ if test "$ac_cv_ss_family" = yes; then
+
+$as_echo "#define HAVE_SA_SS_FAMILY 1" >>confdefs.h
+
+ fi
+
ext_builddir=ext/sockets
ext_srcdir=$abs_srcdir/ext/sockets
@@ -101686,7 +101736,14 @@ rm -f conftest*
lib/zip_new.c lib/zip_source_file.c lib/zip_stat_index.c \
lib/zip_set_archive_comment.c lib/zip_set_file_comment.c \
lib/zip_unchange_archive.c lib/zip_memdup.c lib/zip_stat_init.c lib/zip_add_dir.c \
- lib/zip_error_clear.c lib/zip_file_error_clear.c"
+ lib/zip_error_clear.c lib/zip_file_error_clear.c \
+ lib/zip_fdopen.c lib/zip_fopen_encrypted.c lib/zip_fopen_index_encrypted.c \
+ lib/zip_get_compression_implementation.c lib/zip_get_encryption_implementation.c \
+ lib/zip_get_file_extra.c lib/zip_get_num_entries.c lib/zip_set_default_password.c \
+ lib/zip_set_file_extra.c lib/zip_source_close.c lib/zip_source_crc.c \
+ lib/zip_source_deflate.c lib/zip_source_error.c lib/zip_source_layered.c \
+ lib/zip_source_open.c lib/zip_source_pkware.c lib/zip_source_pop.c \
+ lib/zip_source_read.c lib/zip_source_stat.c"
$as_echo "#define HAVE_ZIP 1" >>confdefs.h
@@ -103763,7 +103820,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<EOF
-#line 103766 "configure"
+#line 103823 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -105675,7 +105732,7 @@ ia64-*-hpux*)
;;
*-*-irix6*)
# Find out which ABI we are using.
- echo '#line 105678 "configure"' > conftest.$ac_ext
+ echo '#line 105735 "configure"' > conftest.$ac_ext
if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
(eval $ac_compile) 2>&5
ac_status=$?
@@ -107067,7 +107124,7 @@ else
LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
cat > conftest.$ac_ext <<EOF
-#line 107070 "configure"
+#line 107127 "configure"
#include "confdefs.h"
int main() {
; return 0; }
@@ -107225,11 +107282,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"configure:107228: $lt_compile\"" >&5)
+ (eval echo "\"configure:107285: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "configure:107232: \$? = $ac_status" >&5
+ echo "configure:107289: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -107523,11 +107580,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"configure:107526: $lt_compile\"" >&5)
+ (eval echo "\"configure:107583: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "configure:107530: \$? = $ac_status" >&5
+ echo "configure:107587: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -107627,11 +107684,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"configure:107630: $lt_compile\"" >&5)
+ (eval echo "\"configure:107687: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "configure:107634: \$? = $ac_status" >&5
+ echo "configure:107691: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@@ -108091,7 +108148,7 @@ _LT_EOF
# Determine the default libpath from the value encoded in an empty executable.
cat > conftest.$ac_ext <<EOF
-#line 108094 "configure"
+#line 108151 "configure"
#include "confdefs.h"
int main() {
; return 0; }
@@ -108133,7 +108190,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
# Determine the default libpath from the value encoded in an empty executable.
cat > conftest.$ac_ext <<EOF
-#line 108136 "configure"
+#line 108193 "configure"
#include "confdefs.h"
int main() {
; return 0; }
@@ -109658,7 +109715,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<EOF
-#line 109661 "configure"
+#line 109718 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -109758,7 +109815,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<EOF
-#line 109761 "configure"
+#line 109818 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -110823,7 +110880,7 @@ case $host_os in
# Determine the default libpath from the value encoded in an empty executable.
cat > conftest.$ac_ext <<EOF
-#line 110826 "configure"
+#line 110883 "configure"
#include "confdefs.h"
int main() {
; return 0; }
@@ -110866,7 +110923,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
# Determine the default libpath from the value encoded in an empty executable.
cat > conftest.$ac_ext <<EOF
-#line 110869 "configure"
+#line 110926 "configure"
#include "confdefs.h"
int main() {
; return 0; }
@@ -112118,11 +112175,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"configure:112121: $lt_compile\"" >&5)
+ (eval echo "\"configure:112178: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "configure:112125: \$? = $ac_status" >&5
+ echo "configure:112182: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -112222,11 +112279,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"configure:112225: $lt_compile\"" >&5)
+ (eval echo "\"configure:112282: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "configure:112229: \$? = $ac_status" >&5
+ echo "configure:112286: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
diff --git a/configure.in b/configure.in
index 32ebde125..8ca71a127 100644
--- a/configure.in
+++ b/configure.in
@@ -119,7 +119,7 @@ int zend_sprintf(char *buffer, const char *format, ...);
PHP_MAJOR_VERSION=5
PHP_MINOR_VERSION=4
-PHP_RELEASE_VERSION=4
+PHP_RELEASE_VERSION=5
PHP_EXTRA_VERSION=""
PHP_VERSION="$PHP_MAJOR_VERSION.$PHP_MINOR_VERSION.$PHP_RELEASE_VERSION$PHP_EXTRA_VERSION"
PHP_VERSION_ID=`expr [$]PHP_MAJOR_VERSION \* 10000 + [$]PHP_MINOR_VERSION \* 100 + [$]PHP_RELEASE_VERSION`
diff --git a/ext/curl/tests/bug61948-win32.phpt b/ext/curl/tests/bug61948-win32.phpt
new file mode 100644
index 000000000..dc86526b7
--- /dev/null
+++ b/ext/curl/tests/bug61948-win32.phpt
@@ -0,0 +1,25 @@
+--TEST--
+Bug #61948 (CURLOPT_COOKIEFILE '' raises open_basedir restriction)
+--SKIPIF--
+<?php if (!extension_loaded("curl")) print "skip";
+if(substr(PHP_OS, 0, 3) != 'WIN' )
+ die("skip Not Valid for Linux");
+?>
+--INI--
+open_basedir="c:/tmp"
+--FILE--
+<?php
+ $ch = curl_init();
+ var_dump(curl_setopt($ch, CURLOPT_COOKIEFILE, ""));
+ var_dump(curl_setopt($ch, CURLOPT_COOKIEFILE, "c:/tmp/foo"));
+ var_dump(curl_setopt($ch, CURLOPT_COOKIEFILE, "c:/xxx/bar"));
+ curl_close($ch);
+?>
+--EXPECTF--
+%a
+
+Warning: curl_setopt(): open_basedir restriction in effect. File(c:/tmp/foo) is not within the allowed path(s): (c:/tmp) in %sbug61948-win32.php on line %d
+bool(false)
+
+Warning: curl_setopt(): open_basedir restriction in effect. File(c:/xxx/bar) is not within the allowed path(s): (c:/tmp) in %sbug61948-win32.php on line %d
+bool(false)
diff --git a/ext/curl/tests/bug61948.phpt b/ext/curl/tests/bug61948.phpt
index a03fc3b60..23bbda7d5 100644
--- a/ext/curl/tests/bug61948.phpt
+++ b/ext/curl/tests/bug61948.phpt
@@ -1,7 +1,10 @@
--TEST--
Bug #61948 (CURLOPT_COOKIEFILE '' raises open_basedir restriction)
--SKIPIF--
-<?php if (!extension_loaded("curl")) print "skip"; ?>
+<?php if (!extension_loaded("curl")) print "skip";
+if(substr(PHP_OS, 0, 3) == 'WIN' )
+ die("skip Not Valid for Windows");
+?>
--INI--
open_basedir="/tmp"
--FILE--
diff --git a/ext/dom/xpath.c b/ext/dom/xpath.c
index dd98511e9..70e7aff69 100644
--- a/ext/dom/xpath.c
+++ b/ext/dom/xpath.c
@@ -216,7 +216,7 @@ static void dom_xpath_ext_function_php(xmlXPathParserContextPtr ctxt, int nargs,
if (Z_TYPE(handler) == IS_STRING) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to call handler %s()", Z_STRVAL_P(&handler));
}
- /* retval is == NULL, when an exception occured, don't report anything, because PHP itself will handle that */
+ /* retval is == NULL, when an exception occurred, don't report anything, because PHP itself will handle that */
} else if (retval == NULL) {
} else {
if (retval->type == IS_OBJECT && instanceof_function( Z_OBJCE_P(retval), dom_node_class_entry TSRMLS_CC)) {
diff --git a/ext/exif/exif.c b/ext/exif/exif.c
index b490ded55..9db667474 100644
--- a/ext/exif/exif.c
+++ b/ext/exif/exif.c
@@ -3254,7 +3254,7 @@ static void exif_process_APP12(image_info_type *ImageInfo, char *buffer, size_t
if ((l1 = php_strnlen(buffer+2, length-2)) > 0) {
exif_iif_add_tag(ImageInfo, SECTION_APP12, "Company", TAG_NONE, TAG_FMT_STRING, l1, buffer+2 TSRMLS_CC);
if (length > 2+l1+1) {
- l2 = php_strnlen(buffer+2+l1+1, length-2-l1+1);
+ l2 = php_strnlen(buffer+2+l1+1, length-2-l1-1);
exif_iif_add_tag(ImageInfo, SECTION_APP12, "Info", TAG_NONE, TAG_FMT_STRING, l2, buffer+2+l1+1 TSRMLS_CC);
}
}
@@ -3404,6 +3404,10 @@ static int exif_scan_JPEG_header(image_info_type *ImageInfo TSRMLS_DC)
case M_SOF13:
case M_SOF14:
case M_SOF15:
+ if ((itemlen - 2) < 6) {
+ return FALSE;
+ }
+
exif_process_SOFn(Data, marker, &sof_info);
ImageInfo->Width = sof_info.width;
ImageInfo->Height = sof_info.height;
diff --git a/ext/fileinfo/libmagic.patch b/ext/fileinfo/libmagic.patch
index baeac1dc1..48a02360b 100644
--- a/ext/fileinfo/libmagic.patch
+++ b/ext/fileinfo/libmagic.patch
@@ -1,6 +1,6 @@
diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
---- libmagic.orig/apprentice.c 2012-04-22 19:30:43.182305355 +0800
-+++ libmagic/apprentice.c 2012-04-22 19:28:57.346309536 +0800
+--- libmagic.orig/apprentice.c 2012-05-29 14:40:41.710960045 +0200
++++ libmagic/apprentice.c 2012-04-22 18:57:16.215980866 +0200
@@ -29,6 +29,8 @@
* apprentice - make one pass through /etc/magic, learning its secrets.
*/
@@ -729,8 +729,8 @@ diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
m->str_flags = swap4(m->str_flags);
}
diff -u libmagic.orig/ascmagic.c libmagic/ascmagic.c
---- libmagic.orig/ascmagic.c 2012-04-22 19:30:43.182305355 +0800
-+++ libmagic/ascmagic.c 2012-04-22 19:28:57.330309533 +0800
+--- libmagic.orig/ascmagic.c 2012-05-29 14:40:41.710960045 +0200
++++ libmagic/ascmagic.c 2012-04-22 18:57:16.215980866 +0200
@@ -139,10 +139,8 @@
/* malloc size is a conservative overestimate; could be
improved, or at least realloced after conversion. */
@@ -755,8 +755,8 @@ diff -u libmagic.orig/ascmagic.c libmagic/ascmagic.c
return rv;
}
diff -u libmagic.orig/cdf.c libmagic/cdf.c
---- libmagic.orig/cdf.c 2012-04-22 19:30:43.182305355 +0800
-+++ libmagic/cdf.c 2012-04-22 19:28:57.370309531 +0800
+--- libmagic.orig/cdf.c 2012-05-29 14:40:41.710960045 +0200
++++ libmagic/cdf.c 2012-04-22 18:57:16.219978162 +0200
@@ -43,7 +43,17 @@
#include <err.h>
#endif
@@ -819,8 +819,8 @@ diff -u libmagic.orig/cdf.c libmagic/cdf.c
(void)fprintf(stderr, "timestamp %s\n", buf);
} else {
diff -u libmagic.orig/cdf.h libmagic/cdf.h
---- libmagic.orig/cdf.h 2012-04-22 19:30:43.182305355 +0800
-+++ libmagic/cdf.h 2012-04-22 19:28:57.370309531 +0800
+--- libmagic.orig/cdf.h 2012-05-29 14:40:41.710960045 +0200
++++ libmagic/cdf.h 2012-04-22 18:57:16.219978162 +0200
@@ -35,7 +35,7 @@
#ifndef _H_CDF_
#define _H_CDF_
@@ -857,8 +857,8 @@ diff -u libmagic.orig/cdf.h libmagic/cdf.h
void cdf_swap_header(cdf_header_t *);
void cdf_unpack_header(cdf_header_t *, char *);
diff -u libmagic.orig/cdf_time.c libmagic/cdf_time.c
---- libmagic.orig/cdf_time.c 2012-04-22 19:30:43.182305355 +0800
-+++ libmagic/cdf_time.c 2012-04-22 19:28:57.326309537 +0800
+--- libmagic.orig/cdf_time.c 2012-05-29 14:40:41.710960045 +0200
++++ libmagic/cdf_time.c 2012-04-22 18:57:16.219978162 +0200
@@ -96,7 +96,7 @@
}
@@ -916,8 +916,8 @@ diff -u libmagic.orig/cdf_time.c libmagic/cdf_time.c
static const char *ref = "Sat Apr 23 01:30:00 1977";
char *p, *q;
diff -u libmagic.orig/compress.c libmagic/compress.c
---- libmagic.orig/compress.c 2012-04-22 19:30:43.182305355 +0800
-+++ libmagic/compress.c 2012-04-22 19:28:57.314309548 +0800
+--- libmagic.orig/compress.c 2012-05-29 14:40:41.710960045 +0200
++++ libmagic/compress.c 2012-04-22 18:57:16.219978162 +0200
@@ -32,6 +32,7 @@
* uncompress(method, old, n, newch) - uncompress old into new,
* using method, return sizeof new
@@ -1079,8 +1079,8 @@ diff -u libmagic.orig/compress.c libmagic/compress.c
-#endif
+#endif /* if PHP_FILEINFO_UNCOMPRESS */
diff -u libmagic.orig/file.h libmagic/file.h
---- libmagic.orig/file.h 2012-04-22 19:30:43.186305188 +0800
-+++ libmagic/file.h 2012-04-22 19:49:58.922256776 +0800
+--- libmagic.orig/file.h 2012-05-29 14:40:41.710960045 +0200
++++ libmagic/file.h 2012-04-22 18:57:16.219978162 +0200
@@ -33,11 +33,9 @@
#ifndef __file_h__
#define __file_h__
@@ -1252,8 +1252,8 @@ diff -u libmagic.orig/file.h libmagic/file.h
+
#endif /* __file_h__ */
diff -u libmagic.orig/fsmagic.c libmagic/fsmagic.c
---- libmagic.orig/fsmagic.c 2012-04-22 19:30:43.186305188 +0800
-+++ libmagic/fsmagic.c 2012-04-22 19:28:57.298309521 +0800
+--- libmagic.orig/fsmagic.c 2012-05-29 14:40:41.710960045 +0200
++++ libmagic/fsmagic.c 2012-04-22 18:57:16.219978162 +0200
@@ -59,27 +59,21 @@
# define minor(dev) ((dev) & 0xff)
#endif
@@ -1577,8 +1577,8 @@ diff -u libmagic.orig/fsmagic.c libmagic/fsmagic.c
/*
diff -u libmagic.orig/funcs.c libmagic/funcs.c
---- libmagic.orig/funcs.c 2012-04-22 19:30:43.186305188 +0800
-+++ libmagic/funcs.c 2012-04-22 19:28:57.370309531 +0800
+--- libmagic.orig/funcs.c 2012-05-29 14:40:41.710960045 +0200
++++ libmagic/funcs.c 2012-04-22 18:57:16.219978162 +0200
@@ -41,52 +41,42 @@
#if defined(HAVE_WCTYPE_H)
#include <wctype.h>
@@ -1872,11 +1872,9 @@ diff -u libmagic.orig/funcs.c libmagic/funcs.c
+ return rep_cnt;
}
+
-Only in libmagic.orig: funcs.c.orig
-Only in libmagic.orig: funcs.c.rej
diff -u libmagic.orig/magic.c libmagic/magic.c
---- libmagic.orig/magic.c 2012-04-22 19:30:43.186305188 +0800
-+++ libmagic/magic.c 2012-04-22 19:28:57.370309531 +0800
+--- libmagic.orig/magic.c 2012-05-29 14:40:41.710960045 +0200
++++ libmagic/magic.c 2012-04-22 18:57:16.219978162 +0200
@@ -25,11 +25,6 @@
* SUCH DAMAGE.
*/
@@ -2253,8 +2251,8 @@ diff -u libmagic.orig/magic.c libmagic/magic.c
public const char *
magic_error(struct magic_set *ms)
diff -u libmagic.orig/magic.h libmagic/magic.h
---- libmagic.orig/magic.h 2012-04-22 19:30:43.190305058 +0800
-+++ libmagic/magic.h 2012-04-22 19:28:57.326309537 +0800
+--- libmagic.orig/magic.h 2012-05-29 14:40:41.710960045 +0200
++++ libmagic/magic.h 2012-04-22 18:57:16.219978162 +0200
@@ -85,6 +85,7 @@
const char *magic_getpath(const char *, int);
@@ -2272,8 +2270,8 @@ diff -u libmagic.orig/magic.h libmagic/magic.h
int magic_errno(magic_t);
diff -u libmagic.orig/print.c libmagic/print.c
---- libmagic.orig/print.c 2012-04-22 19:30:43.190305058 +0800
-+++ libmagic/print.c 2012-04-22 19:28:57.326309537 +0800
+--- libmagic.orig/print.c 2012-05-29 14:40:41.710960045 +0200
++++ libmagic/print.c 2012-05-29 14:34:03.770376387 +0200
@@ -29,6 +29,9 @@
* print.c - debugging printout routines
*/
@@ -2467,8 +2465,8 @@ diff -u libmagic.orig/print.c libmagic/print.c
protected const char *
diff -u libmagic.orig/readcdf.c libmagic/readcdf.c
---- libmagic.orig/readcdf.c 2012-04-22 19:30:43.190305058 +0800
-+++ libmagic/readcdf.c 2012-04-22 19:28:57.326309537 +0800
+--- libmagic.orig/readcdf.c 2012-05-29 14:40:41.710960045 +0200
++++ libmagic/readcdf.c 2012-04-22 18:57:16.219978162 +0200
@@ -30,7 +30,11 @@
#endif
@@ -2515,8 +2513,8 @@ diff -u libmagic.orig/readcdf.c libmagic/readcdf.c
if ((ec = strchr(c, '\n')) != NULL)
*ec = '\0';
diff -u libmagic.orig/readelf.c libmagic/readelf.c
---- libmagic.orig/readelf.c 2012-04-22 19:30:43.190305058 +0800
-+++ libmagic/readelf.c 2012-04-22 19:28:57.378309534 +0800
+--- libmagic.orig/readelf.c 2012-05-29 14:40:41.710960045 +0200
++++ libmagic/readelf.c 2012-04-22 18:57:16.219978162 +0200
@@ -49,7 +49,7 @@
off_t, int *, int);
private int doshn(struct magic_set *, int, int, int, off_t, int, size_t,
@@ -2672,8 +2670,8 @@ diff -u libmagic.orig/readelf.c libmagic/readelf.c
if (fstat(fd, &st) == -1) {
diff -u libmagic.orig/softmagic.c libmagic/softmagic.c
---- libmagic.orig/softmagic.c 2012-04-22 19:30:43.194304945 +0800
-+++ libmagic/softmagic.c 2012-04-22 19:28:57.286309597 +0800
+--- libmagic.orig/softmagic.c 2012-05-29 14:40:41.710960045 +0200
++++ libmagic/softmagic.c 2012-05-29 14:34:31.900417647 +0200
@@ -41,6 +41,11 @@
#include <stdlib.h>
#include <time.h>
@@ -2860,7 +2858,7 @@ diff -u libmagic.orig/softmagic.c libmagic/softmagic.c
}
}
-@@ -1669,6 +1642,65 @@
+@@ -1669,6 +1642,42 @@
return file_strncmp(a, b, len, flags);
}
@@ -2876,29 +2874,6 @@ diff -u libmagic.orig/softmagic.c libmagic/softmagic.c
+
+ for (i=0; i<Z_STRLEN_P(pattern); i++, j++) {
+ switch (Z_STRVAL_P(pattern)[i]) {
-+ case '?':
-+ t[j] = '.';
-+ break;
-+ case '*':
-+ t[j++] = '.';
-+ t[j] = '*';
-+ break;
-+ case '.':
-+ t[j++] = '\\';
-+ t[j] = '.';
-+ break;
-+ case '\\':
-+ t[j++] = '\\';
-+ t[j] = '\\';
-+ break;
-+ case '(':
-+ t[j++] = '\\';
-+ t[j] = '(';
-+ break;
-+ case ')':
-+ t[j++] = '\\';
-+ t[j] = ')';
-+ break;
+ case '~':
+ t[j++] = '\\';
+ t[j] = '~';
@@ -2926,7 +2901,7 @@ diff -u libmagic.orig/softmagic.c libmagic/softmagic.c
private int
magiccheck(struct magic_set *ms, struct magic *m)
{
-@@ -1825,67 +1857,163 @@
+@@ -1825,67 +1834,163 @@
break;
}
case FILE_REGEX: {
@@ -2937,23 +2912,7 @@ diff -u libmagic.orig/softmagic.c libmagic/softmagic.c
- if (ms->search.s == NULL)
- return 0;
-
-+ zval *pattern;
-+ int options = 0;
-+ pcre_cache_entry *pce;
-+ TSRMLS_FETCH();
-+
-+ MAKE_STD_ZVAL(pattern);
-+ ZVAL_STRINGL(pattern, (char *)m->value.s, m->vallen, 0);
-+
-+ options |= PCRE_MULTILINE;
-+
-+ if (m->str_flags & STRING_IGNORE_CASE) {
-+ options |= PCRE_CASELESS;
-+ }
-+
-+ convert_libmagic_pattern(pattern, options);
-+
- l = 0;
+- l = 0;
- rc = regcomp(&rx, m->value.s,
- REG_EXTENDED|REG_NEWLINE|
- ((m->str_flags & STRING_IGNORE_CASE) ? REG_ICASE : 0));
@@ -2970,6 +2929,23 @@ diff -u libmagic.orig/softmagic.c libmagic/softmagic.c
- size_t l = ms->search.s_len - 1;
- char c = ms->search.s[l];
- ((char *)(intptr_t)ms->search.s)[l] = '\0';
++ zval *pattern;
++ int options = 0;
++ pcre_cache_entry *pce;
++ TSRMLS_FETCH();
++
++ MAKE_STD_ZVAL(pattern);
++ ZVAL_STRINGL(pattern, (char *)m->value.s, m->vallen, 0);
++
++ options |= PCRE_MULTILINE;
++
++ if (m->str_flags & STRING_IGNORE_CASE) {
++ options |= PCRE_CASELESS;
++ }
++
++ convert_libmagic_pattern(pattern, options);
++
++ l = v = 0;
+#if (PHP_MAJOR_VERSION < 6)
+ if ((pce = pcre_get_compiled_regex_cache(Z_STRVAL_P(pattern), Z_STRLEN_P(pattern) TSRMLS_CC)) == NULL) {
#else
diff --git a/ext/fileinfo/libmagic/softmagic.c b/ext/fileinfo/libmagic/softmagic.c
index 648f64169..f9c2836dd 100644
--- a/ext/fileinfo/libmagic/softmagic.c
+++ b/ext/fileinfo/libmagic/softmagic.c
@@ -1654,29 +1654,6 @@ convert_libmagic_pattern(zval *pattern, int options)
for (i=0; i<Z_STRLEN_P(pattern); i++, j++) {
switch (Z_STRVAL_P(pattern)[i]) {
- case '?':
- t[j] = '.';
- break;
- case '*':
- t[j++] = '.';
- t[j] = '*';
- break;
- case '.':
- t[j++] = '\\';
- t[j] = '.';
- break;
- case '\\':
- t[j++] = '\\';
- t[j] = '\\';
- break;
- case '(':
- t[j++] = '\\';
- t[j] = '(';
- break;
- case ')':
- t[j++] = '\\';
- t[j] = ')';
- break;
case '~':
t[j++] = '\\';
t[j] = '~';
@@ -1873,7 +1850,7 @@ magiccheck(struct magic_set *ms, struct magic *m)
convert_libmagic_pattern(pattern, options);
- l = 0;
+ l = v = 0;
#if (PHP_MAJOR_VERSION < 6)
if ((pce = pcre_get_compiled_regex_cache(Z_STRVAL_P(pattern), Z_STRLEN_P(pattern) TSRMLS_CC)) == NULL) {
#else
diff --git a/ext/fileinfo/tests/finfo_file_002.phpt b/ext/fileinfo/tests/finfo_file_002.phpt
index 9ed19a976..3593233c3 100644
--- a/ext/fileinfo/tests/finfo_file_002.phpt
+++ b/ext/fileinfo/tests/finfo_file_002.phpt
@@ -18,9 +18,11 @@ ksort($results);
var_dump($results);
?>
--EXPECTF--
-array(6) {
+array(7) {
["%s/resources/dir.zip"]=>
string(15) "application/zip"
+ ["%s/resources/test.awk"]=>
+ string(10) "text/plain"
["%s/resources/test.bmp"]=>
string(14) "image/x-ms-bmp"
["%s/resources/test.gif"]=>
diff --git a/ext/fileinfo/tests/finfo_file_regex-win32.phpt b/ext/fileinfo/tests/finfo_file_regex-win32.phpt
new file mode 100644
index 000000000..1eda48c4d
--- /dev/null
+++ b/ext/fileinfo/tests/finfo_file_regex-win32.phpt
@@ -0,0 +1,36 @@
+--TEST--
+Test finfo_file() function : regex rules
+--SKIPIF--
+<?php require_once(dirname(__FILE__) . '/skipif.inc');
+if (substr(PHP_OS, 0, 3) != 'WIN') {
+ die('skip.. only for Windows');
+}
+?>
+--FILE--
+<?php
+/**
+ * Works with the unix file command:
+ * $ file -m magic resources/test.awk
+ * resources/test.awk: awk script, ASCII text
+ */
+$magicFile = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'magic';
+$finfo = finfo_open( FILEINFO_MIME, $magicFile );
+
+echo "*** Testing finfo_file() : regex rules ***\n";
+
+// Calling finfo_file() with all possible arguments
+$file = __DIR__ . '/resources/test.awk';
+var_dump( finfo_file( $finfo, $file ) );
+var_dump( finfo_file( $finfo, $file, FILEINFO_CONTINUE ) );
+
+// Windows uses libfileinfo 1.0.5-dev
+// this may be causing the slightly different output from the first
+// finfo_file() call
+
+?>
+===DONE===
+--EXPECTF--
+*** Testing finfo_file() : regex rules ***
+string(10) "text/plain"
+string(22) "awk script, ASCII text"
+===DONE===
diff --git a/ext/fileinfo/tests/finfo_file_regex.phpt b/ext/fileinfo/tests/finfo_file_regex.phpt
new file mode 100644
index 000000000..ee4c8b0b7
--- /dev/null
+++ b/ext/fileinfo/tests/finfo_file_regex.phpt
@@ -0,0 +1,32 @@
+--TEST--
+Test finfo_file() function : regex rules
+--SKIPIF--
+<?php require_once(dirname(__FILE__) . '/skipif.inc');
+if (substr(PHP_OS, 0, 3) == 'WIN') {
+ die('skip.. only for Non Windows Systems');
+}
+?>
+--FILE--
+<?php
+/**
+ * Works with the unix file command:
+ * $ file -m magic resources/test.awk
+ * resources/test.awk: awk script, ASCII text
+ */
+$magicFile = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'magic';
+$finfo = finfo_open( FILEINFO_MIME, $magicFile );
+
+echo "*** Testing finfo_file() : regex rules ***\n";
+
+// Calling finfo_file() with all possible arguments
+$file = __DIR__ . '/resources/test.awk';
+var_dump( finfo_file( $finfo, $file ) );
+var_dump( finfo_file( $finfo, $file, FILEINFO_CONTINUE ) );
+
+?>
+===DONE===
+--EXPECTF--
+*** Testing finfo_file() : regex rules ***
+string(28) "text/plain; charset=us-ascii"
+string(22) "awk script, ASCII text"
+===DONE===
diff --git a/ext/fileinfo/tests/finfo_open_error-win32.phpt b/ext/fileinfo/tests/finfo_open_error-win32.phpt
new file mode 100644
index 000000000..e168b7f7d
--- /dev/null
+++ b/ext/fileinfo/tests/finfo_open_error-win32.phpt
@@ -0,0 +1,59 @@
+--TEST--
+Test finfo_open() function : error functionality
+--SKIPIF--
+<?php require_once(dirname(__FILE__) . '/skipif.inc');
+if(substr(PHP_OS, 0, 3) != 'WIN' )
+ die("skip Not Valid for Linux");
+?>
+--FILE--
+<?php
+/* Prototype : resource finfo_open([int options [, string arg]])
+ * Description: Create a new fileinfo resource.
+ * Source code: ext/fileinfo/fileinfo.c
+ * Alias to functions:
+ */
+
+$magicFile = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'magic';
+
+echo "*** Testing finfo_open() : error functionality ***\n";
+
+// on 5_4, this line generates additional warning messages that 5_3 does not. functionally, it should be fine (should pass)
+var_dump( finfo_open( FILEINFO_MIME, 'foobarfile' ) );
+var_dump( finfo_open( array(), $magicFile ) );
+var_dump( finfo_open( FILEINFO_MIME, $magicFile, 'extraArg' ) );
+var_dump( finfo_open( PHP_INT_MAX - 1, $magicFile ) );
+var_dump( finfo_open( 'foobar' ) );
+
+var_dump( new finfo('foobar') );
+
+?>
+===DONE===
+--EXPECTF--
+*** Testing finfo_open() : error functionality ***
+
+Warning: finfo_open(%sfoobarfile): failed to open stream: No such file or directory in %sfinfo_open_error-win32.php on line %d
+
+Warning: finfo_open(%sfoobarfile): failed to open stream: No such file or directory in %sfinfo_open_error-win32.php on line %d
+
+Warning: finfo_open(): Failed to load magic database at '%sfoobarfile'. in %sfinfo_open_error-win32.php on line %d
+bool(false)
+
+Warning: finfo_open() expects parameter 1 to be long, array given in %sfinfo_open_error-win32.php on line %d
+bool(false)
+
+Warning: finfo_open() expects at most 2 parameters, 3 given in %sfinfo_open_error-win32.php on line %d
+bool(false)
+
+Warning: finfo_open(%smagic): failed to open stream: No such file or directory in %sfinfo_open_error-win32.php on line %d
+
+Warning: finfo_open(%smagic): failed to open stream: No such file or directory in %sfinfo_open_error-win32.php on line %d
+
+Warning: finfo_open(): Failed to load magic database at '%smagic'. in %sfinfo_open_error-win32.php on line %d
+bool(false)
+
+Warning: finfo_open() expects parameter 1 to be long, string given in %sfinfo_open_error-win32.php on line %d
+bool(false)
+
+Warning: finfo::finfo() expects parameter 1 to be long, string given in %sfinfo_open_error-win32.php on line %d
+NULL
+===DONE===
diff --git a/ext/fileinfo/tests/finfo_open_error.phpt b/ext/fileinfo/tests/finfo_open_error.phpt
index 19ae7a601..5d1eff597 100644
--- a/ext/fileinfo/tests/finfo_open_error.phpt
+++ b/ext/fileinfo/tests/finfo_open_error.phpt
@@ -1,7 +1,10 @@
--TEST--
Test finfo_open() function : error functionality
--SKIPIF--
-<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
+<?php require_once(dirname(__FILE__) . '/skipif.inc');
+if(substr(PHP_OS, 0, 3) == 'WIN' )
+ die("skip Not Valid for Windows");
+?>
--FILE--
<?php
/* Prototype : resource finfo_open([int options [, string arg]])
diff --git a/ext/fileinfo/tests/resources/test.awk b/ext/fileinfo/tests/resources/test.awk
new file mode 100644
index 000000000..e000d5041
--- /dev/null
+++ b/ext/fileinfo/tests/resources/test.awk
@@ -0,0 +1 @@
+BEGIN { print "START" }
diff --git a/ext/gmp/tests/022-win32.phpt b/ext/gmp/tests/022-win32.phpt
new file mode 100644
index 000000000..7abb0e82b
--- /dev/null
+++ b/ext/gmp/tests/022-win32.phpt
@@ -0,0 +1,90 @@
+--TEST--
+gmp_gcdext() basic tests
+--SKIPIF--
+<?php if (!extension_loaded("gmp")) print "skip";
+if(substr(PHP_OS, 0, 3) != 'WIN' ) {
+ die('skip windows only test');
+}
+?>
+--FILE--
+<?php
+
+$n = gmp_init("34293864345");
+$n1 = gmp_init("23434293864345");
+
+$a = array(
+ array(123,45),
+ array(4341,9734),
+ array(23487,333),
+ array(-234234,-123123),
+ array(-100,-2234),
+ array(345,"34587345"),
+ array(345,"0"),
+ array("345556456",345873),
+ array("34545345556456","323432445873"),
+ array($n, $n1),
+ );
+
+foreach ($a as $val) {
+ $r = gmp_gcdext($val[0],$val[1]);
+ var_dump(gmp_strval($r['g']));
+ var_dump(gmp_strval($r['s']));
+ var_dump(gmp_strval($r['t']));
+}
+
+var_dump(gmp_gcdext($val[0],array()));
+var_dump(gmp_gcdext(array(),array()));
+var_dump(gmp_gcdext(array(),array(),1));
+var_dump(gmp_gcdext(array()));
+var_dump(gmp_gcdext());
+
+echo "Done\n";
+?>
+--EXPECTF--
+string(1) "3"
+string(2) "41"
+string(4) "-112"
+string(1) "1"
+string(4) "-805"
+string(3) "359"
+string(1) "3"
+string(2) "32"
+string(5) "-2257"
+string(4) "3003"
+string(3) "-10"
+string(2) "19"
+string(1) "2"
+string(2) "67"
+string(2) "-3"
+string(2) "15"
+string(7) "-601519"
+string(1) "6"
+string(3) "345"
+string(1) "1"
+string(1) "0"
+string(1) "1"
+string(5) "84319"
+string(9) "-84241831"
+string(1) "1"
+string(12) "167180205823"
+string(15) "-17856272782919"
+string(3) "195"
+string(15) "-23387298979862"
+string(11) "34225091793"
+
+Warning: gmp_gcdext(): Unable to convert variable to GMP - wrong type in %s on line %d
+bool(false)
+
+Warning: gmp_gcdext(): Unable to convert variable to GMP - wrong type in %s on line %d
+bool(false)
+
+Warning: gmp_gcdext() expects exactly 2 parameters, 3 given in %s on line %d
+NULL
+
+Warning: gmp_gcdext() expects exactly 2 parameters, 1 given in %s on line %d
+NULL
+
+Warning: gmp_gcdext() expects exactly 2 parameters, 0 given in %s on line %d
+NULL
+Done
+
diff --git a/ext/gmp/tests/022.phpt b/ext/gmp/tests/022.phpt
index 805c9b675..f699e8283 100644
--- a/ext/gmp/tests/022.phpt
+++ b/ext/gmp/tests/022.phpt
@@ -1,7 +1,11 @@
--TEST--
gmp_gcdext() basic tests
--SKIPIF--
-<?php if (!extension_loaded("gmp")) print "skip"; ?>
+<?php if (!extension_loaded("gmp")) print "skip";
+if (substr(PHP_OS, 0, 3) == 'WIN') {
+ die('skip.. only for Non Windows Systems');
+}
+?>
--FILE--
<?php
diff --git a/ext/gmp/tests/gmp_nextprime-win32.phpt b/ext/gmp/tests/gmp_nextprime-win32.phpt
new file mode 100644
index 000000000..e725315a1
--- /dev/null
+++ b/ext/gmp/tests/gmp_nextprime-win32.phpt
@@ -0,0 +1,45 @@
+--TEST--
+gmp_nextprime()
+--SKIPIF--
+<?php if (!extension_loaded("gmp")) print "skip";
+if(substr(PHP_OS, 0, 3) != 'WIN' ) {
+ die('skip windows only test');
+}
+?>
+--FILE--
+<?php
+
+$n = gmp_nextprime(-1);
+var_dump(gmp_strval($n));
+$n = gmp_nextprime(0);
+var_dump(gmp_strval($n));
+$n = gmp_nextprime(-1000);
+var_dump(gmp_strval($n));
+$n = gmp_nextprime(1000);
+var_dump(gmp_strval($n));
+$n = gmp_nextprime(100000);
+var_dump(gmp_strval($n));
+$n = gmp_nextprime(array());
+var_dump(gmp_strval($n));
+$n = gmp_nextprime("");
+var_dump(gmp_strval($n));
+$n = gmp_nextprime(new stdclass());
+var_dump(gmp_strval($n));
+
+echo "Done\n";
+?>
+--EXPECTF--
+string(1) "2"
+string(1) "2"
+string(4) "-997"
+string(4) "1009"
+string(6) "100003"
+
+Warning: gmp_nextprime(): Unable to convert variable to GMP - wrong type in %s on line %d
+string(1) "0"
+string(1) "0"
+
+Warning: gmp_nextprime(): Unable to convert variable to GMP - wrong type in %s on line %d
+string(1) "0"
+Done
+
diff --git a/ext/gmp/tests/gmp_nextprime.phpt b/ext/gmp/tests/gmp_nextprime.phpt
index 65506ce13..623ccbed0 100644
--- a/ext/gmp/tests/gmp_nextprime.phpt
+++ b/ext/gmp/tests/gmp_nextprime.phpt
@@ -1,7 +1,11 @@
--TEST--
gmp_nextprime()
--SKIPIF--
-<?php if (!extension_loaded("gmp")) print "skip"; ?>
+<?php if (!extension_loaded("gmp")) print "skip";
+if (substr(PHP_OS, 0, 3) == 'WIN') {
+ die('skip.. only for Non Windows Systems');
+}
+?>
--FILE--
<?php
diff --git a/ext/iconv/iconv.c b/ext/iconv/iconv.c
index 92675eb12..9cae53513 100644
--- a/ext/iconv/iconv.c
+++ b/ext/iconv/iconv.c
@@ -190,7 +190,7 @@ typedef enum _php_iconv_enc_scheme_t {
#define PHP_ICONV_MIME_DECODE_STRICT (1<<0)
#define PHP_ICONV_MIME_DECODE_CONTINUE_ON_ERROR (1<<1)
-/* {{{ prototypes */
+/* {{{ prototypes */
static php_iconv_err_t _php_iconv_appendl(smart_str *d, const char *s, size_t l, iconv_t cd);
static php_iconv_err_t _php_iconv_appendc(smart_str *d, const char c, iconv_t cd);
@@ -249,7 +249,7 @@ PHP_MINIT_FUNCTION(miconv)
{
static char buf[16];
snprintf(buf, sizeof(buf), "%d.%d",
- ((_libiconv_version >> 8) & 0x0f), (_libiconv_version & 0x0f));
+ ((_libiconv_version >> 8) & 0x0f), (_libiconv_version & 0x0f));
version = buf;
}
#elif HAVE_GLIBC_ICONV
@@ -354,7 +354,7 @@ static int php_iconv_output_handler(void **nothing, php_output_context *output_c
if (mimetype != NULL && !(output_context->op & PHP_OUTPUT_HANDLER_CLEAN)) {
int len;
- char *p = strstr(ICONVG(output_encoding), "//");
+ char *p = strstr(ICONVG(output_encoding), "//");
if (p) {
len = spprintf(&content_type, 0, "Content-Type:%.*s; charset=%.*s", mimetype_len ? mimetype_len : (int) strlen(mimetype), mimetype, (int)(p - ICONVG(output_encoding)), ICONVG(output_encoding));
@@ -375,7 +375,7 @@ static int php_iconv_output_handler(void **nothing, php_output_context *output_c
return SUCCESS;
}
-
+
/* {{{ _php_iconv_appendl() */
static php_iconv_err_t _php_iconv_appendl(smart_str *d, const char *s, size_t l, iconv_t cd)
{
@@ -400,7 +400,7 @@ static php_iconv_err_t _php_iconv_appendl(smart_str *d, const char *s, size_t l,
if (iconv(cd, (char **)&in_p, &in_left, (char **) &out_p, &out_left) == (size_t)-1) {
#if ICONV_SUPPORTS_ERRNO
- switch (errno) {
+ switch (errno) {
case EINVAL:
return PHP_ICONV_ERR_ILLEGAL_CHAR;
@@ -415,7 +415,7 @@ static php_iconv_err_t _php_iconv_appendl(smart_str *d, const char *s, size_t l,
}
#else
if (prev_in_left == in_left) {
- return PHP_ICONV_ERR_UNKNOWN;
+ return PHP_ICONV_ERR_UNKNOWN;
}
#endif
}
@@ -446,7 +446,7 @@ static php_iconv_err_t _php_iconv_appendl(smart_str *d, const char *s, size_t l,
#else
if (out_left != 0) {
return PHP_ICONV_ERR_UNKNOWN;
- }
+ }
#endif
}
(d)->len += (buf_growth - out_left);
@@ -492,31 +492,35 @@ PHP_ICONV_API php_iconv_err_t php_iconv_string(const char *in_p, size_t in_len,
in_size = in_len;
cd = iconv_open(out_charset, in_charset);
-
+
if (cd == (iconv_t)(-1)) {
return PHP_ICONV_ERR_UNKNOWN;
}
out_buffer = (char *) emalloc(out_size + 1);
out_p = out_buffer;
-
+
#ifdef NETWARE
result = iconv(cd, (char **) &in_p, &in_size, (char **)
#else
result = iconv(cd, (const char **) &in_p, &in_size, (char **)
#endif
&out_p, &out_left);
-
+
if (result == (size_t)(-1)) {
efree(out_buffer);
return PHP_ICONV_ERR_UNKNOWN;
}
if (out_left < 8) {
- out_buffer = (char *) erealloc(out_buffer, out_size + 8);
+ size_t pos = out_p - out_buffer;
+ out_buffer = (char *) safe_erealloc(out_buffer, out_size, 1, 8);
+ out_p = out_buffer+pos;
+ out_size += 7;
+ out_left += 7;
}
- /* flush the shift-out sequences */
+ /* flush the shift-out sequences */
result = iconv(cd, NULL, NULL, &out_p, &out_left);
if (result == (size_t)(-1)) {
@@ -555,10 +559,10 @@ PHP_ICONV_API php_iconv_err_t php_iconv_string(const char *in_p, size_t in_len,
}
}
in_left= in_len;
- out_left = in_len + 32; /* Avoid realloc() most cases */
+ out_left = in_len + 32; /* Avoid realloc() most cases */
out_size = 0;
bsz = out_left;
- out_buf = (char *) emalloc(bsz+1);
+ out_buf = (char *) emalloc(bsz+1);
out_p = out_buf;
while (in_left > 0) {
@@ -573,14 +577,14 @@ PHP_ICONV_API php_iconv_err_t php_iconv_string(const char *in_p, size_t in_len,
out_p = out_buf = tmp_buf;
out_p += out_size;
out_left = bsz - out_size;
- continue;
+ continue;
}
}
break;
}
if (result != (size_t)(-1)) {
- /* flush the shift-out sequences */
+ /* flush the shift-out sequences */
for (;;) {
result = iconv(cd, NULL, NULL, (char **) &out_p, &out_left);
out_size = bsz - out_left;
@@ -592,7 +596,7 @@ PHP_ICONV_API php_iconv_err_t php_iconv_string(const char *in_p, size_t in_len,
if (errno == E2BIG) {
bsz += 16;
tmp_buf = (char *) erealloc(out_buf, bsz);
-
+
out_p = out_buf = tmp_buf;
out_p += out_size;
out_left = bsz - out_size;
@@ -684,7 +688,7 @@ static php_iconv_err_t _php_iconv_strlen(unsigned int *pretval, const char *str,
}
if (out_left > 0) {
- cnt -= out_left / GENERIC_SUPERSET_NBYTES;
+ cnt -= out_left / GENERIC_SUPERSET_NBYTES;
}
#if ICONV_SUPPORTS_ERRNO
@@ -735,12 +739,12 @@ static php_iconv_err_t _php_iconv_substr(smart_str *pretval,
unsigned int cnt;
int total_len;
-
+
err = _php_iconv_strlen(&total_len, str, nbytes, enc);
if (err != PHP_ICONV_ERR_SUCCESS) {
return err;
}
-
+
if (len < 0) {
if ((len += (total_len - offset)) < 0) {
return PHP_ICONV_ERR_SUCCESS;
@@ -772,7 +776,7 @@ static php_iconv_err_t _php_iconv_substr(smart_str *pretval,
smart_str_0(pretval);
return PHP_ICONV_ERR_SUCCESS;
}
-
+
cd1 = iconv_open(GENERIC_SUPERSET_NAME, enc);
if (cd1 == (iconv_t)(-1)) {
@@ -857,7 +861,7 @@ static php_iconv_err_t _php_iconv_substr(smart_str *pretval,
if (cd2 != (iconv_t)NULL) {
iconv_close(cd2);
- }
+ }
return err;
}
@@ -1042,7 +1046,7 @@ static php_iconv_err_t _php_iconv_strpos(unsigned int *pretval,
if (ndl_buf) {
efree(ndl_buf);
}
-
+
iconv_close(cd);
return err;
@@ -1089,7 +1093,7 @@ static php_iconv_err_t _php_iconv_mime_encode(smart_str *pretval, const char *fn
if ((fname_nbytes + 2) >= max_line_len
|| (out_charset_len + 12) >= max_line_len) {
/* field name is too long */
- err = PHP_ICONV_ERR_TOO_BIG;
+ err = PHP_ICONV_ERR_TOO_BIG;
goto out;
}
@@ -1131,7 +1135,7 @@ static php_iconv_err_t _php_iconv_mime_encode(smart_str *pretval, const char *fn
char_cnt -= 2;
in_p = fval;
- in_left = fval_nbytes;
+ in_left = fval_nbytes;
do {
size_t prev_in_left;
@@ -1142,8 +1146,8 @@ static php_iconv_err_t _php_iconv_mime_encode(smart_str *pretval, const char *fn
smart_str_appendl(pretval, lfchars, lfchars_len);
smart_str_appendc(pretval, ' ');
char_cnt = max_line_len - 1;
- }
-
+ }
+
smart_str_appendl(pretval, "=?", sizeof("=?") - 1);
char_cnt -= 2;
smart_str_appendl(pretval, out_charset, out_charset_len);
@@ -1195,7 +1199,7 @@ static php_iconv_err_t _php_iconv_mime_encode(smart_str *pretval, const char *fn
goto out;
}
break;
-
+
default:
err = PHP_ICONV_ERR_UNKNOWN;
goto out;
@@ -1295,7 +1299,7 @@ static php_iconv_err_t _php_iconv_mime_encode(smart_str *pretval, const char *fn
goto out;
}
break;
-
+
default:
err = PHP_ICONV_ERR_UNKNOWN;
goto out;
@@ -1372,7 +1376,7 @@ out:
}
if (encoded != NULL) {
efree(encoded);
- }
+ }
if (buf != NULL) {
efree(buf);
}
@@ -1391,7 +1395,7 @@ static php_iconv_err_t _php_iconv_mime_decode(smart_str *pretval, const char *st
size_t str_left;
unsigned int scan_stat = 0;
const char *csname = NULL;
- size_t csname_len;
+ size_t csname_len;
const char *encoded_text = NULL;
size_t encoded_text_len = 0;
const char *encoded_word = NULL;
@@ -1430,7 +1434,7 @@ static php_iconv_err_t _php_iconv_mime_decode(smart_str *pretval, const char *st
break;
case '\n':
- scan_stat = 8;
+ scan_stat = 8;
break;
case '=': /* first letter of an encoded chunk */
@@ -1455,7 +1459,7 @@ static php_iconv_err_t _php_iconv_mime_decode(smart_str *pretval, const char *st
case 1: /* expecting a delimiter */
if (*p1 != '?') {
- err = _php_iconv_appendl(pretval, encoded_word, (size_t)((p1 + 1) - encoded_word), cd_pl);
+ err = _php_iconv_appendl(pretval, encoded_word, (size_t)((p1 + 1) - encoded_word), cd_pl);
if (err != PHP_ICONV_ERR_SUCCESS) {
goto out;
}
@@ -1470,7 +1474,7 @@ static php_iconv_err_t _php_iconv_mime_decode(smart_str *pretval, const char *st
csname = p1 + 1;
scan_stat = 2;
break;
-
+
case 2: /* expecting a charset name */
switch (*p1) {
case '?': /* normal delimiter: encoding scheme follows */
@@ -1480,7 +1484,7 @@ static php_iconv_err_t _php_iconv_mime_decode(smart_str *pretval, const char *st
case '*': /* new style delimiter: locale id follows */
scan_stat = 10;
break;
- }
+ }
if (scan_stat != 2) {
char tmpbuf[80];
@@ -1493,7 +1497,7 @@ static php_iconv_err_t _php_iconv_mime_decode(smart_str *pretval, const char *st
if (csname_len > sizeof(tmpbuf) - 1) {
if ((mode & PHP_ICONV_MIME_DECODE_CONTINUE_ON_ERROR)) {
- err = _php_iconv_appendl(pretval, encoded_word, (size_t)((p1 + 1) - encoded_word), cd_pl);
+ err = _php_iconv_appendl(pretval, encoded_word, (size_t)((p1 + 1) - encoded_word), cd_pl);
if (err != PHP_ICONV_ERR_SUCCESS) {
goto out;
}
@@ -1549,7 +1553,7 @@ static php_iconv_err_t _php_iconv_mime_decode(smart_str *pretval, const char *st
--str_left;
}
- err = _php_iconv_appendl(pretval, encoded_word, (size_t)((p1 + 1) - encoded_word), cd_pl);
+ err = _php_iconv_appendl(pretval, encoded_word, (size_t)((p1 + 1) - encoded_word), cd_pl);
if (err != PHP_ICONV_ERR_SUCCESS) {
goto out;
}
@@ -1608,12 +1612,12 @@ static php_iconv_err_t _php_iconv_mime_decode(smart_str *pretval, const char *st
}
}
break;
-
+
case 4: /* expecting a delimiter */
if (*p1 != '?') {
if ((mode & PHP_ICONV_MIME_DECODE_CONTINUE_ON_ERROR)) {
/* pass the entire chunk through the converter */
- err = _php_iconv_appendl(pretval, encoded_word, (size_t)((p1 + 1) - encoded_word), cd_pl);
+ err = _php_iconv_appendl(pretval, encoded_word, (size_t)((p1 + 1) - encoded_word), cd_pl);
if (err != PHP_ICONV_ERR_SUCCESS) {
goto out;
}
@@ -1669,7 +1673,7 @@ static php_iconv_err_t _php_iconv_mime_decode(smart_str *pretval, const char *st
if (*p1 != '=') {
if ((mode & PHP_ICONV_MIME_DECODE_CONTINUE_ON_ERROR)) {
/* pass the entire chunk through the converter */
- err = _php_iconv_appendl(pretval, encoded_word, (size_t)((p1 + 1) - encoded_word), cd_pl);
+ err = _php_iconv_appendl(pretval, encoded_word, (size_t)((p1 + 1) - encoded_word), cd_pl);
if (err != PHP_ICONV_ERR_SUCCESS) {
goto out;
}
@@ -1696,17 +1700,17 @@ static php_iconv_err_t _php_iconv_mime_decode(smart_str *pretval, const char *st
switch (*p1) {
default:
/* Handle non-RFC-compliant formats
- *
+ *
* RFC2047 requires the character that comes right
* after an encoded word (chunk) to be a whitespace,
* while there are lots of broken implementations that
* generate such malformed headers that don't fulfill
* that requirement.
- */
- if (!eos) {
+ */
+ if (!eos) {
if ((mode & PHP_ICONV_MIME_DECODE_STRICT)) {
/* pass the entire chunk through the converter */
- err = _php_iconv_appendl(pretval, encoded_word, (size_t)((p1 + 1) - encoded_word), cd_pl);
+ err = _php_iconv_appendl(pretval, encoded_word, (size_t)((p1 + 1) - encoded_word), cd_pl);
if (err != PHP_ICONV_ERR_SUCCESS) {
goto out;
}
@@ -1738,7 +1742,7 @@ static php_iconv_err_t _php_iconv_mime_decode(smart_str *pretval, const char *st
if (decoded_text == NULL) {
if ((mode & PHP_ICONV_MIME_DECODE_CONTINUE_ON_ERROR)) {
/* pass the entire chunk through the converter */
- err = _php_iconv_appendl(pretval, encoded_word, (size_t)((p1 + 1) - encoded_word), cd_pl);
+ err = _php_iconv_appendl(pretval, encoded_word, (size_t)((p1 + 1) - encoded_word), cd_pl);
if (err != PHP_ICONV_ERR_SUCCESS) {
goto out;
}
@@ -1761,7 +1765,7 @@ static php_iconv_err_t _php_iconv_mime_decode(smart_str *pretval, const char *st
if (err != PHP_ICONV_ERR_SUCCESS) {
if ((mode & PHP_ICONV_MIME_DECODE_CONTINUE_ON_ERROR)) {
/* pass the entire chunk through the converter */
- err = _php_iconv_appendl(pretval, encoded_word, (size_t)(p1 - encoded_word), cd_pl);
+ err = _php_iconv_appendl(pretval, encoded_word, (size_t)(p1 - encoded_word), cd_pl);
encoded_word = NULL;
if (err != PHP_ICONV_ERR_SUCCESS) {
break;
@@ -1956,7 +1960,7 @@ PHP_FUNCTION(iconv_strlen)
char *charset = ICONVG(internal_encoding);
int charset_len = 0;
char *str;
- int str_len;
+ int str_len;
php_iconv_err_t err;
@@ -1972,7 +1976,7 @@ PHP_FUNCTION(iconv_strlen)
RETURN_FALSE;
}
- err = _php_iconv_strlen(&retval, str, str_len, charset);
+ err = _php_iconv_strlen(&retval, str, str_len, charset);
_php_iconv_show_error(err, GENERIC_SUPERSET_NAME, charset TSRMLS_CC);
if (err == PHP_ICONV_ERR_SUCCESS) {
RETVAL_LONG(retval);
@@ -1989,7 +1993,7 @@ PHP_FUNCTION(iconv_substr)
char *charset = ICONVG(internal_encoding);
int charset_len = 0;
char *str;
- int str_len;
+ int str_len;
long offset, length = 0;
php_iconv_err_t err;
@@ -2008,10 +2012,10 @@ PHP_FUNCTION(iconv_substr)
}
if (ZEND_NUM_ARGS() < 3) {
- length = str_len;
+ length = str_len;
}
- err = _php_iconv_substr(&retval, str, str_len, offset, length, charset);
+ err = _php_iconv_substr(&retval, str, str_len, offset, length, charset);
_php_iconv_show_error(err, GENERIC_SUPERSET_NAME, charset TSRMLS_CC);
if (err == PHP_ICONV_ERR_SUCCESS && str != NULL && retval.c != NULL) {
@@ -2029,7 +2033,7 @@ PHP_FUNCTION(iconv_strpos)
char *charset = ICONVG(internal_encoding);
int charset_len = 0;
char *haystk;
- int haystk_len;
+ int haystk_len;
char *ndl;
int ndl_len;
long offset = 0;
@@ -2059,7 +2063,7 @@ PHP_FUNCTION(iconv_strpos)
}
err = _php_iconv_strpos(&retval, haystk, haystk_len, ndl, ndl_len,
- offset, charset);
+ offset, charset);
_php_iconv_show_error(err, GENERIC_SUPERSET_NAME, charset TSRMLS_CC);
if (err == PHP_ICONV_ERR_SUCCESS && retval != (unsigned int)-1) {
@@ -2077,7 +2081,7 @@ PHP_FUNCTION(iconv_strrpos)
char *charset = ICONVG(internal_encoding);
int charset_len = 0;
char *haystk;
- int haystk_len;
+ int haystk_len;
char *ndl;
int ndl_len;
@@ -2101,7 +2105,7 @@ PHP_FUNCTION(iconv_strrpos)
}
err = _php_iconv_strpos(&retval, haystk, haystk_len, ndl, ndl_len,
- -1, charset);
+ -1, charset);
_php_iconv_show_error(err, GENERIC_SUPERSET_NAME, charset TSRMLS_CC);
if (err == PHP_ICONV_ERR_SUCCESS && retval != (unsigned int)-1) {
@@ -2241,7 +2245,7 @@ PHP_FUNCTION(iconv_mime_decode)
char *charset = ICONVG(internal_encoding);
int charset_len = 0;
long mode = 0;
-
+
smart_str retval = {0};
php_iconv_err_t err;
@@ -2282,7 +2286,7 @@ PHP_FUNCTION(iconv_mime_decode_headers)
char *charset = ICONVG(internal_encoding);
int charset_len = 0;
long mode = 0;
-
+
php_iconv_err_t err = PHP_ICONV_ERR_SUCCESS;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|ls",
@@ -2350,14 +2354,14 @@ PHP_FUNCTION(iconv_mime_decode_headers)
zend_hash_update(Z_ARRVAL_P(return_value), header_name, header_name_len, (void *)&new_elem, sizeof(new_elem), NULL);
elem = &new_elem;
- }
+ }
add_next_index_stringl(*elem, header_value, header_value_len, 1);
} else {
add_assoc_stringl_ex(return_value, header_name, header_name_len, header_value, header_value_len, 1);
}
}
encoded_str_len -= next_pos - encoded_str;
- encoded_str = next_pos;
+ encoded_str = next_pos;
smart_str_free(&decoded_header);
}
@@ -2378,7 +2382,7 @@ PHP_NAMED_FUNCTION(php_if_iconv)
size_t out_len;
int in_charset_len = 0, out_charset_len = 0, in_buffer_len;
php_iconv_err_t err;
-
+
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sss",
&in_charset, &in_charset_len, &out_charset, &out_charset_len, &in_buffer, &in_buffer_len) == FAILURE)
return;
@@ -2390,7 +2394,7 @@ PHP_NAMED_FUNCTION(php_if_iconv)
err = php_iconv_string(in_buffer, (size_t)in_buffer_len,
&out_buffer, &out_len, out_charset, in_charset);
- _php_iconv_show_error(err, out_charset, in_charset TSRMLS_CC);
+ _php_iconv_show_error(err, out_charset, in_charset TSRMLS_CC);
if (err == PHP_ICONV_ERR_SUCCESS && out_buffer != NULL) {
RETVAL_STRINGL(out_buffer, out_len, 0);
} else {
@@ -2539,7 +2543,7 @@ static int php_iconv_stream_filter_append_bucket(
icnt = buf_len;
}
- out_buf_size = ocnt = prev_ocnt = initial_out_buf_size;
+ out_buf_size = ocnt = prev_ocnt = initial_out_buf_size;
if (NULL == (out_buf = pemalloc(out_buf_size, persistent))) {
return FAILURE;
}
diff --git a/ext/imap/tests/imap_errors_basic.phpt b/ext/imap/tests/imap_errors_basic.phpt
index 9d2ca30ec..91be3286a 100644
--- a/ext/imap/tests/imap_errors_basic.phpt
+++ b/ext/imap/tests/imap_errors_basic.phpt
@@ -7,7 +7,7 @@ require_once(dirname(__FILE__).'/skipif.inc');
--FILE--
<?php
/* Prototype : array imap_errors ( void )
- * Description: Returns all of the IMAP errors that have occured.
+ * Description: Returns all of the IMAP errors that have occurred.
* Source code: ext/imap/php_imap.c
*/
diff --git a/ext/intl/collator/collator_sort.c b/ext/intl/collator/collator_sort.c
index a871c90a8..0785111c9 100755
--- a/ext/intl/collator/collator_sort.c
+++ b/ext/intl/collator/collator_sort.c
@@ -594,6 +594,8 @@ PHP_FUNCTION( collator_get_sort_key )
RETURN_FALSE;
}
+ /* ucol_getSortKey is exception in that the key length includes the
+ * NUL terminator*/
key_len = ucol_getSortKey(co->ucoll, ustr, ustr_len, key, 0);
if(!key_len) {
efree( ustr );
@@ -605,7 +607,7 @@ PHP_FUNCTION( collator_get_sort_key )
if(!key_len) {
RETURN_FALSE;
}
- RETURN_STRINGL((char *)key, key_len, 0);
+ RETURN_STRINGL((char *)key, key_len - 1, 0);
}
/* }}} */
diff --git a/ext/intl/common/common_error.c b/ext/intl/common/common_error.c
index 24ded0c9f..a0ee7c145 100755
--- a/ext/intl/common/common_error.c
+++ b/ext/intl/common/common_error.c
@@ -24,7 +24,7 @@
#include "common_error.h"
/* {{{ proto int intl_get_error_code()
- * Get code of the last occured error.
+ * Get code of the last occurred error.
*/
PHP_FUNCTION( intl_get_error_code )
{
@@ -33,7 +33,7 @@ PHP_FUNCTION( intl_get_error_code )
/* }}} */
/* {{{ proto string intl_get_error_message()
- * Get text description of the last occured error.
+ * Get text description of the last occurred error.
*/
PHP_FUNCTION( intl_get_error_message )
{
diff --git a/ext/intl/dateformat/dateformat.c b/ext/intl/dateformat/dateformat.c
index 6f7432254..b399a39fc 100755
--- a/ext/intl/dateformat/dateformat.c
+++ b/ext/intl/dateformat/dateformat.c
@@ -99,17 +99,46 @@ static void datefmt_ctor(INTERNAL_FUNCTION_PARAMETERS)
}
INTL_CHECK_LOCALE_LEN_OBJ(locale_len, return_value);
+
+ if (calendar != UCAL_TRADITIONAL && calendar != UCAL_GREGORIAN) {
+ intl_error_set(NULL, U_ILLEGAL_ARGUMENT_ERROR, "datefmt_create: "
+ "invalid value for calendar type; it must be one of "
+ "IntlDateFormatter::TRADITIONAL (locale's default calendar) "
+ "or IntlDateFormatter::GREGORIAN", 0 TSRMLS_CC);
+ goto error;
+ }
+
DATE_FORMAT_METHOD_FETCH_OBJECT;
+
+ if (DATE_FORMAT_OBJECT(dfo) != NULL) {
+ intl_errors_set(INTL_DATA_ERROR_P(dfo), U_ILLEGAL_ARGUMENT_ERROR,
+ "datefmt_create: cannot call constructor twice", 0 TSRMLS_CC);
+ return;
+ }
+
/* Convert pattern (if specified) to UTF-16. */
if( pattern_str && pattern_str_len>0 ){
- intl_convert_utf8_to_utf16(&svalue, &slength, pattern_str, pattern_str_len, &INTL_DATA_ERROR_CODE(dfo));
- INTL_CTOR_CHECK_STATUS(dfo, "datefmt_create: error converting pattern to UTF-16");
+ intl_convert_utf8_to_utf16(&svalue, &slength,
+ pattern_str, pattern_str_len, &INTL_DATA_ERROR_CODE(dfo));
+ if (U_FAILURE(INTL_DATA_ERROR_CODE(dfo))) {
+ /* object construction -> only set global error */
+ intl_error_set(NULL, INTL_DATA_ERROR_CODE(dfo), "datefmt_create: "
+ "error converting pattern to UTF-16", 0 TSRMLS_CC);
+ goto error;
+ }
}
+
+ /* resources allocated from now on */
/* Convert pattern (if specified) to UTF-16. */
if( timezone_str && timezone_str_len >0 ){
- intl_convert_utf8_to_utf16(&timezone_utf16, &timezone_utf16_len, timezone_str, timezone_str_len, &INTL_DATA_ERROR_CODE(dfo));
- INTL_CTOR_CHECK_STATUS(dfo, "datefmt_create: error converting timezone_str to UTF-16" );
+ intl_convert_utf8_to_utf16(&timezone_utf16, &timezone_utf16_len,
+ timezone_str, timezone_str_len, &INTL_DATA_ERROR_CODE(dfo));
+ if (U_FAILURE(INTL_DATA_ERROR_CODE(dfo))) {
+ intl_error_set(NULL, INTL_DATA_ERROR_CODE(dfo), "datefmt_create: "
+ "error converting timezone_str to UTF-16", 0 TSRMLS_CC);
+ goto error;
+ }
}
if(locale_len == 0) {
@@ -122,25 +151,25 @@ static void datefmt_ctor(INTERNAL_FUNCTION_PARAMETERS)
DATE_FORMAT_OBJECT(dfo) = udat_open(time_type, date_type, locale, timezone_utf16, timezone_utf16_len, svalue, slength, &INTL_DATA_ERROR_CODE(dfo));
}
- /* Set the calendar if passed */
- if(!U_FAILURE(INTL_DATA_ERROR_CODE(dfo)) && calendar) {
- ucal_obj = ucal_open( timezone_utf16, timezone_utf16_len, locale, calendar, &INTL_DATA_ERROR_CODE(dfo) );
- if(!U_FAILURE(INTL_DATA_ERROR_CODE(dfo))) {
- udat_setCalendar( DATE_FORMAT_OBJECT(dfo), ucal_obj );
+ if (!U_FAILURE(INTL_DATA_ERROR_CODE(dfo))) {
+ if (calendar != UCAL_TRADITIONAL) {
+ ucal_obj = ucal_open(timezone_utf16, timezone_utf16_len, locale,
+ calendar, &INTL_DATA_ERROR_CODE(dfo));
+ if (!U_FAILURE(INTL_DATA_ERROR_CODE(dfo))) {
+ udat_setCalendar(DATE_FORMAT_OBJECT(dfo), ucal_obj);
+ ucal_close(ucal_obj);
+ } else {
+ intl_error_set(NULL, INTL_DATA_ERROR_CODE(dfo), "datefmt_create"
+ ": error opening calendar", 0 TSRMLS_CC);
+ goto error;
+ }
}
- }
-
- if(svalue)
- {
- efree(svalue);
- }
- if(timezone_utf16)
- {
- efree(timezone_utf16);
+ } else {
+ intl_error_set(NULL, INTL_DATA_ERROR_CODE(dfo), "datefmt_create: date "
+ "formatter creation failed", 0 TSRMLS_CC);
+ goto error;
}
- INTL_CTOR_CHECK_STATUS(dfo, "datefmt_create: date formatter creation failed");
-
/* Set the class variables */
dfo->date_type = date_type;
dfo->time_type = time_type;
@@ -148,6 +177,19 @@ static void datefmt_ctor(INTERNAL_FUNCTION_PARAMETERS)
if( timezone_str && timezone_str_len > 0){
dfo->timezone_id = estrndup( timezone_str, timezone_str_len);
}
+
+error:
+ if (svalue) {
+ efree(svalue);
+ }
+ if (timezone_utf16) {
+ efree(timezone_utf16);
+ }
+ if (U_FAILURE(intl_error_get_code(NULL TSRMLS_CC))) {
+ /* free_object handles partially constructed instances fine */
+ zval_dtor(return_value);
+ RETVAL_NULL();
+ }
}
/* }}} */
@@ -169,6 +211,8 @@ PHP_FUNCTION( datefmt_create )
*/
PHP_METHOD( IntlDateFormatter, __construct )
{
+ /* return_value param is being changed, therefore we will always return
+ * NULL here */
return_value = getThis();
datefmt_ctor(INTERNAL_FUNCTION_PARAM_PASSTHRU);
}
diff --git a/ext/intl/doc/collator_api.php b/ext/intl/doc/collator_api.php
index 542878375..ef7250243 100755
--- a/ext/intl/doc/collator_api.php
+++ b/ext/intl/doc/collator_api.php
@@ -116,7 +116,7 @@ class Collator {
/**
* Return error text for the last ICU operation.
*
- * @return string Description of an error occured in the last
+ * @return string Description of an error occurred in the last
* Collator method call.
*/
public function getErrorMessage() {}
@@ -236,7 +236,7 @@ class Collator {
*
* @return string Real locale name from which the
* collation data comes. If the collator
- * was instantiated from rules or an error occured,
+ * was instantiated from rules or an error occurred,
* returns false.
*/
public function getLocale( $type ) {}
@@ -331,7 +331,7 @@ function collator_sort_with_sort_keys( $coll, $arr ) {}
*
* @return string Real locale name from which the
* collation data comes. If the collator
- * was instantiated from rules or an error occured,
+ * was instantiated from rules or an error occurred,
* returns false.
*/
function collator_get_locale( $coll, $type ) {}
@@ -391,7 +391,7 @@ function collator_get_error_code( $coll ) {}
*
* @param Collator $coll Collator object.
*
- * @return string Description of an error occured in the last
+ * @return string Description of an error occurred in the last
* Collator API function call.
*/
function collator_get_error_message( $coll ) {}
diff --git a/ext/intl/doc/common_api.php b/ext/intl/doc/common_api.php
index ce2329fe3..993dab180 100755
--- a/ext/intl/doc/common_api.php
+++ b/ext/intl/doc/common_api.php
@@ -1,7 +1,7 @@
<?php
/**
- * Handling of errors occured in static methods
+ * Handling of errors occurred in static methods
* when there's no object to get error code/message from.
*
* Example #1:
@@ -29,7 +29,7 @@ function intl_get_error_code() {}
/**
* Get description of the last error.
*
- * @return string Description of an error occured in the last
+ * @return string Description of an error occurred in the last
* API function call.
*/
function intl_get_error_message() {}
diff --git a/ext/intl/doc/datefmt_api.php b/ext/intl/doc/datefmt_api.php
index 0c5002e28..272abdb57 100755
--- a/ext/intl/doc/datefmt_api.php
+++ b/ext/intl/doc/datefmt_api.php
@@ -215,7 +215,7 @@ class DateFormatter {
/**
* Sets the pattern to use
* @param string $pattern new pattern string to use
- * @return boolean 'true' if successful, 'false' if an error occured. Bad format
+ * @return boolean 'true' if successful, 'false' if an error occurred. Bad format
* strings are usually the cause of the latter.
*/
public function setPattern($pattern) {}
@@ -410,7 +410,7 @@ class DateFormatter {
* Sets the pattern to use
* @param DateFormatter $fmt The date formatter resource
* @param string $pattern new pattern string to use
- * @return boolean 'true' if successful, 'false' if an error occured. Bad format
+ * @return boolean 'true' if successful, 'false' if an error occurred. Bad format
* strings are usually the cause of the latter.
*/
function datefmt_set_pattern($fmt , $pattern) {}
diff --git a/ext/intl/doc/formatter_api.php b/ext/intl/doc/formatter_api.php
index 754b16c62..14d98db66 100755
--- a/ext/intl/doc/formatter_api.php
+++ b/ext/intl/doc/formatter_api.php
@@ -317,7 +317,7 @@ class NumberFormatter {
/**
* Get the error text from the last operation.
*
- * @return string Description of the last occured error.
+ * @return string Description of the last occurred error.
*/
public public function getErrorMessage() {}
@@ -495,6 +495,6 @@ function numfmt_get_error_code($formatter) {}
* Get the error text from the last operation.
*
* @param NumberFormatter $formatter The formatter resource
- * @return string Description of the last occured error.
+ * @return string Description of the last occurred error.
*/
function numfmt_get_error_message($formatter) {}
diff --git a/ext/intl/doc/msgfmt_api.php b/ext/intl/doc/msgfmt_api.php
index 5d178f127..e4d047b97 100755
--- a/ext/intl/doc/msgfmt_api.php
+++ b/ext/intl/doc/msgfmt_api.php
@@ -54,7 +54,7 @@ class MessageFormatter {
* @param string $locale the locale to use when formatting numbers and dates and suchlike
* @param string $pattern the pattern string to insert things into
* @param array $args the array of values to insert into $pattern
- * @return string the formatted pattern string or false if an error occured
+ * @return string the formatted pattern string or false if an error occurred
*/
public static function formatMessage($locale, $pattern, $args) {}
@@ -148,7 +148,7 @@ class MessageFormatter {
* @param string $locale the locale to use when formatting numbers and dates and suchlike
* @param string $pattern the pattern string to insert things into
* @param array $args the array of values to insert into $pattern
- * @return string the formatted pattern string or false if an error occured
+ * @return string the formatted pattern string or false if an error occurred
*/
function msgfmt_format_message($locale, $pattern, $args) {}
diff --git a/ext/intl/grapheme/grapheme_string.c b/ext/intl/grapheme/grapheme_string.c
index 692e2f80b..475bbe418 100755
--- a/ext/intl/grapheme/grapheme_string.c
+++ b/ext/intl/grapheme/grapheme_string.c
@@ -822,6 +822,7 @@ PHP_FUNCTION(grapheme_extract)
}
else {
/* initialize next */
+ zval_dtor(next);
ZVAL_LONG(next, lstart);
}
}
diff --git a/ext/intl/intl_convert.c b/ext/intl/intl_convert.c
index 33f173062..92cdc4cef 100755
--- a/ext/intl/intl_convert.c
+++ b/ext/intl/intl_convert.c
@@ -67,7 +67,7 @@ void intl_convert_utf8_to_utf16(
return;
}
- /* Bail out if an unexpected error occured.
+ /* Bail out if an unexpected error occurred.
* (U_BUFFER_OVERFLOW_ERROR means that *target buffer is not large enough).
* (U_STRING_NOT_TERMINATED_WARNING usually means that the input string is empty).
*/
@@ -119,7 +119,7 @@ void intl_convert_utf16_to_utf8(
*status = U_ZERO_ERROR;
u_strToUTF8( NULL, 0, &dst_len, src, src_len, status );
- /* Bail out if an unexpected error occured.
+ /* Bail out if an unexpected error occurred.
* (U_BUFFER_OVERFLOW_ERROR means that *target buffer is not large enough).
* (U_STRING_NOT_TERMINATED_WARNING usually means that the input string is empty).
*/
diff --git a/ext/intl/msgformat/msgformat.c b/ext/intl/msgformat/msgformat.c
index 84f14de1b..0a01204fa 100755
--- a/ext/intl/msgformat/msgformat.c
+++ b/ext/intl/msgformat/msgformat.c
@@ -64,9 +64,11 @@ static void msgfmt_ctor(INTERNAL_FUNCTION_PARAMETERS)
locale = INTL_G(default_locale);
}
+#ifdef MSG_FORMAT_QUOTE_APOS
if(msgformat_fix_quotes(&spattern, &spattern_len, &INTL_DATA_ERROR_CODE(mfo)) != SUCCESS) {
INTL_CTOR_CHECK_STATUS(mfo, "msgfmt_create: error converting pattern to quote-friendly format");
}
+#endif
if ((mfo)->mf_data.orig_format) {
msgformat_data_free(&mfo->mf_data TSRMLS_CC);
diff --git a/ext/intl/msgformat/msgformat_attr.c b/ext/intl/msgformat/msgformat_attr.c
index cf3466514..ed2dae27d 100755
--- a/ext/intl/msgformat/msgformat_attr.c
+++ b/ext/intl/msgformat/msgformat_attr.c
@@ -82,11 +82,13 @@ PHP_FUNCTION( msgfmt_set_pattern )
intl_convert_utf8_to_utf16(&spattern, &spattern_len, value, value_len, &INTL_DATA_ERROR_CODE(mfo));
INTL_METHOD_CHECK_STATUS(mfo, "Error converting pattern to UTF-16" );
+#ifdef MSG_FORMAT_QUOTE_APOS
if(msgformat_fix_quotes(&spattern, &spattern_len, &INTL_DATA_ERROR_CODE(mfo)) != SUCCESS) {
intl_error_set( NULL, U_INVALID_FORMAT_ERROR,
"msgfmt_set_pattern: error converting pattern to quote-friendly format", 0 TSRMLS_CC );
RETURN_FALSE;
}
+#endif
/* TODO: add parse error information */
umsg_applyPattern(MSG_FORMAT_OBJECT(mfo), spattern, spattern_len, NULL, &INTL_DATA_ERROR_CODE(mfo));
diff --git a/ext/intl/msgformat/msgformat_class.h b/ext/intl/msgformat/msgformat_class.h
index 0afa792ae..b6b8e3322 100755
--- a/ext/intl/msgformat/msgformat_class.h
+++ b/ext/intl/msgformat/msgformat_class.h
@@ -19,9 +19,11 @@
#include <php.h>
-#include "intl_common.h"
-#include "intl_error.h"
-#include "intl_data.h"
+#include <unicode/uconfig.h>
+
+#include "../intl_common.h"
+#include "../intl_error.h"
+#include "../intl_data.h"
#include "msgformat_data.h"
typedef struct {
@@ -38,4 +40,8 @@ extern zend_class_entry *MessageFormatter_ce_ptr;
#define MSG_FORMAT_METHOD_FETCH_OBJECT INTL_METHOD_FETCH_OBJECT(MessageFormatter, mfo)
#define MSG_FORMAT_OBJECT(mfo) (mfo)->mf_data.umsgf
+#if U_ICU_VERSION_MAJOR_NUM * 10 + U_ICU_VERSION_MINOR_NUM < 48
+# define MSG_FORMAT_QUOTE_APOS 1
+#endif
+
#endif // #ifndef MSG_FORMAT_CLASS_H
diff --git a/ext/intl/msgformat/msgformat_data.c b/ext/intl/msgformat/msgformat_data.c
index 95e81d3ea..527c1d4d1 100755
--- a/ext/intl/msgformat/msgformat_data.c
+++ b/ext/intl/msgformat/msgformat_data.c
@@ -21,6 +21,8 @@
#include <unicode/ustring.h>
#include "msgformat_data.h"
+#include "msgformat_class.h"
+
/* {{{ void msgformat_data_init( msgformat_data* mf_data )
* Initialize internals of msgformat_data.
*/
@@ -69,6 +71,7 @@ msgformat_data* msgformat_data_create( TSRMLS_D )
}
/* }}} */
+#ifdef MSG_FORMAT_QUOTE_APOS
int msgformat_fix_quotes(UChar **spattern, uint32_t *spattern_len, UErrorCode *ec)
{
if(*spattern && *spattern_len && u_strchr(*spattern, (UChar)'\'')) {
@@ -86,6 +89,7 @@ int msgformat_fix_quotes(UChar **spattern, uint32_t *spattern_len, UErrorCode *e
}
return SUCCESS;
}
+#endif
/*
diff --git a/ext/intl/msgformat/msgformat_data.h b/ext/intl/msgformat/msgformat_data.h
index 44001753b..6479888f8 100755
--- a/ext/intl/msgformat/msgformat_data.h
+++ b/ext/intl/msgformat/msgformat_data.h
@@ -19,9 +19,9 @@
#include <php.h>
-#include <unicode/umsg.h>
+#include "../intl_error.h"
-#include "intl_error.h"
+#include <unicode/umsg.h>
typedef struct {
// error hangling
@@ -36,6 +36,9 @@ typedef struct {
msgformat_data* msgformat_data_create( TSRMLS_D );
void msgformat_data_init( msgformat_data* mf_data TSRMLS_DC );
void msgformat_data_free( msgformat_data* mf_data TSRMLS_DC );
+
+#ifdef MSG_FORMAT_QUOTE_APOS
int msgformat_fix_quotes(UChar **spattern, uint32_t *spattern_len, UErrorCode *ec);
+#endif
#endif // MSG_FORMAT_DATA_H
diff --git a/ext/intl/msgformat/msgformat_format.c b/ext/intl/msgformat/msgformat_format.c
index b664c83ec..9a18ac0a7 100755
--- a/ext/intl/msgformat/msgformat_format.c
+++ b/ext/intl/msgformat/msgformat_format.c
@@ -154,11 +154,13 @@ PHP_FUNCTION( msgfmt_format_message )
slocale = INTL_G(default_locale);
}
+#ifdef MSG_FORMAT_QUOTE_APOS
if(msgformat_fix_quotes(&spattern, &spattern_len, &INTL_DATA_ERROR_CODE(mfo)) != SUCCESS) {
intl_error_set( NULL, U_INVALID_FORMAT_ERROR,
"msgfmt_format_message: error converting pattern to quote-friendly format", 0 TSRMLS_CC );
RETURN_FALSE;
}
+#endif
/* Create an ICU message formatter. */
MSG_FORMAT_OBJECT(mfo) = umsg_open(spattern, spattern_len, slocale, NULL, &INTL_DATA_ERROR_CODE(mfo));
diff --git a/ext/intl/msgformat/msgformat_parse.c b/ext/intl/msgformat/msgformat_parse.c
index 8393d4c6e..f540b1d0c 100755
--- a/ext/intl/msgformat/msgformat_parse.c
+++ b/ext/intl/msgformat/msgformat_parse.c
@@ -129,11 +129,13 @@ PHP_FUNCTION( msgfmt_parse_message )
slocale = INTL_G(default_locale);
}
+#ifdef MSG_FORMAT_QUOTE_APOS
if(msgformat_fix_quotes(&spattern, &spattern_len, &INTL_DATA_ERROR_CODE(mfo)) != SUCCESS) {
intl_error_set( NULL, U_INVALID_FORMAT_ERROR,
"msgfmt_parse_message: error converting pattern to quote-friendly format", 0 TSRMLS_CC );
RETURN_FALSE;
}
+#endif
/* Create an ICU message formatter. */
MSG_FORMAT_OBJECT(mfo) = umsg_open(spattern, spattern_len, slocale, NULL, &INTL_DATA_ERROR_CODE(mfo));
diff --git a/ext/intl/normalizer/normalizer_normalize.c b/ext/intl/normalizer/normalizer_normalize.c
index 466ab97e1..f46285e9d 100755
--- a/ext/intl/normalizer/normalizer_normalize.c
+++ b/ext/intl/normalizer/normalizer_normalize.c
@@ -110,7 +110,7 @@ PHP_FUNCTION( normalizer_normalize )
/* normalize */
size_needed = unorm_normalize( uinput, uinput_len, form, (int32_t) 0 /* options */, uret_buf, uret_len, &status);
- /* Bail out if an unexpected error occured.
+ /* Bail out if an unexpected error occurred.
* (U_BUFFER_OVERFLOW_ERROR means that *target buffer is not large enough).
* (U_STRING_NOT_TERMINATED_WARNING usually means that the input string is empty).
*/
@@ -133,7 +133,7 @@ PHP_FUNCTION( normalizer_normalize )
/* try normalize again */
size_needed = unorm_normalize( uinput, uinput_len, form, (int32_t) 0 /* options */, uret_buf, uret_len, &status);
- /* Bail out if an unexpected error occured. */
+ /* Bail out if an unexpected error occurred. */
if( U_FAILURE(status) ) {
/* Set error messages. */
intl_error_set_custom_msg( NULL,"Error normalizing string", 0 TSRMLS_CC );
@@ -234,7 +234,7 @@ PHP_FUNCTION( normalizer_is_normalized )
efree( uinput );
- /* Bail out if an unexpected error occured. */
+ /* Bail out if an unexpected error occurred. */
if( U_FAILURE(status) ) {
/* Set error messages. */
intl_error_set_custom_msg( NULL,"Error testing if string is the given normalization form.", 0 TSRMLS_CC );
diff --git a/ext/intl/resourcebundle/resourcebundle_class.c b/ext/intl/resourcebundle/resourcebundle_class.c
index 5471e5b3f..1205450c4 100644
--- a/ext/intl/resourcebundle/resourcebundle_class.c
+++ b/ext/intl/resourcebundle/resourcebundle_class.c
@@ -91,7 +91,7 @@ static void resourcebundle_ctor(INTERNAL_FUNCTION_PARAMETERS)
intl_error_reset( NULL TSRMLS_CC );
- if( zend_parse_parameters( ZEND_NUM_ARGS() TSRMLS_CC, "ss|b",
+ if( zend_parse_parameters( ZEND_NUM_ARGS() TSRMLS_CC, "s!s!|b",
&locale, &locale_len, &bundlename, &bundlename_len, &fallback ) == FAILURE )
{
intl_error_set( NULL, U_ILLEGAL_ARGUMENT_ERROR,
@@ -101,6 +101,10 @@ static void resourcebundle_ctor(INTERNAL_FUNCTION_PARAMETERS)
}
INTL_CHECK_LOCALE_LEN_OBJ(locale_len, return_value);
+
+ if (locale == NULL) {
+ locale = INTL_G(default_locale);
+ }
if (fallback) {
rb->me = ures_open(bundlename, locale, &INTL_DATA_ERROR_CODE(rb));
@@ -110,13 +114,17 @@ static void resourcebundle_ctor(INTERNAL_FUNCTION_PARAMETERS)
INTL_CTOR_CHECK_STATUS(rb, "resourcebundle_ctor: Cannot load libICU resource bundle");
- if (!fallback && (INTL_DATA_ERROR_CODE(rb) == U_USING_FALLBACK_WARNING || INTL_DATA_ERROR_CODE(rb) == U_USING_DEFAULT_WARNING)) {
- intl_errors_set_code( NULL, INTL_DATA_ERROR_CODE(rb) TSRMLS_CC );
- spprintf( &pbuf, 0, "resourcebundle_ctor: Cannot load libICU resource '%s' without fallback from %s to %s",
- bundlename, locale, ures_getLocaleByType( rb->me, ULOC_ACTUAL_LOCALE, &INTL_DATA_ERROR_CODE(rb)) );
- intl_errors_set_custom_msg( INTL_DATA_ERROR_P(rb), pbuf, 1 TSRMLS_CC );
+ if (!fallback && (INTL_DATA_ERROR_CODE(rb) == U_USING_FALLBACK_WARNING ||
+ INTL_DATA_ERROR_CODE(rb) == U_USING_DEFAULT_WARNING)) {
+ intl_errors_set_code(NULL, INTL_DATA_ERROR_CODE(rb) TSRMLS_CC);
+ spprintf(&pbuf, 0, "resourcebundle_ctor: Cannot load libICU resource "
+ "'%s' without fallback from %s to %s",
+ bundlename ? bundlename : "(default data)", locale,
+ ures_getLocaleByType(
+ rb->me, ULOC_ACTUAL_LOCALE, &INTL_DATA_ERROR_CODE(rb)));
+ intl_errors_set_custom_msg(INTL_DATA_ERROR_P(rb), pbuf, 1 TSRMLS_CC);
efree(pbuf);
- zval_dtor( return_value );
+ zval_dtor(return_value);
RETURN_NULL();
}
}
@@ -427,6 +435,8 @@ void resourcebundle_register_class( TSRMLS_D )
ResourceBundle_object_handlers.clone_obj = NULL; /* ICU ResourceBundle has no clone implementation */
ResourceBundle_object_handlers.read_dimension = resourcebundle_array_get;
ResourceBundle_object_handlers.count_elements = resourcebundle_array_count;
+
+ zend_class_implements(ResourceBundle_ce_ptr TSRMLS_CC, 1, zend_ce_traversable);
}
/* }}} */
diff --git a/ext/intl/tests/bug62017.phpt b/ext/intl/tests/bug62017.phpt
new file mode 100644
index 000000000..13c4fe5df
--- /dev/null
+++ b/ext/intl/tests/bug62017.phpt
@@ -0,0 +1,22 @@
+--TEST--
+Bug #62017: datefmt_create with incorrectly encoded timezone leaks pattern
+--SKIPIF--
+<?php
+if (!extension_loaded('intl'))
+ die('skip intl extension not enabled');
+--FILE--
+<?php
+ini_set('intl.error_level', E_WARNING);
+var_dump(
+ datefmt_create('', IntlDateFormatter::NONE, IntlDateFormatter::NONE, "\xFF",
+ IntlDateFormatter::GREGORIAN, 'a'));
+var_dump(
+ new IntlDateFormatter('', IntlDateFormatter::NONE, IntlDateFormatter::NONE, "Europe/Lisbon",
+ IntlDateFormatter::GREGORIAN, "\x80"));
+--EXPECTF--
+Warning: datefmt_create(): datefmt_create: error converting timezone_str to UTF-16 in %s on line %d
+NULL
+
+Warning: IntlDateFormatter::__construct(): datefmt_create: error converting pattern to UTF-16 in %s on line %d
+NULL
+
diff --git a/ext/intl/tests/bug62070.phpt b/ext/intl/tests/bug62070.phpt
new file mode 100644
index 000000000..a466b05c2
--- /dev/null
+++ b/ext/intl/tests/bug62070.phpt
@@ -0,0 +1,16 @@
+--TEST--
+Bug #62070: Collator::getSortKey() returns garbage
+--SKIPIF--
+<?php
+if (!extension_loaded('intl'))
+ die('skip intl extension not enabled');
+--FILE--
+<?php
+$s1 = 'Hello';
+
+$coll = collator_create('en_US');
+$res = collator_get_sort_key($coll, $s1);
+
+echo urlencode($res);
+--EXPECT--
+5%2F%3D%3DC%01%09%01%8F%08
diff --git a/ext/intl/tests/bug62081.phpt b/ext/intl/tests/bug62081.phpt
new file mode 100644
index 000000000..7d9e2cec4
--- /dev/null
+++ b/ext/intl/tests/bug62081.phpt
@@ -0,0 +1,14 @@
+--TEST--
+Bug #62081: IntlDateFormatter leaks memory if called twice
+--SKIPIF--
+<?php
+if (!extension_loaded('intl'))
+ die('skip intl extension not enabled');
+--FILE--
+<?php
+ini_set('intl.error_level', E_WARNING);
+$x = new IntlDateFormatter(1,1,1,1,1);
+var_dump($x->__construct(1,1,1,1,1));
+--EXPECTF--
+Warning: IntlDateFormatter::__construct(): datefmt_create: cannot call constructor twice in %s on line %d
+NULL
diff --git a/ext/intl/tests/bug62083.phpt b/ext/intl/tests/bug62083.phpt
new file mode 100644
index 000000000..4baa5c5e9
--- /dev/null
+++ b/ext/intl/tests/bug62083.phpt
@@ -0,0 +1,12 @@
+--TEST--
+Bug #62083: grapheme_extract() leaks memory
+--SKIPIF--
+<?php
+if (!extension_loaded('intl'))
+ die('skip intl extension not enabled');
+--FILE--
+<?php
+$arr1 = array();
+var_dump(grapheme_extract(-1, -1, -1,-1, $arr1));
+--EXPECT--
+bool(false)
diff --git a/ext/intl/tests/collator_get_sort_key.phpt b/ext/intl/tests/collator_get_sort_key.phpt
index 0fedde0ff..a9c4d7134 100755
--- a/ext/intl/tests/collator_get_sort_key.phpt
+++ b/ext/intl/tests/collator_get_sort_key.phpt
@@ -2,8 +2,7 @@
collator_get_sort_key()
--SKIPIF--
<?php if( !extension_loaded( 'intl' ) ) print 'skip'; ?>
---XFAIL--
-Sort keys are not fixed, comparing them to fixed strings doesn't work.
+<?php if(version_compare(INTL_ICU_VERSION, '4.8') < 0) print 'skip ICU >= 4.8 only'; ?>
--FILE--
<?php
@@ -18,8 +17,8 @@ function sort_arrays( $locale, $data )
foreach($data as $value) {
$res_val = ut_coll_get_sort_key( $coll, $value );
- $res_str .= "source: ".urlencode($value)."\n".
- "key: ".urlencode($res_val)."\n";
+ $res_str .= "source: ".$value."\n".
+ "key: ".bin2hex($res_val)."\n";
}
return $res_str;
@@ -58,42 +57,42 @@ ut_run();
?>
--EXPECT--
source: abc
-key: %29%2B-%01%07%01%07%00
+key: 27292b01070107
source: abd
-key: %29%2B%2F%01%07%01%07%00
+key: 27292d01070107
source: aaa
-key: %29%29%29%01%07%01%07%00
-source: %D0%B0%D0%B0
-key: _++%01%06%01%06%00
-source: %D0%B0
-key: _+%01%05%01%05%00
+key: 27272701070107
+source: аа
+key: 5c0a0a01060106
+source: а
+key: 5c0a01050105
source: z
-key: %5B%01%05%01%05%00
-source:
-key: %01%01%00
-source:
-key: %01%01%00
+key: 5901050105
+source:
+key: 0101
+source:
+key: 0101
source: 3
-key: %26%80%01%05%01%05%00
+key: 1801050105
source: y
-key: Y%01%05%01%05%00
+key: 5701050105
source: i
-key: 9%01%05%01%05%00
+key: 3701050105
source: k
-key: %3D%01%05%01%05%00
-source: %D0%B0%D0%B1%D0%B3
-key: _+%2C0%01%07%01%07%00
-source: %D0%B0%D0%B1%D0%B2
-key: _+%2C.%01%07%01%07%00
-source: %D0%B6%D0%B6%D0%B6
-key: _LLL%01%07%01%07%00
-source: %D1%8D%D1%8E%D1%8F
-key: %60%05%09%0B%01%07%01%07%00
-source: %D0%B0%D0%B1%D0%B3
-key: _+%2C0%01%07%01%07%00
-source: %D0%B0%D0%B1%D0%B2
-key: _+%2C.%01%07%01%07%00
-source: %D0%B6%D0%B6%D0%B6
-key: _LLL%01%07%01%07%00
-source: %D1%8D%D1%8E%D1%8F
-key: %60%05%09%0B%01%07%01%07%00 \ No newline at end of file
+key: 3b01050105
+source: абг
+key: 5c0a161a01070107
+source: абв
+key: 5c0a161801070107
+source: жжж
+key: 5c3a3a3a01070107
+source: эюя
+key: 5d3b3f4501070107
+source: абг
+key: 5c0a161a01070107
+source: абв
+key: 5c0a161801070107
+source: жжж
+key: 5c3a3a3a01070107
+source: эюя
+key: 5d3b3f4501070107 \ No newline at end of file
diff --git a/ext/intl/tests/dateformat_calendars.phpt b/ext/intl/tests/dateformat_calendars.phpt
new file mode 100644
index 000000000..27f380c71
--- /dev/null
+++ b/ext/intl/tests/dateformat_calendars.phpt
@@ -0,0 +1,45 @@
+--TEST--
+IntlDateFormatter, calendars and time zone
+--INI--
+date.timezone=Atlantic/Azores
+--SKIPIF--
+<?php
+if (!extension_loaded('intl'))
+ die('skip intl extension not enabled');
+--FILE--
+<?php
+ini_set("intl.error_level", E_WARNING);
+
+$fmt1 = new IntlDateFormatter('en_US',
+ IntlDateFormatter::FULL,
+ IntlDateFormatter::FULL,
+ 'GMT+05:12',
+ IntlDateFormatter::TRADITIONAL);
+$fmt2 = new IntlDateFormatter('en_US',
+ IntlDateFormatter::FULL,
+ IntlDateFormatter::FULL,
+ 'GMT+05:12',
+ IntlDateFormatter::GREGORIAN);
+$fmt3 = new IntlDateFormatter('en_US@calendar=hebrew',
+ IntlDateFormatter::FULL,
+ IntlDateFormatter::FULL,
+ 'GMT+05:12',
+ IntlDateFormatter::TRADITIONAL);
+var_dump($fmt1->format(strtotime('2012-01-01 00:00:00 +0000')));
+var_dump($fmt2->format(strtotime('2012-01-01 00:00:00 +0000')));
+var_dump($fmt3->format(strtotime('2012-01-01 00:00:00 +0000')));
+
+new IntlDateFormatter('en_US@calendar=hebrew',
+ IntlDateFormatter::FULL,
+ IntlDateFormatter::FULL,
+ 'GMT+05:12',
+ -1);
+?>
+==DONE==
+--EXPECTF--
+string(44) "Sunday, January 1, 2012 5:12:00 AM GMT+05:12"
+string(44) "Sunday, January 1, 2012 5:12:00 AM GMT+05:12"
+string(42) "Sunday, Tevet 6, 5772 5:12:00 AM GMT+05:12"
+
+Warning: IntlDateFormatter::__construct(): datefmt_create: invalid value for calendar type; it must be one of IntlDateFormatter::TRADITIONAL (locale's default calendar) or IntlDateFormatter::GREGORIAN in %s on line %d
+==DONE==
diff --git a/ext/intl/tests/formatter_get_error.phpt b/ext/intl/tests/formatter_get_error.phpt
index c7b397270..acb683e89 100755
--- a/ext/intl/tests/formatter_get_error.phpt
+++ b/ext/intl/tests/formatter_get_error.phpt
@@ -19,7 +19,7 @@ function ut_main()
if( $num === false )
return $fmt->getErrorMessage() . " (" . $fmt->getErrorCode() . ")\n";
else
- return "Ooops, an error should have occured.";
+ return "Ooops, an error should have occurred.";
}
include_once( 'ut_common.inc' );
diff --git a/ext/intl/tests/formatter_get_set_attribute.phpt b/ext/intl/tests/formatter_get_set_attribute.phpt
index cb5e41575..51c7d3658 100755
--- a/ext/intl/tests/formatter_get_set_attribute.phpt
+++ b/ext/intl/tests/formatter_get_set_attribute.phpt
@@ -1,8 +1,8 @@
--TEST--
-numfmt_get/set_attribute() icu < 4.2
+numfmt_get/set_attribute()
--SKIPIF--
<?php if( !extension_loaded( 'intl' ) ) print 'skip'; ?>
-<?php if(version_compare(INTL_ICU_VERSION, '4.2', '<') != 1) print 'skip'; ?>
+<?php if(version_compare(INTL_ICU_VERSION, '4.2', '<') != 1) print 'skip for ICU 4.4+'; ?>
--FILE--
<?php
@@ -29,7 +29,7 @@ function ut_main()
'ROUNDING_MODE' => array( NumberFormatter::ROUNDING_MODE, 1, 12345.123456 ),
'ROUNDING_INCREMENT' => array( NumberFormatter::ROUNDING_INCREMENT, (float)2, 12345.123456 ),
'FORMAT_WIDTH' => array( NumberFormatter::FORMAT_WIDTH, 27, 12345.123456 ),
- 'PADDING_POSITION' => array( NumberFormatter::PADDING_POSITION, 21, 12345.123456 ),
+ 'PADDING_POSITION' => array( NumberFormatter::PADDING_POSITION, 2, 12345.123456 ),
'SECONDARY_GROUPING_SIZE' => array( NumberFormatter::SECONDARY_GROUPING_SIZE, 2, 12345.123456 ),
'SIGNIFICANT_DIGITS_USED' => array( NumberFormatter::SIGNIFICANT_DIGITS_USED, 1, 12345.123456 ),
'MIN_SIGNIFICANT_DIGITS' => array( NumberFormatter::MIN_SIGNIFICANT_DIGITS, 3, 1 ),
@@ -159,7 +159,7 @@ Setting attribute: ok
New attribute value: 1 ; Format result: '0,012,345.12345' ; Parse result: 12345.12345
Attribute ROUNDING_INCREMENT
-Old attribute value: 1.0E-5 ; Format result: '0,012,345.12346' ; Parse result: 12345.12346
+Old attribute value: 0 ; Format result: '0,012,345.12346' ; Parse result: 12345.12346
Setting attribute: ok
New attribute value: 2 ; Format result: '0,012,346.00000' ; Parse result: 12346
@@ -171,7 +171,7 @@ New attribute value: 27 ; Format result: '************0,012,345.12346' ; Parse
Attribute PADDING_POSITION
Old attribute value: 0 ; Format result: '************0,012,345.12346' ; Parse result: 12345.12346
Setting attribute: ok
-New attribute value: 21 ; Format result: '0,012,345.12346' ; Parse result: 12345.12346
+New attribute value: 2 ; Format result: '0,012,345.12346************' ; Parse result: 12345.12346
Attribute SECONDARY_GROUPING_SIZE
Old attribute value: 0 ; Format result: '************0,012,345.12346' ; Parse result: 12345.12346
diff --git a/ext/intl/tests/formatter_get_set_attribute2.phpt b/ext/intl/tests/formatter_get_set_attribute2.phpt
deleted file mode 100644
index 7d5fe69dc..000000000
--- a/ext/intl/tests/formatter_get_set_attribute2.phpt
+++ /dev/null
@@ -1,194 +0,0 @@
---TEST--
-numfmt_get/set_attribute() icu >= 4.8
---SKIPIF--
-<?php if( !extension_loaded( 'intl' ) ) print 'skip'; ?>
-<?php if(version_compare(INTL_ICU_VERSION, '4.8') < 0) print 'skip'; ?>
---FILE--
-<?php
-
-/*
- * Get/set various number formatting attributes.
- */
-
-
-function ut_main()
-{
- // attr_name => array( attr, value )
- $attributes = array(
- 'PARSE_INT_ONLY' => array( NumberFormatter::PARSE_INT_ONLY, 1, 12345.123456 ),
- 'GROUPING_USED' => array( NumberFormatter::GROUPING_USED, 0, 12345.123456 ),
- 'DECIMAL_ALWAYS_SHOWN' => array( NumberFormatter::DECIMAL_ALWAYS_SHOWN, 1, 12345 ),
- 'MAX_INTEGER_DIGITS' => array( NumberFormatter::MAX_INTEGER_DIGITS, 2, 12345.123456 ),
- 'MIN_INTEGER_DIGITS' => array( NumberFormatter::MIN_INTEGER_DIGITS, 20, 12345.123456 ),
- 'INTEGER_DIGITS' => array( NumberFormatter::INTEGER_DIGITS, 7, 12345.123456 ),
- 'MAX_FRACTION_DIGITS' => array( NumberFormatter::MAX_FRACTION_DIGITS, 2, 12345.123456 ),
- 'MIN_FRACTION_DIGITS' => array( NumberFormatter::MIN_FRACTION_DIGITS, 20, 12345.123456 ),
- 'FRACTION_DIGITS' => array( NumberFormatter::FRACTION_DIGITS, 5, 12345.123456 ),
- 'MULTIPLIER' => array( NumberFormatter::MULTIPLIER, 2, 12345.123456 ),
- 'GROUPING_SIZE' => array( NumberFormatter::GROUPING_SIZE, 2, 12345.123456 ),
- 'ROUNDING_MODE' => array( NumberFormatter::ROUNDING_MODE, 1, 12345.123456 ),
- 'ROUNDING_INCREMENT' => array( NumberFormatter::ROUNDING_INCREMENT, (float)2, 12345.123456 ),
- 'FORMAT_WIDTH' => array( NumberFormatter::FORMAT_WIDTH, 27, 12345.123456 ),
- 'PADDING_POSITION' => array( NumberFormatter::PADDING_POSITION, 21, 12345.123456 ),
- 'SECONDARY_GROUPING_SIZE' => array( NumberFormatter::SECONDARY_GROUPING_SIZE, 2, 12345.123456 ),
- 'SIGNIFICANT_DIGITS_USED' => array( NumberFormatter::SIGNIFICANT_DIGITS_USED, 1, 12345.123456 ),
- 'MIN_SIGNIFICANT_DIGITS' => array( NumberFormatter::MIN_SIGNIFICANT_DIGITS, 3, 1 ),
- 'MAX_SIGNIFICANT_DIGITS' => array( NumberFormatter::MAX_SIGNIFICANT_DIGITS, 4, 12345.123456 ),
- // 'LENIENT_PARSE' => array( NumberFormatter::LENIENT_PARSE, 2, 12345.123456 )
- );
-
- $res_str = '';
-
- $fmt = ut_nfmt_create( "en_US", NumberFormatter::DECIMAL );
-
- foreach( $attributes as $attr_name => $args )
- {
- list( $attr, $new_val, $number ) = $args;
- $res_str .= "\nAttribute $attr_name\n";
-
- // Get original value of the attribute.
- $orig_val = ut_nfmt_get_attribute( $fmt, $attr );
-
- // Format the number using the original attribute value.
- $rc = ut_nfmt_format( $fmt, $number );
-
- $ps = ut_nfmt_parse( $fmt, $rc );
-
- $res_str .= sprintf( "Old attribute value: %s ; Format result: %s ; Parse result: %s\n",
- dump( $orig_val ),
- dump( $rc ),
- dump( $ps ) );
-
- // Set new attribute value.
- $rc = ut_nfmt_set_attribute( $fmt, $attr, $new_val );
- if( $rc )
- $res_str .= "Setting attribute: ok\n";
- else
- $res_str .= sprintf( "Setting attribute failed: %s\n", ut_nfmt_get_error_message( $fmt ) );
-
- // Format the number using the new value.
- $rc = ut_nfmt_format( $fmt, $number );
-
- // Get current value of the attribute and check if it equals $new_val.
- $attr_val_check = ut_nfmt_get_attribute( $fmt, $attr );
- if( $attr_val_check !== $new_val )
- $res_str .= "ERROR: New $attr_name attribute value has not been set correctly.\n";
-
- $ps = ut_nfmt_parse( $fmt, $rc );
-
- $res_str .= sprintf( "New attribute value: %s ; Format result: %s ; Parse result: %s\n",
- dump( $new_val ),
- dump( $rc ),
- dump( $ps ) );
-
-
- // Restore original attribute of the value
- if( $attr != NumberFormatter::INTEGER_DIGITS && $attr != NumberFormatter::FRACTION_DIGITS
- && $attr != NumberFormatter::FORMAT_WIDTH && $attr != NumberFormatter::SIGNIFICANT_DIGITS_USED )
- ut_nfmt_set_attribute( $fmt, $attr, $orig_val );
- }
-
- return $res_str;
-}
-
-include_once( 'ut_common.inc' );
-
-// Run the test
-ut_run();
-
-?>
---EXPECT--
-Attribute PARSE_INT_ONLY
-Old attribute value: 0 ; Format result: '12,345.123' ; Parse result: 12345.123
-Setting attribute: ok
-New attribute value: 1 ; Format result: '12,345.123' ; Parse result: 12345
-
-Attribute GROUPING_USED
-Old attribute value: 1 ; Format result: '12,345.123' ; Parse result: 12345.123
-Setting attribute: ok
-New attribute value: 0 ; Format result: '12345.123' ; Parse result: 12345.123
-
-Attribute DECIMAL_ALWAYS_SHOWN
-Old attribute value: 0 ; Format result: '12,345' ; Parse result: 12345
-Setting attribute: ok
-New attribute value: 1 ; Format result: '12,345.' ; Parse result: 12345
-
-Attribute MAX_INTEGER_DIGITS
-Old attribute value: 309 ; Format result: '12,345.123' ; Parse result: 12345.123
-Setting attribute: ok
-New attribute value: 2 ; Format result: '45.123' ; Parse result: 45.123
-
-Attribute MIN_INTEGER_DIGITS
-Old attribute value: 1 ; Format result: '12,345.123' ; Parse result: 12345.123
-Setting attribute: ok
-New attribute value: 20 ; Format result: '00,000,000,000,000,012,345.123' ; Parse result: 12345.123
-
-Attribute INTEGER_DIGITS
-Old attribute value: 1 ; Format result: '12,345.123' ; Parse result: 12345.123
-Setting attribute: ok
-New attribute value: 7 ; Format result: '0,012,345.123' ; Parse result: 12345.123
-
-Attribute MAX_FRACTION_DIGITS
-Old attribute value: 3 ; Format result: '0,012,345.123' ; Parse result: 12345.123
-Setting attribute: ok
-New attribute value: 2 ; Format result: '0,012,345.12' ; Parse result: 12345.12
-
-Attribute MIN_FRACTION_DIGITS
-Old attribute value: 0 ; Format result: '0,012,345.123' ; Parse result: 12345.123
-Setting attribute: ok
-New attribute value: 20 ; Format result: '0,012,345.12345600000000000000' ; Parse result: 12345.123456
-
-Attribute FRACTION_DIGITS
-Old attribute value: 0 ; Format result: '0,012,345.123456' ; Parse result: 12345.123456
-Setting attribute: ok
-New attribute value: 5 ; Format result: '0,012,345.12346' ; Parse result: 12345.12346
-
-Attribute MULTIPLIER
-Old attribute value: 1 ; Format result: '0,012,345.12346' ; Parse result: 12345.12346
-Setting attribute: ok
-New attribute value: 2 ; Format result: '0,024,690.24691' ; Parse result: 12345.123455
-
-Attribute GROUPING_SIZE
-Old attribute value: 3 ; Format result: '0,012,345.12346' ; Parse result: 12345.12346
-Setting attribute: ok
-New attribute value: 2 ; Format result: '0,01,23,45.12346' ; Parse result: 12345.12346
-
-Attribute ROUNDING_MODE
-Old attribute value: 4 ; Format result: '0,012,345.12346' ; Parse result: 12345.12346
-Setting attribute: ok
-New attribute value: 1 ; Format result: '0,012,345.12345' ; Parse result: 12345.12345
-
-Attribute ROUNDING_INCREMENT
-Old attribute value: 0 ; Format result: '0,012,345.12346' ; Parse result: 12345.12346
-Setting attribute: ok
-New attribute value: 2 ; Format result: '0,012,346.00000' ; Parse result: 12346
-
-Attribute FORMAT_WIDTH
-Old attribute value: 0 ; Format result: '0,012,345.12346' ; Parse result: 12345.12346
-Setting attribute: ok
-New attribute value: 27 ; Format result: '************0,012,345.12346' ; Parse result: 12345.12346
-
-Attribute PADDING_POSITION
-Old attribute value: 0 ; Format result: '************0,012,345.12346' ; Parse result: 12345.12346
-Setting attribute: ok
-New attribute value: 21 ; Format result: '0,012,345.12346' ; Parse result: 12345.12346
-
-Attribute SECONDARY_GROUPING_SIZE
-Old attribute value: 0 ; Format result: '************0,012,345.12346' ; Parse result: 12345.12346
-Setting attribute: ok
-New attribute value: 2 ; Format result: '************00,12,345.12346' ; Parse result: 12345.12346
-
-Attribute SIGNIFICANT_DIGITS_USED
-Old attribute value: 0 ; Format result: '************0,012,345.12346' ; Parse result: 12345.12346
-Setting attribute: ok
-New attribute value: 1 ; Format result: '*******************12,345.1' ; Parse result: 12345.1
-
-Attribute MIN_SIGNIFICANT_DIGITS
-Old attribute value: 1 ; Format result: '**************************1' ; Parse result: 1
-Setting attribute: ok
-New attribute value: 3 ; Format result: '***********************1.00' ; Parse result: 1
-
-Attribute MAX_SIGNIFICANT_DIGITS
-Old attribute value: 6 ; Format result: '*******************12,345.1' ; Parse result: 12345.1
-Setting attribute: ok
-New attribute value: 4 ; Format result: '*********************12,350' ; Parse result: 12350
diff --git a/ext/intl/tests/resourcebundle_null_mandatory_args.phpt b/ext/intl/tests/resourcebundle_null_mandatory_args.phpt
new file mode 100644
index 000000000..8fde61bd2
--- /dev/null
+++ b/ext/intl/tests/resourcebundle_null_mandatory_args.phpt
@@ -0,0 +1,26 @@
+--TEST--
+IntlCalendar::setTime() basic test
+--INI--
+date.timezone=Atlantic/Azores
+--SKIPIF--
+<?php
+if (!extension_loaded('intl'))
+ die('skip intl extension not enabled');
+--FILE--
+<?php
+ini_set("intl.error_level", E_WARNING);
+
+$r = new ResourceBundle('en_US', NULL);
+$c = $r->get('calendar')->get('gregorian')->get('DateTimePatterns')->get(0);
+var_dump($c);
+
+ini_set('intl.default_locale', 'pt_PT');
+$r = new ResourceBundle(NULL, NULL);
+$c = $r->get('calendar')->get('gregorian')->get('DateTimePatterns')->get(0);
+var_dump($c);
+?>
+==DONE==
+--EXPECT--
+string(14) "h:mm:ss a zzzz"
+string(12) "H:mm:ss zzzz"
+==DONE==
diff --git a/ext/intl/tests/resourcebundle_traversable.phpt b/ext/intl/tests/resourcebundle_traversable.phpt
new file mode 100644
index 000000000..1e6af7b90
--- /dev/null
+++ b/ext/intl/tests/resourcebundle_traversable.phpt
@@ -0,0 +1,23 @@
+--TEST--
+Bug #55610: ResourceBundle does not implement Traversable
+--SKIPIF--
+<?php if( !extension_loaded( 'intl' ) ) print 'skip'; ?>
+--FILE--
+<?php
+ include "resourcebundle.inc";
+
+ $r = new ResourceBundle( 'es', BUNDLE );
+
+ var_dump($r instanceof Traversable);
+ var_dump(iterator_to_array($r->get('testarray')));
+?>
+--EXPECTF--
+bool(true)
+array(3) {
+ [0]=>
+ string(8) "cadena 1"
+ [1]=>
+ string(8) "cadena 2"
+ [2]=>
+ string(8) "cadena 3"
+}
diff --git a/ext/json/json.c b/ext/json/json.c
index 557fbc3e0..786b21ac9 100644
--- a/ext/json/json.c
+++ b/ext/json/json.c
@@ -302,7 +302,7 @@ static void json_encode_array(smart_str *buf, zval **val, int options TSRMLS_DC)
smart_str_appendc(buf, ':');
json_pretty_print_char(buf, options, ' ' TSRMLS_CC);
-
+
php_json_encode(buf, *data, options TSRMLS_CC);
} else {
if (need_comma) {
@@ -320,7 +320,7 @@ static void json_encode_array(smart_str *buf, zval **val, int options TSRMLS_DC)
smart_str_appendc(buf, ':');
json_pretty_print_char(buf, options, ' ' TSRMLS_CC);
-
+
php_json_encode(buf, *data, options TSRMLS_CC);
}
}
@@ -331,7 +331,7 @@ static void json_encode_array(smart_str *buf, zval **val, int options TSRMLS_DC)
}
}
}
-
+
--JSON_G(encoder_depth);
json_pretty_print_char(buf, options, '\n' TSRMLS_CC);
json_pretty_print_indent(buf, options TSRMLS_CC);
@@ -351,6 +351,7 @@ static void json_escape_string(smart_str *buf, char *s, int len, int options TSR
int pos = 0, ulen = 0;
unsigned short us;
unsigned short *utf16;
+ size_t newlen;
if (len == 0) {
smart_str_appendl(buf, "\"\"", 2);
@@ -378,9 +379,9 @@ static void json_escape_string(smart_str *buf, char *s, int len, int options TSR
}
return;
}
-
+
}
-
+
utf16 = (options & PHP_JSON_UNESCAPED_UNICODE) ? NULL : (unsigned short *) safe_emalloc(len, sizeof(unsigned short), 0);
ulen = utf8_to_utf16(utf16, s, len);
if (ulen <= 0) {
@@ -402,6 +403,8 @@ static void json_escape_string(smart_str *buf, char *s, int len, int options TSR
len = ulen;
}
+ /* pre-allocate for string length plus 2 quotes */
+ smart_str_alloc(buf, len+2, 0);
smart_str_appendc(buf, '"');
while (pos < len)
@@ -514,13 +517,13 @@ static void json_encode_serializable_object(smart_str *buf, zval *val, int optio
zend_class_entry *ce = Z_OBJCE_P(val);
zval *retval = NULL, fname;
HashTable* myht;
-
+
if (Z_TYPE_P(val) == IS_ARRAY) {
myht = HASH_OF(val);
} else {
myht = Z_OBJPROP_P(val);
- }
-
+ }
+
if (myht && myht->nApplyCount > 1) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "recursion detected");
smart_str_appendl(buf, "null", 4);
@@ -533,7 +536,7 @@ static void json_encode_serializable_object(smart_str *buf, zval *val, int optio
zend_throw_exception_ex(NULL, 0 TSRMLS_CC, "Failed calling %s::jsonSerialize()", ce->name);
smart_str_appendl(buf, "null", sizeof("null") - 1);
return;
- }
+ }
if (EG(exception)) {
/* Error already raised */
diff --git a/ext/libxml/libxml.c b/ext/libxml/libxml.c
index e42d845f9..a39c875b2 100644
--- a/ext/libxml/libxml.c
+++ b/ext/libxml/libxml.c
@@ -677,9 +677,18 @@ is_string:
static xmlParserInputPtr _php_libxml_pre_ext_ent_loader(const char *URL,
const char *ID, xmlParserCtxtPtr context)
{
+ TSRMLS_FETCH();
+
/* Check whether we're running in a PHP context, since the entity loader
- * we've defined is an application level (true global) setting */
- if (xmlGenericError == php_libxml_error_handler) {
+ * we've defined is an application level (true global) setting.
+ * If we are, we also want to check whether we've finished activating
+ * the modules (RINIT phase). Using our external entity loader during a
+ * RINIT should not be problem per se (though during MINIT it is, because
+ * we don't even have a resource list by then), but then whether one
+ * extension would be using the custom external entity loader or not
+ * could depend on extension loading order
+ * (if _php_libxml_per_request_initialization */
+ if (xmlGenericError == php_libxml_error_handler && PG(modules_activated)) {
return _php_libxml_external_entity_loader(URL, ID, context);
} else {
return _php_libxml_default_entity_loader(URL, ID, context);
diff --git a/ext/libxml/tests/bug61367-read.phpt b/ext/libxml/tests/bug61367-read.phpt
index 3deecfc50..94da3d848 100644
--- a/ext/libxml/tests/bug61367-read.phpt
+++ b/ext/libxml/tests/bug61367-read.phpt
@@ -4,11 +4,12 @@ Bug #61367: open_basedir bypass in libxml RSHUTDOWN: read test
<?php if(!extension_loaded('dom')) echo 'skip'; ?>
--INI--
open_basedir=.
-; Suppress spurious "Trying to get property of non-object" notices
error_reporting=E_ALL & ~E_NOTICE
--FILE--
<?php
-
+/*
+ * Note: Using error_reporting=E_ALL & ~E_NOTICE to supress "Trying to get property of non-object" notices.
+ */
class StreamExploiter {
public function stream_close ( ) {
$doc = new DOMDocument;
diff --git a/ext/libxml/tests/bug61367-write.phpt b/ext/libxml/tests/bug61367-write.phpt
index aeed688ff..e18b07149 100644
--- a/ext/libxml/tests/bug61367-write.phpt
+++ b/ext/libxml/tests/bug61367-write.phpt
@@ -4,8 +4,6 @@ Bug #61367: open_basedir bypass in libxml RSHUTDOWN: write test
<?php if(!extension_loaded('dom')) echo 'skip'; ?>
--INI--
open_basedir=.
-; Suppress spurious "Trying to get property of non-object" notices
-error_reporting=E_ALL & ~E_NOTICE
--FILE--
<?php
diff --git a/ext/mysqli/mysqli.c b/ext/mysqli/mysqli.c
index f18a503b5..6d283aa9c 100644
--- a/ext/mysqli/mysqli.c
+++ b/ext/mysqli/mysqli.c
@@ -162,7 +162,7 @@ void php_clear_stmt_bind(MY_STMT *stmt TSRMLS_DC)
{
if (stmt->stmt) {
if (mysqli_stmt_close(stmt->stmt, TRUE)) {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Error occured while closing statement");
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Error occurred while closing statement");
return;
}
}
diff --git a/ext/mysqli/tests/bug62046.phpt b/ext/mysqli/tests/bug62046.phpt
new file mode 100644
index 000000000..31a7328b7
--- /dev/null
+++ b/ext/mysqli/tests/bug62046.phpt
@@ -0,0 +1,40 @@
+--TEST--
+Bug #62046 mysqli@mysqlnd can't iterate over stored sets after call to mysqli_stmt_reset()
+--SKIPIF--
+<?php
+require_once('skipif.inc');
+require_once('skipifconnectfailure.inc');
+?>
+--FILE--
+<?php
+ require_once("connect.inc");
+
+ if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket)) {
+ printf("[001] Connect failed, [%d] %s\n", mysqli_connect_errno(), mysqli_connect_error());
+ }
+ if (FALSE === ($stmt = $link->prepare('SELECT 42'))) {
+ printf("[002] Prepare failed, [%d] %s\n", mysqli_errno($link), mysqli_error($link));
+ }
+ if (FALSE === $stmt->execute()) {
+ printf("[003] Execute failed, [%d] %s\n", $stmt->errorno, $stmt->error);
+ }
+ if (FALSE === $stmt->store_result()) {
+ printf("[004] store_result failed, [%d] %s\n", $stmt->errorno, $stmt->error);
+ }
+ $one = NULL;
+ if (FALSE === $stmt->bind_result($one)) {
+ printf("[005] bind_result failed, [%d] %s\n", $stmt->errorno, $stmt->error);
+ }
+ if (FALSE === $stmt->reset()) {
+ printf("[006] bind_result failed, [%d] %s\n", $stmt->errorno, $stmt->error);
+ }
+ while ($stmt->fetch()) {
+ var_dump($one);
+ }
+ $stmt->close();
+ $link->close();
+ echo "done!";
+?>
+--EXPECT--
+int(42)
+done! \ No newline at end of file
diff --git a/ext/mysqli/tests/mysqli_stmt_affected_rows.phpt b/ext/mysqli/tests/mysqli_stmt_affected_rows.phpt
index b8dd11a69..7fc32f7e6 100644
--- a/ext/mysqli/tests/mysqli_stmt_affected_rows.phpt
+++ b/ext/mysqli/tests/mysqli_stmt_affected_rows.phpt
@@ -63,7 +63,7 @@ require_once('skipifconnectfailure.inc');
// NOTE: the error message varies with the MySQL Server version, dump only the error code!
printf("[009] [%d] (error message varies with the MySQL Server version, check the error code)\n", mysqli_stmt_errno($stmt));
- /* an error occured: affected rows should return -1 */
+ /* an error occurred: affected rows should return -1 */
if (-1 !== ($tmp = mysqli_stmt_affected_rows($stmt)))
printf("[010] Expecting int/0, got %s/%s\n", gettype($tmp), $tmp);
diff --git a/ext/mysqlnd/mysqlnd.c b/ext/mysqlnd/mysqlnd.c
index 797cadd62..4a63681fb 100644
--- a/ext/mysqlnd/mysqlnd.c
+++ b/ext/mysqlnd/mysqlnd.c
@@ -764,6 +764,13 @@ MYSQLND_METHOD(mysqlnd_conn_data, connect)(MYSQLND_CONN_DATA * conn,
conn->server_version = mnd_pestrdup(greet_packet->server_version, conn->persistent);
conn->greet_charset = mysqlnd_find_charset_nr(greet_packet->charset_no);
+ if (!conn->greet_charset) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING,
+ "Server sent charset (%d) unknown to the client. Please, report to the developers", greet_packet->charset_no);
+ SET_CLIENT_ERROR(*conn->error_info, CR_NOT_IMPLEMENTED, UNKNOWN_SQLSTATE,
+ "Server sent charset unknown to the client. Please, report to the developers");
+ goto err;
+ }
/* we allow load data local infile by default */
mysql_flags |= MYSQLND_CAPABILITIES;
diff --git a/ext/mysqlnd/mysqlnd_charset.c b/ext/mysqlnd/mysqlnd_charset.c
index a1b401bb5..25b987707 100644
--- a/ext/mysqlnd/mysqlnd_charset.c
+++ b/ext/mysqlnd/mysqlnd_charset.c
@@ -450,20 +450,27 @@ const MYSQLND_CHARSET mysqlnd_charsets[] =
{ 6, "hp8", "hp8_english_ci", 1, 1, "", NULL, NULL},
{ 7, "koi8r", "koi8r_general_ci", 1, 1, "", NULL, NULL},
{ 8, "latin1", "latin1_swedish_ci", 1, 1, "", NULL, NULL},
+ { 5, "latin1", "latin1_german_ci", 1, 1, "", NULL, NULL}, /* should be after 0x9 because swedish_ci is the default collation */
{ 9, "latin2", "latin2_general_ci", 1, 1, "", NULL, NULL},
+ { 2, "latin2", "latin2_czech_cs", 1, 1, "", NULL, NULL}, /* should be after 0x9 because general_ci is the default collation */
{ 10, "swe7", "swe7_swedish_ci", 1, 1, "", NULL, NULL},
{ 11, "ascii", "ascii_general_ci", 1, 1, "", NULL, NULL},
{ 12, "ujis", "ujis_japanese_ci", 1, 3, "", mysqlnd_mbcharlen_ujis, check_mb_ujis},
{ 13, "sjis", "sjis_japanese_ci", 1, 2, "", mysqlnd_mbcharlen_sjis, check_mb_sjis},
{ 16, "hebrew", "hebrew_general_ci", 1, 1, "", NULL, NULL},
+ { 17, "filename", "filename", 1, 5, "", NULL, NULL},
{ 18, "tis620", "tis620_thai_ci", 1, 1, "", NULL, NULL},
{ 19, "euckr", "euckr_korean_ci", 1, 2, "", mysqlnd_mbcharlen_euckr, check_mb_euckr},
+ { 21, "latin2", "latin2_hungarian_ci", 1, 1, "", NULL, NULL},
+ { 27, "latin2", "latin2_croatian_ci", 1, 1, "", NULL, NULL},
{ 22, "koi8u", "koi8u_general_ci", 1, 1, "", NULL, NULL},
{ 24, "gb2312", "gb2312_chinese_ci", 1, 2, "", mysqlnd_mbcharlen_gb2312, check_mb_gb2312},
{ 25, "greek", "greek_general_ci", 1, 1, "", NULL, NULL},
{ 26, "cp1250", "cp1250_general_ci", 1, 1, "", NULL, NULL},
{ 28, "gbk", "gbk_chinese_ci", 1, 2, "", mysqlnd_mbcharlen_gbk, check_mb_gbk},
{ 30, "latin5", "latin5_turkish_ci", 1, 1, "", NULL, NULL},
+ { 31, "latin1", "latin1_german2_ci", 1, 1, "", NULL, NULL},
+ { 15, "latin1", "latin1_danish_ci", 1, 1, "", NULL, NULL},
{ 32, "armscii8", "armscii8_general_ci", 1, 1, "", NULL, NULL},
{ 33, UTF8_MB3, UTF8_MB3"_general_ci", 1, 3, "UTF-8 Unicode", mysqlnd_mbcharlen_utf8mb3, check_mb_utf8mb3_valid},
{ 35, "ucs2", "ucs2_general_ci", 2, 2, "UCS-2 Unicode", mysqlnd_mbcharlen_ucs2, check_mb_ucs2},
@@ -473,22 +480,11 @@ const MYSQLND_CHARSET mysqlnd_charsets[] =
{ 39, "macroman", "macroman_general_ci", 1, 1, "", NULL, NULL},
{ 40, "cp852", "cp852_general_ci", 1, 1, "", NULL, NULL},
{ 41, "latin7", "latin7_general_ci", 1, 1, "", NULL, NULL},
- { 51, "cp1251", "cp1251_general_ci", 1, 1, "", NULL, NULL},
+ { 20, "latin7", "latin7_estonian_cs", 1, 1, "", NULL, NULL},
{ 57, "cp1256", "cp1256_general_ci", 1, 1, "", NULL, NULL},
{ 59, "cp1257", "cp1257_general_ci", 1, 1, "", NULL, NULL},
{ 63, "binary", "binary", 1, 1, "", NULL, NULL},
- { 92, "geostd8", "geostd8_general_ci", 1, 1, "", NULL, NULL},
- { 95, "cp932", "cp932_japanese_ci", 1, 2, "", mysqlnd_mbcharlen_cp932, check_mb_cp932},
{ 97, "eucjpms", "eucjpms_japanese_ci", 1, 3, "", mysqlnd_mbcharlen_eucjpms, check_mb_eucjpms},
- { 2, "latin2", "latin2_czech_cs", 1, 1, "", NULL, NULL},
- { 5, "latin1", "latin1_german_ci", 1, 1, "", NULL, NULL},
- { 14, "cp1251", "cp1251_bulgarian_ci", 1, 1, "", NULL, NULL},
- { 15, "latin1", "latin1_danish_ci", 1, 1, "", NULL, NULL},
- { 17, "filename", "filename", 1, 5, "", NULL, NULL},
- { 20, "latin7", "latin7_estonian_cs", 1, 1, "", NULL, NULL},
- { 21, "latin2", "latin2_hungarian_ci", 1, 1, "", NULL, NULL},
- { 23, "cp1251", "cp1251_ukrainian_ci", 1, 1, "", NULL, NULL},
- { 27, "latin2", "latin2_croatian_ci", 1, 1, "", NULL, NULL},
{ 29, "cp1257", "cp1257_lithunian_ci", 1, 1, "", NULL, NULL},
{ 31, "latin1", "latin1_german2_ci", 1, 1, "", NULL, NULL},
{ 34, "cp1250", "cp1250_czech_cs", 1, 1, "", NULL, NULL},
@@ -500,6 +496,9 @@ const MYSQLND_CHARSET mysqlnd_charsets[] =
{ 47, "latin1", "latin1_bin", 1, 1, "", NULL, NULL},
{ 48, "latin1", "latin1_general_ci", 1, 1, "", NULL, NULL},
{ 49, "latin1", "latin1_general_cs", 1, 1, "", NULL, NULL},
+ { 51, "cp1251", "cp1251_general_ci", 1, 1, "", NULL, NULL},
+ { 14, "cp1251", "cp1251_bulgarian_ci", 1, 1, "", NULL, NULL},
+ { 23, "cp1251", "cp1251_ukrainian_ci", 1, 1, "", NULL, NULL},
{ 50, "cp1251", "cp1251_bin", 1, 1, "", NULL, NULL},
{ 52, "cp1251", "cp1251_general_cs", 1, 1, "", NULL, NULL},
{ 53, "macroman", "macroman_bin", 1, 1, "", NULL, NULL},
@@ -509,8 +508,8 @@ const MYSQLND_CHARSET mysqlnd_charsets[] =
#ifdef USED_TO_BE_SO_BEFORE_MYSQL_5_5
{ 60, "armascii8", "armascii8_bin", 1, 1, "", NULL, NULL},
#endif
- { 60, "utf32", "utf32_general_ci", 4, 4, "UTF-32 Unicode", mysqlnd_mbcharlen_utf32, check_mb_utf32},
- { 61, "utf32", "utf32_bin", 4, 4, "UTF-32 Unicode", mysqlnd_mbcharlen_utf32, check_mb_utf32},
+/*55*/{ 60, "utf32", "utf32_general_ci", 4, 4, "UTF-32 Unicode", mysqlnd_mbcharlen_utf32, check_mb_utf32},
+/*55*/{ 61, "utf32", "utf32_bin", 4, 4, "UTF-32 Unicode", mysqlnd_mbcharlen_utf32, check_mb_utf32},
{ 65, "ascii", "ascii_bin", 1, 1, "", NULL, NULL},
{ 66, "cp1250", "cp1250_bin", 1, 1, "", NULL, NULL},
{ 67, "cp1256", "cp1256_bin", 1, 1, "", NULL, NULL},
@@ -528,7 +527,6 @@ const MYSQLND_CHARSET mysqlnd_charsets[] =
{ 80, "cp850", "cp850_bin", 1, 1, "", NULL, NULL},
{ 81, "cp852", "cp852_bin", 1, 1, "", NULL, NULL},
{ 82, "swe7", "swe7_bin", 1, 1, "", NULL, NULL},
- { 93, "geostd8", "geostd8_bin", 1, 1, "", NULL, NULL},
{ 83, UTF8_MB3, UTF8_MB3"_bin", 1, 3, "UTF-8 Unicode", mysqlnd_mbcharlen_utf8mb3, check_mb_utf8mb3_valid},
{ 84, "big5", "big5_bin", 1, 2, "", mysqlnd_mbcharlen_big5, check_mb_big5},
{ 85, "euckr", "euckr_bin", 1, 2, "", mysqlnd_mbcharlen_euckr, check_mb_euckr},
@@ -538,10 +536,14 @@ const MYSQLND_CHARSET mysqlnd_charsets[] =
{ 89, "tis620", "tis620_bin", 1, 1, "", NULL, NULL},
{ 90, "ucs2", "ucs2_bin", 2, 2, "UCS-2 Unicode", mysqlnd_mbcharlen_ucs2, check_mb_ucs2},
{ 91, "ujis", "ujis_bin", 1, 3, "", mysqlnd_mbcharlen_ujis, check_mb_ujis},
+ { 92, "geostd8", "geostd8_general_ci", 1, 1, "", NULL, NULL},
+ { 93, "geostd8", "geostd8_bin", 1, 1, "", NULL, NULL},
{ 94, "latin1", "latin1_spanish_ci", 1, 1, "", NULL, NULL},
+ { 95, "cp932", "cp932_japanese_ci", 1, 2, "", mysqlnd_mbcharlen_cp932, check_mb_cp932},
{ 96, "cp932", "cp932_bin", 1, 2, "", mysqlnd_mbcharlen_cp932, check_mb_cp932},
- { 99, "cp1250", "cp1250_polish_ci", 1, 1, "", NULL, NULL},
+ { 97, "eucjpms", "eucjpms_japanese_ci", 1, 3, "", mysqlnd_mbcharlen_eucjpms, check_mb_eucjpms},
{ 98, "eucjpms", "eucjpms_bin", 1, 3, "", mysqlnd_mbcharlen_eucjpms, check_mb_eucjpms},
+ { 99, "cp1250", "cp1250_polish_ci", 1, 1, "", NULL, NULL},
{ 128, "ucs2", "ucs2_unicode_ci", 2, 2, "", mysqlnd_mbcharlen_ucs2, check_mb_ucs2},
{ 129, "ucs2", "ucs2_icelandic_ci", 2, 2, "", mysqlnd_mbcharlen_ucs2, check_mb_ucs2},
{ 130, "ucs2", "ucs2_latvian_ci", 2, 2, "", mysqlnd_mbcharlen_ucs2, check_mb_ucs2},
@@ -562,7 +564,35 @@ const MYSQLND_CHARSET mysqlnd_charsets[] =
{ 145, "ucs2", "ucs2_esperanto_ci", 2, 2, "", mysqlnd_mbcharlen_ucs2, check_mb_ucs2},
{ 146, "ucs2", "ucs2_hungarian_ci", 2, 2, "", mysqlnd_mbcharlen_ucs2, check_mb_ucs2},
{ 147, "ucs2", "ucs2_sinhala_ci", 2, 2, "", mysqlnd_mbcharlen_ucs2, check_mb_ucs2},
- { 149, "ucs2", "ucs2_croatian_ci", 2, 2, "", mysqlnd_mbcharlen_ucs2, check_mb_ucs2}, /* MDB */
+ { 148, "ucs2", "ucs2_german2_ci", 2, 2, "", mysqlnd_mbcharlen_ucs2, check_mb_ucs2},
+ { 149, "ucs2", "ucs2_croatian_ci", 2, 2, "", mysqlnd_mbcharlen_ucs2, check_mb_ucs2},
+ { 150, "ucs2", "ucs2_unicode_520_ci", 2, 2, "", mysqlnd_mbcharlen_ucs2, check_mb_ucs2},
+ { 151, "ucs2", "ucs2_vietnamese_ci", 2, 2, "", mysqlnd_mbcharlen_ucs2, check_mb_ucs2},
+
+/*56*/{160, "utf32", "utf32_unicode_ci", 4, 4, "UTF-32 Unicode", mysqlnd_mbcharlen_utf32, check_mb_utf32},
+/*56*/{161, "utf32", "utf32_icelandic_ci", 4, 4, "UTF-32 Unicode", mysqlnd_mbcharlen_utf32, check_mb_utf32},
+/*56*/{162, "utf32", "utf32_latvian_ci", 4, 4, "UTF-32 Unicode", mysqlnd_mbcharlen_utf32, check_mb_utf32},
+/*56*/{163, "utf32", "utf32_romanian_ci", 4, 4, "UTF-32 Unicode", mysqlnd_mbcharlen_utf32, check_mb_utf32},
+/*56*/{164, "utf32", "utf32_slovenian_ci", 4, 4, "UTF-32 Unicode", mysqlnd_mbcharlen_utf32, check_mb_utf32},
+/*56*/{165, "utf32", "utf32_polish_ci", 4, 4, "UTF-32 Unicode", mysqlnd_mbcharlen_utf32, check_mb_utf32},
+/*56*/{166, "utf32", "utf32_estonian_ci", 4, 4, "UTF-32 Unicode", mysqlnd_mbcharlen_utf32, check_mb_utf32},
+/*56*/{167, "utf32", "utf32_spanish_ci", 4, 4, "UTF-32 Unicode", mysqlnd_mbcharlen_utf32, check_mb_utf32},
+/*56*/{168, "utf32", "utf32_swedish_ci", 4, 4, "UTF-32 Unicode", mysqlnd_mbcharlen_utf32, check_mb_utf32},
+/*56*/{169, "utf32", "utf32_turkish_ci", 4, 4, "UTF-32 Unicode", mysqlnd_mbcharlen_utf32, check_mb_utf32},
+/*56*/{170, "utf32", "utf32_czech_ci", 4, 4, "UTF-32 Unicode", mysqlnd_mbcharlen_utf32, check_mb_utf32},
+/*56*/{171, "utf32", "utf32_danish_ci", 4, 4, "UTF-32 Unicode", mysqlnd_mbcharlen_utf32, check_mb_utf32},
+/*56*/{172, "utf32", "utf32_lithuanian_ci", 4, 4, "UTF-32 Unicode", mysqlnd_mbcharlen_utf32, check_mb_utf32},
+/*56*/{173, "utf32", "utf32_slovak_ci", 4, 4, "UTF-32 Unicode", mysqlnd_mbcharlen_utf32, check_mb_utf32},
+/*56*/{174, "utf32", "utf32_spanish2_ci", 4, 4, "UTF-32 Unicode", mysqlnd_mbcharlen_utf32, check_mb_utf32},
+/*56*/{175, "utf32", "utf32_roman_ci", 4, 4, "UTF-32 Unicode", mysqlnd_mbcharlen_utf32, check_mb_utf32},
+/*56*/{176, "utf32", "utf32_persian_ci", 4, 4, "UTF-32 Unicode", mysqlnd_mbcharlen_utf32, check_mb_utf32},
+/*56*/{177, "utf32", "utf32_esperanto_ci", 4, 4, "UTF-32 Unicode", mysqlnd_mbcharlen_utf32, check_mb_utf32},
+/*56*/{178, "utf32", "utf32_hungarian_ci", 4, 4, "UTF-32 Unicode", mysqlnd_mbcharlen_utf32, check_mb_utf32},
+/*56*/{179, "utf32", "utf32_sinhala_ci", 4, 4, "UTF-32 Unicode", mysqlnd_mbcharlen_utf32, check_mb_utf32},
+/*56*/{180, "utf32", "utf32_german2_ci", 4, 4, "UTF-32 Unicode", mysqlnd_mbcharlen_utf32, check_mb_utf32},
+/*56*/{181, "utf32", "utf32_croatian_ci", 4, 4, "UTF-32 Unicode", mysqlnd_mbcharlen_utf32, check_mb_utf32},
+/*56*/{182, "utf32", "utf32_unicode_520_ci", 4, 4, "UTF-32 Unicode", mysqlnd_mbcharlen_utf32, check_mb_utf32},
+/*56*/{183, "utf32", "utf32_vietnamese_ci", 4, 4, "UTF-32 Unicode", mysqlnd_mbcharlen_utf32, check_mb_utf32},
{ 192, UTF8_MB3, UTF8_MB3"_general_ci", 1, 3, "", mysqlnd_mbcharlen_utf8mb3, check_mb_utf8mb3_valid},
{ 193, UTF8_MB3, UTF8_MB3"_icelandic_ci", 1, 3, "", mysqlnd_mbcharlen_utf8mb3, check_mb_utf8mb3_valid},
@@ -571,7 +601,7 @@ const MYSQLND_CHARSET mysqlnd_charsets[] =
{ 196, UTF8_MB3, UTF8_MB3"_slovenian_ci", 1, 3, "", mysqlnd_mbcharlen_utf8mb3, check_mb_utf8mb3_valid},
{ 197, UTF8_MB3, UTF8_MB3"_polish_ci", 1, 3, "", mysqlnd_mbcharlen_utf8mb3, check_mb_utf8mb3_valid},
{ 198, UTF8_MB3, UTF8_MB3"_estonian_ci", 1, 3, "", mysqlnd_mbcharlen_utf8mb3, check_mb_utf8mb3_valid},
- { 119, UTF8_MB3, UTF8_MB3"_spanish_ci", 1, 3, "", mysqlnd_mbcharlen_utf8mb3, check_mb_utf8mb3_valid},
+ { 199, UTF8_MB3, UTF8_MB3"_spanish_ci", 1, 3, "", mysqlnd_mbcharlen_utf8mb3, check_mb_utf8mb3_valid},
{ 200, UTF8_MB3, UTF8_MB3"_swedish_ci", 1, 3, "", mysqlnd_mbcharlen_utf8mb3, check_mb_utf8mb3_valid},
{ 201, UTF8_MB3, UTF8_MB3"_turkish_ci", 1, 3, "", mysqlnd_mbcharlen_utf8mb3, check_mb_utf8mb3_valid},
{ 202, UTF8_MB3, UTF8_MB3"_czech_ci", 1, 3, "", mysqlnd_mbcharlen_utf8mb3, check_mb_utf8mb3_valid},
@@ -584,7 +614,10 @@ const MYSQLND_CHARSET mysqlnd_charsets[] =
{ 209, UTF8_MB3, UTF8_MB3"_esperanto_ci", 1, 3, "", mysqlnd_mbcharlen_utf8mb3, check_mb_utf8mb3_valid},
{ 210, UTF8_MB3, UTF8_MB3"_hungarian_ci", 1, 3, "", mysqlnd_mbcharlen_utf8mb3, check_mb_utf8mb3_valid},
{ 211, UTF8_MB3, UTF8_MB3"_sinhala_ci", 1, 3, "", mysqlnd_mbcharlen_utf8mb3, check_mb_utf8mb3_valid},
- { 213, UTF8_MB3, UTF8_MB3"_croatian_ci", 1, 3, "", mysqlnd_mbcharlen_utf8mb3, check_mb_utf8mb3_valid}, /*MDB*/
+ { 211, UTF8_MB3, UTF8_MB3"_german2_ci", 1, 3, "", mysqlnd_mbcharlen_utf8mb3, check_mb_utf8mb3_valid},
+ { 213, UTF8_MB3, UTF8_MB3"_croatian_ci", 1, 3, "", mysqlnd_mbcharlen_utf8mb3, check_mb_utf8mb3_valid},
+ { 214, UTF8_MB3, UTF8_MB3"_unicode_520_ci", 1, 3, "", mysqlnd_mbcharlen_utf8mb3, check_mb_utf8mb3_valid},
+ { 215, UTF8_MB3, UTF8_MB3"_vietnamese_ci", 1, 3, "", mysqlnd_mbcharlen_utf8mb3, check_mb_utf8mb3_valid},
{ 224, UTF8_MB4, UTF8_MB4"_unicode_ci", 1, 4, "", mysqlnd_mbcharlen_utf8, check_mb_utf8_valid},
{ 225, UTF8_MB4, UTF8_MB4"_icelandic_ci", 1, 4, "", mysqlnd_mbcharlen_utf8, check_mb_utf8_valid},
@@ -606,6 +639,10 @@ const MYSQLND_CHARSET mysqlnd_charsets[] =
{ 241, UTF8_MB4, UTF8_MB4"_esperanto_ci", 1, 4, "", mysqlnd_mbcharlen_utf8, check_mb_utf8_valid},
{ 242, UTF8_MB4, UTF8_MB4"_hungarian_ci", 1, 4, "", mysqlnd_mbcharlen_utf8, check_mb_utf8_valid},
{ 243, UTF8_MB4, UTF8_MB4"_sinhala_ci", 1, 4, "", mysqlnd_mbcharlen_utf8, check_mb_utf8_valid},
+ { 244, UTF8_MB4, UTF8_MB4"_german2_ci", 1, 4, "", mysqlnd_mbcharlen_utf8, check_mb_utf8_valid},
+ { 245, UTF8_MB4, UTF8_MB4"_croatian_ci", 1, 4, "", mysqlnd_mbcharlen_utf8, check_mb_utf8_valid},
+ { 246, UTF8_MB4, UTF8_MB4"_unicode_520_ci", 1, 4, "", mysqlnd_mbcharlen_utf8, check_mb_utf8_valid},
+ { 247, UTF8_MB4, UTF8_MB4"_vietnamese_ci", 1, 4, "", mysqlnd_mbcharlen_utf8, check_mb_utf8_valid},
{ 254, UTF8_MB3, UTF8_MB3"_general_cs", 1, 3, "", mysqlnd_mbcharlen_utf8, check_mb_utf8_valid},
{ 0, NULL, NULL, 0, 0, NULL, NULL, NULL}
diff --git a/ext/mysqlnd/mysqlnd_loaddata.c b/ext/mysqlnd/mysqlnd_loaddata.c
index 8e8622e54..82ee63458 100644
--- a/ext/mysqlnd/mysqlnd_loaddata.c
+++ b/ext/mysqlnd/mysqlnd_loaddata.c
@@ -188,7 +188,7 @@ mysqlnd_handle_local_infile(MYSQLND_CONN_DATA * conn, const char * filename, zen
char tmp_buf[sizeof(conn->error_info->error)];
int tmp_error_no;
*is_warning = TRUE;
- /* error occured */
+ /* error occurred */
tmp_error_no = infile.local_infile_error(info, tmp_buf, sizeof(tmp_buf) TSRMLS_CC);
SET_CLIENT_ERROR(*conn->error_info, tmp_error_no, UNKNOWN_SQLSTATE, tmp_buf);
/* write empty packet to server */
@@ -211,7 +211,7 @@ mysqlnd_handle_local_infile(MYSQLND_CONN_DATA * conn, const char * filename, zen
goto infile_error;
}
- /* error during read occured */
+ /* error during read occurred */
if (bufsize < 0) {
char tmp_buf[sizeof(conn->error_info->error)];
int tmp_error_no;
diff --git a/ext/mysqlnd/mysqlnd_ps.c b/ext/mysqlnd/mysqlnd_ps.c
index 90e685654..1b48ba1d7 100644
--- a/ext/mysqlnd/mysqlnd_ps.c
+++ b/ext/mysqlnd/mysqlnd_ps.c
@@ -636,6 +636,8 @@ MYSQLND_METHOD(mysqlnd_stmt, execute)(MYSQLND_STMT * const s TSRMLS_DC)
have it again.
*/
stmt->result->m.free_result_buffers(stmt->result TSRMLS_CC);
+
+ stmt->state = MYSQLND_STMT_PREPARED;
} else if (stmt->state < MYSQLND_STMT_PREPARED) {
/* Only initted - error */
SET_CLIENT_ERROR(*conn->error_info, CR_COMMANDS_OUT_OF_SYNC, UNKNOWN_SQLSTATE,
@@ -1221,8 +1223,6 @@ MYSQLND_METHOD(mysqlnd_stmt, reset)(MYSQLND_STMT * const s TSRMLS_DC)
COPY_CLIENT_ERROR(*stmt->error_info, *conn->error_info);
}
*stmt->upsert_status = *conn->upsert_status;
-
- stmt->state = MYSQLND_STMT_PREPARED;
}
DBG_INF(ret == PASS? "PASS":"FAIL");
DBG_RETURN(ret);
@@ -1261,8 +1261,6 @@ MYSQLND_METHOD(mysqlnd_stmt, flush)(MYSQLND_STMT * const s TSRMLS_DC)
stmt->result->m.skip_result(stmt->result TSRMLS_CC);
}
} while (mysqlnd_stmt_more_results(s) && mysqlnd_stmt_next_result(s) == PASS);
-
- stmt->state = MYSQLND_STMT_PREPARED;
}
DBG_INF(ret == PASS? "PASS":"FAIL");
DBG_RETURN(ret);
diff --git a/ext/odbc/php_odbc.c b/ext/odbc/php_odbc.c
index e98d863be..52d46b2fd 100644
--- a/ext/odbc/php_odbc.c
+++ b/ext/odbc/php_odbc.c
@@ -387,7 +387,7 @@ const zend_function_entry odbc_functions[] = {
};
/* }}} */
-ZEND_DECLARE_MODULE_GLOBALS(odbc);
+ZEND_DECLARE_MODULE_GLOBALS(odbc)
static PHP_GINIT_FUNCTION(odbc);
/* {{{ odbc_module_entry
diff --git a/ext/pcntl/pcntl.c b/ext/pcntl/pcntl.c
index e5910a5dc..8647e105e 100755
--- a/ext/pcntl/pcntl.c
+++ b/ext/pcntl/pcntl.c
@@ -816,7 +816,7 @@ PHP_FUNCTION(pcntl_exec)
if (execve(path, argv, envp) == -1) {
PCNTL_G(last_error) = errno;
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Error has occured: (errno %d) %s", errno, strerror(errno));
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Error has occurred: (errno %d) %s", errno, strerror(errno));
}
/* Cleanup */
@@ -826,7 +826,7 @@ PHP_FUNCTION(pcntl_exec)
if (execv(path, argv) == -1) {
PCNTL_G(last_error) = errno;
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Error has occured: (errno %d) %s", errno, strerror(errno));
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Error has occurred: (errno %d) %s", errno, strerror(errno));
}
}
@@ -1127,7 +1127,7 @@ PHP_FUNCTION(pcntl_getpriority)
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Error %d: Invalid identifier flag", errno);
break;
default:
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unknown error %d has occured", errno);
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unknown error %d has occurred", errno);
break;
}
RETURN_FALSE;
@@ -1167,7 +1167,7 @@ PHP_FUNCTION(pcntl_setpriority)
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Error %d: Only a super user may attempt to increase the process priority", errno);
break;
default:
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unknown error %d has occured", errno);
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unknown error %d has occurred", errno);
break;
}
RETURN_FALSE;
diff --git a/ext/pcntl/tests/pcntl_exec_3.phpt b/ext/pcntl/tests/pcntl_exec_3.phpt
index d27c1c996..5349381d9 100644
--- a/ext/pcntl/tests/pcntl_exec_3.phpt
+++ b/ext/pcntl/tests/pcntl_exec_3.phpt
@@ -13,5 +13,5 @@ unlink($file);
Warning: pcntl_exec() expects at least 1 parameter, 0 given %s
NULL
-Warning: pcntl_exec(): Error has occured: (errno %d) %s
+Warning: pcntl_exec(): Error has occurred: (errno %d) %s
bool(false)
diff --git a/ext/pdo_mysql/mysql_statement.c b/ext/pdo_mysql/mysql_statement.c
index 0c2689f9d..fc5ec5135 100755
--- a/ext/pdo_mysql/mysql_statement.c
+++ b/ext/pdo_mysql/mysql_statement.c
@@ -134,7 +134,7 @@ static int pdo_mysql_fill_stmt_from_result(pdo_stmt_t *stmt TSRMLS_DC) /* {{{ */
row_count = mysql_affected_rows(H->server);
if (row_count == (my_ulonglong)-1) {
- /* we either have a query that returned a result set or an error occured
+ /* we either have a query that returned a result set or an error occurred
lets see if we have access to a result set */
if (!H->buffered) {
S->result = mysql_use_result(H->server);
diff --git a/ext/pdo_mysql/pdo_mysql.c b/ext/pdo_mysql/pdo_mysql.c
index 5118406e9..ea69c3c11 100755
--- a/ext/pdo_mysql/pdo_mysql.c
+++ b/ext/pdo_mysql/pdo_mysql.c
@@ -35,7 +35,7 @@
ZEND_GET_MODULE(pdo_mysql)
#endif
-ZEND_DECLARE_MODULE_GLOBALS(pdo_mysql);
+ZEND_DECLARE_MODULE_GLOBALS(pdo_mysql)
/*
The default socket location is sometimes defined by configure.
diff --git a/ext/pdo_sqlite/sqlite_driver.c b/ext/pdo_sqlite/sqlite_driver.c
index f81cf9b1e..480c728d1 100644
--- a/ext/pdo_sqlite/sqlite_driver.c
+++ b/ext/pdo_sqlite/sqlite_driver.c
@@ -760,7 +760,7 @@ static struct pdo_dbh_methods sqlite_methods = {
static char *make_filename_safe(const char *filename TSRMLS_DC)
{
- if (*filename && strncmp(filename, ":memory:", sizeof(":memory:")-1)) {
+ if (*filename && memcmp(filename, ":memory:", sizeof(":memory:"))) {
char *fullpath = expand_filepath(filename, NULL TSRMLS_CC);
if (!fullpath) {
diff --git a/ext/phar/cgidebug b/ext/phar/cgidebug
deleted file mode 100755
index 190758190..000000000
--- a/ext/phar/cgidebug
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/bin/sh
-export SCRIPT_NAME=/front.phar.php
-export PATH_INFO=/index.php
-export SCRIPT_FILENAME=/home/cellog/workspace/php5/ext/phar/tests/front.phar.php
-export PATH_TRANSLATED=/home/cellog/workspace/php5/ext/phar/tests/front.phar.php
-export REDIRECT_STATUS=1
-export REQUEST_METHOD=GET
-export REQUEST_URI=/front.phar.php/index.php
-cd /home/cellog/workspace/php5
-ddd sapi/cgi/php-cgi &
-cd /home/cellog/workspace/php5/ext/phar
diff --git a/ext/phar/package.php b/ext/phar/package.php
deleted file mode 100644
index 181c7c45f..000000000
--- a/ext/phar/package.php
+++ /dev/null
@@ -1,139 +0,0 @@
-<?php
-
-$notes = '
-BC BREAKING RELEASE
- BC breaks:
- * Phar object Compression API is rewritten. Use Phar::compress() and decompress(),
- Phar::compressFiles()/decompressFiles() and PharFileInfo->compress()/decompress().
- * phar.extract_list and Phar::getExtractList() are removed
-
-Major feature functionality release
- * phar.cache_list allows web-based phar applications to run at equal or faster than
- their on-disk equivalent [Greg]
- * new default stub allows running of phar-based phars without phar extension [Greg/Steph]
- * add support for tar-based and zip-based phar archives [Greg]
- * add support for OpenSSL-based true signatures [Greg]
- * add support for signatures to tar-based phar archives [Greg]
- * add Phar::isFileFormat() [Greg]
- * add Phar::convertToExecutable(), Phar::convertToData() [Greg]
- * add Phar::compress() [Greg]
- * rename Phar::compressAllFiles() to compressFiles(), uncompressAllFiles() to
- decompressFiles() [Greg]
- * conversion to compressed or to other file formats automatically copies the archive
- to a new extension (i.e. ".phar" to ".phar.tar" or ".tar" to ".tar.gz") [Steph]
- * add Phar::webPhar() for running a web-based application unmodified
- directly from a phar archive [Greg]
- * file functions (fopen-based and stat-based) can be instructed to only look for
- relative paths within a phar via Phar::interceptFileFuncs()
- * add PharData class to allow manipulation/creation of non-executable tar and zip archives. [Steph]
- non-executable tar/zip manipulation is allowed even when phar.readonly=1 [Greg]
- * paths with . and .. work (phar://blah.phar/a/../b.php => phar://blah.phar/b.php) [Greg]
- * add support for mkdir()/rmdir() and support for empty directories to phar file format [Greg]
- * add option to compress the entire phar file for phar/tar file format [Greg]
- * implement Phar::isCompressed() returning 0, Phar::GZ or Phar::BZ2 [Greg]
- * implement Phar::copy(string $from, string $to) [Greg]
- * implement Phar::running(), returns path or URL to currently executed phar
- * implement Phar::buildFromIterator(Iterator $it[, string $base_directory]) [Greg]
- * implement Phar::buildFromDirectory(string $base_directory[, string $regex]) [Steph]
- * implement Phar::mount() for mounting external paths or files to locations inside a phar [Greg]
- * add Phar::delete() [Greg]
- * implement Phar::unlinkArchive() [Greg]
-
-Security addition
- * aliases are validated so that they contain no directory separators as intended
- * on conversion to other formats, user-supplied aliases are validated
-
-Changes since 2.0.0RC2:
- fixed PHP Bug #49021: phar tar signature algorithm reports as Unknown (0) in
- getSignature() call
- fixed PHP Bug #49020: phar misinterprets ustar long filename standard
- fixed PHP Bug #49018: phar tar stores long filenames with prefix/name reversed
- fixed PHP Bug #48791: open office files always reported as corrupted
- fixed PHP Bug #48783: make install will fail saying phar file exists
- fixed PHP Bug #48740: PHAR install fails when INSTALL_ROOT is not the final install location
- fixed PHP Bug #48681: openssl signature verification for tar archives broken
- fixed PHP Bug #48377: error message unclear on converting phar with existing file
- fixed isset() on sub-directories (isset("blah") if file "blah/foo.php" exists)
-
- make phar work in PHP 6
-Changes since 2.0.0RC1:
- security vulnerability in handling of long tar filenames fixed
- fixed PECL Bug #14646: phar error message unclear with php stream wrappers
- fixed PECL Bug #16338: php_stream_copy_to_stream{,_ex}()
- fixed PHP Bug #48257: PharData throws an exception with non-phar tar
- fixed PHP Bug #47085: rename() returns true even if the file in PHAR does not exist
- fixed PHP Bug #46032: PharData::__construct() - wrong memory read
- fixed PHP Bug #46060: Phar::addEmptyDir() breaks
- fixed PHP Bug #45907: undefined reference to \'PHP_SHA512Init\'
- fixed PHP Bug #45726: PHP_Archive / Archive.php missing
-Changes since 2.0.0a2: many bugfixes, removal of phar.extract_list, compression API refactored,
- conversion API refactored
-Changes since 2.0.0b1: addition of phar.cache_list, many performance improvements and bugfixes
- implement OpenSSL asynchronous true package signing
- add support for package signing to tar-based archives
- require PHP 5.2.1+
-';
-
-if (!class_exists("Phar") && !extension_loaded("Phar")) {
- die("Extension phar not present");
-}
-error_reporting(E_ALL & ~E_DEPRECATED);
-
-require_once 'PEAR/PackageFileManager2.php';
-
-PEAR::setErrorHandling(PEAR_ERROR_DIE);
-
-$options = array(
- 'filelistgenerator' => 'svn',
- 'changelogoldtonew' => false,
- 'simpleoutput' => true,
- 'baseinstalldir' => '/',
- 'packagedirectory' => dirname(__FILE__),
- 'packagefile' => 'package.xml',
- 'clearcontents' => true,
- 'ignore' => array('package*.php', 'package*.xml'),
- 'dir_roles' => array(
- 'docs' => 'doc',
- 'examples' => 'doc',
- 'tests' => 'test',
- 'phar' => 'src',
- ),
- 'exceptions' => array(
- 'CREDITS' => 'doc',
- 'EXPERIMENTAL' => 'doc',
- 'LICENSE' => 'doc',
- 'Makefile.frag' => 'src',
- 'phar_path_check.re' => 'src',
- 'TODO' => 'doc',
- 'phar.phar' => 'script',
- ),
-);
-
-$package = PEAR_PackageFileManager2::importOptions(dirname(__FILE__) . '/package.xml', $options);
-
-$package->clearDeps();
-$package->setPhpDep('5.2.1');
-$package->setPearInstallerDep('1.4.3');
-$package->addPackageDepWithChannel('optional', 'bz2', 'pecl.php.net', false, false, false, false, 'bz2');
-// all this false business sets the <providesextension> tag that allows us to have hash built
-// in statically
-$package->addPackageDepWithChannel('optional', 'hash', 'pecl.php.net', false, false, false, false, 'hash');
-$package->addExtensionDep('optional', 'spl');
-$package->addExtensionDep('optional', 'zlib');
-$package->setPackageType('extsrc');
-$package->addRelease();
-$package->setReleaseVersion(phpversion('phar'));
-$package->setAPIVersion(Phar::apiVersion());
-$package->setReleaseStability('stable');
-$package->setAPIStability('stable');
-$package->setNotes("\n$notes\n");
-//$package->addGlobalReplacement('package-info', '@package_version@', 'version');
-$package->generateContents();
-
-if (isset($_GET['make']) || (isset($_SERVER['argv']) && @$_SERVER['argv'][1] == 'make')) {
- $package->writePackageFile();
-} else {
- $package->debugPackageFile();
-}
-
-?>
diff --git a/ext/phar/package.xml b/ext/phar/package.xml
index 45bdb9edc..4a9798e25 100644
--- a/ext/phar/package.xml
+++ b/ext/phar/package.xml
@@ -941,7 +941,6 @@ Changes since 2.0.0b1: addition of phar.cache_list, many performance improvement
<file name="zf_test.phpt" role="test" />
</dir> <!-- /tests -->
<file name="build_precommand.php" role="php" />
- <file name="cgidebug" role="data" />
<file name="config.m4" role="src" />
<file name="config.w32" role="src" />
<file name="CREDITS" role="doc" />
diff --git a/ext/phar/tests/fatal_error_webphar.phpt b/ext/phar/tests/fatal_error_webphar.phpt
index 3153c344e..dd6e0961a 100644
--- a/ext/phar/tests/fatal_error_webphar.phpt
+++ b/ext/phar/tests/fatal_error_webphar.phpt
@@ -15,4 +15,4 @@ Content-type: text/html; charset=UTF-8
--EXPECTF--
string(9) "\Web\View"
-Parse error: syntax error, unexpected %s, expecting %s in phar:///%sfatal_error_webphar.php/Web/View.php on line 380
+Parse error: syntax error, unexpected %s, expecting %s in phar://%r([A-Za-z]:)?%r/%sfatal_error_webphar.php/Web/View.php on line 380
diff --git a/ext/posix/tests/posix_getegid_basic.phpt b/ext/posix/tests/posix_getegid_basic.phpt
new file mode 100644
index 000000000..d0016f497
--- /dev/null
+++ b/ext/posix/tests/posix_getegid_basic.phpt
@@ -0,0 +1,15 @@
+--TEST--
+Test function posix_getegid() by calling it with its expected arguments
+--CREDITS--
+Michelangelo van Dam dragonbe@gmail.com
+#PHPTestFest Dutch PHP Conference 2012
+--SKIPIF--
+<?php
+ if(!extension_loaded("posix")) print "skip - POSIX extension not loaded";
+?>
+--FILE--
+<?php
+var_dump(posix_getegid());
+?>
+--EXPECTF--
+int(%d)
diff --git a/ext/readline/readline.c b/ext/readline/readline.c
index 1054b0ea3..92236a54f 100644
--- a/ext/readline/readline.c
+++ b/ext/readline/readline.c
@@ -198,7 +198,7 @@ PHP_RSHUTDOWN_FUNCTION(readline)
PHP_MINFO_FUNCTION(readline)
{
- return PHP_MINFO(cli_readline)(ZEND_MODULE_INFO_FUNC_ARGS_PASSTHRU);
+ PHP_MINFO(cli_readline)(ZEND_MODULE_INFO_FUNC_ARGS_PASSTHRU);
}
/* }}} */
diff --git a/ext/recode/recode.c b/ext/recode/recode.c
index e17429b23..a1a74deff 100644
--- a/ext/recode/recode.c
+++ b/ext/recode/recode.c
@@ -63,7 +63,7 @@ ZEND_END_MODULE_GLOBALS(recode)
# define ReSG(v) (recode_globals.v)
#endif
-ZEND_DECLARE_MODULE_GLOBALS(recode);
+ZEND_DECLARE_MODULE_GLOBALS(recode)
static PHP_GINIT_FUNCTION(recode);
/* {{{ arginfo */
diff --git a/ext/reflection/php_reflection.c b/ext/reflection/php_reflection.c
index 1cf65cee1..ee76afbc0 100644
--- a/ext/reflection/php_reflection.c
+++ b/ext/reflection/php_reflection.c
@@ -2561,7 +2561,8 @@ ZEND_METHOD(reflection_parameter, getDefaultValue)
*return_value = *precv->op2.zv;
INIT_PZVAL(return_value);
- if (Z_TYPE_P(return_value) != IS_CONSTANT && Z_TYPE_P(return_value) != IS_CONSTANT_ARRAY) {
+ if ((Z_TYPE_P(return_value) & IS_CONSTANT_TYPE_MASK) != IS_CONSTANT
+ && (Z_TYPE_P(return_value) & IS_CONSTANT_TYPE_MASK) != IS_CONSTANT_ARRAY) {
zval_copy_ctor(return_value);
}
zval_update_constant_ex(&return_value, (void*)0, param->fptr->common.scope TSRMLS_CC);
@@ -2922,6 +2923,14 @@ ZEND_METHOD(reflection_method, invokeArgs)
fcc.calling_scope = obj_ce;
fcc.called_scope = intern->ce;
fcc.object_ptr = object;
+
+ /*
+ * Copy the zend_function when calling via handler (e.g. Closure::__invoke())
+ */
+ if (mptr->type == ZEND_INTERNAL_FUNCTION &&
+ (mptr->internal_function.fn_flags & ZEND_ACC_CALL_VIA_HANDLER) != 0) {
+ fcc.function_handler = _copy_function(mptr TSRMLS_CC);
+ }
result = zend_call_function(&fci, &fcc TSRMLS_CC);
diff --git a/ext/reflection/tests/bug62384.phpt b/ext/reflection/tests/bug62384.phpt
new file mode 100644
index 000000000..90a871fa2
--- /dev/null
+++ b/ext/reflection/tests/bug62384.phpt
@@ -0,0 +1,21 @@
+--TEST--
+Bug #62384 (Attempting to invoke a Closure more than once causes segfaul)
+--FILE--
+<?php
+
+$closure1 = function($val){ return $val; };
+$closure2 = function($val){ return $val; };
+
+$reflection_class = new ReflectionClass($closure1);
+$reflection_method = $reflection_class->getMethod('__invoke');
+
+$arguments1 = array('hello');
+$arguments2 = array('world');
+
+var_dump($reflection_method->invokeArgs($closure1, $arguments1));
+var_dump($reflection_method->invokeArgs($closure2, $arguments2));
+
+?>
+--EXPECT--
+string(5) "hello"
+string(5) "world"
diff --git a/ext/session/session.c b/ext/session/session.c
index 7a8199d81..0c08d4968 100644
--- a/ext/session/session.c
+++ b/ext/session/session.c
@@ -59,7 +59,7 @@
#include "mod_mm.h"
#endif
-PHPAPI ZEND_DECLARE_MODULE_GLOBALS(ps);
+PHPAPI ZEND_DECLARE_MODULE_GLOBALS(ps)
static int php_session_rfc1867_callback(unsigned int event, void *event_data, void **extra TSRMLS_DC);
static int (*php_session_rfc1867_orig_callback)(unsigned int event, void *event_data, void **extra TSRMLS_DC);
diff --git a/ext/simplexml/tests/bug48601.phpt b/ext/simplexml/tests/bug48601.phpt
index 24bf2bf8a..0b81facf4 100644
--- a/ext/simplexml/tests/bug48601.phpt
+++ b/ext/simplexml/tests/bug48601.phpt
@@ -10,7 +10,7 @@ $sxe = simplexml_load_string('<root><node1>1</node1></root>');
$nodes = $sxe->xpath("/root/node2/@test");
if (! is_array($nodes)) {
- echo "An error occured\n";
+ echo "An error occurred\n";
} else {
echo "Result Count: " . count($nodes) . "\n";
}
diff --git a/ext/sockets/config.m4 b/ext/sockets/config.m4
index 3fb93aec7..4032621ce 100644
--- a/ext/sockets/config.m4
+++ b/ext/sockets/config.m4
@@ -27,6 +27,21 @@ if test "$PHP_SOCKETS" != "no"; then
[AC_DEFINE(MISSING_MSGHDR_MSGFLAGS, 1, [ ])]
)
AC_DEFINE([HAVE_SOCKETS], 1, [ ])
+
+ dnl Check for fied ss_family in sockaddr_storage (missing in AIX until 5.3)
+ AC_CACHE_CHECK([for field ss_family in struct sockaddr_storage], ac_cv_ss_family,
+ [
+ AC_TRY_COMPILE([
+#include <sys/socket.h>
+#include <sys/types.h>
+#include <netdb.h>
+ ], [struct sockaddr_storage sa_store; sa_store.ss_family = AF_INET6;],
+ ac_cv_ss_family=yes, ac_cv_ss_family=no)
+ ])
+
+ if test "$ac_cv_ss_family" = yes; then
+ AC_DEFINE(HAVE_SA_SS_FAMILY,1,[Whether you have sockaddr_storage.ss_family])
+ fi
PHP_NEW_EXTENSION([sockets], [sockets.c multicast.c], [$ext_shared])
PHP_INSTALL_HEADERS([ext/sockets/], [php_sockets.h])
diff --git a/ext/sockets/sockets.c b/ext/sockets/sockets.c
index 46d9f8e1b..0d1714257 100644
--- a/ext/sockets/sockets.c
+++ b/ext/sockets/sockets.c
@@ -77,6 +77,9 @@
# define IS_INVALID_SOCKET(a) (a->bsd_socket < 0)
# define set_errno(a) (errno = a)
# include "php_sockets.h"
+# if defined(_AIX) && !defined(HAVE_SA_SS_FAMILY)
+# define ss_family __ss_family
+# endif
# if HAVE_IF_NAMETOINDEX
# include <net/if.h>
# endif
diff --git a/ext/sockets/tests/socket_import_stream-4-win.phpt b/ext/sockets/tests/socket_import_stream-4-win.phpt
new file mode 100644
index 000000000..68b6582b8
--- /dev/null
+++ b/ext/sockets/tests/socket_import_stream-4-win.phpt
@@ -0,0 +1,106 @@
+--TEST--
+socket_import_stream: effects of closing
+--SKIPIF--
+<?php
+if (!extension_loaded('sockets')) {
+ die('SKIP sockets extension not available.');
+}
+if(substr(PHP_OS, 0, 3) != 'WIN' ) {
+ die("skip Not Valid for Linux");
+}
+
+--FILE--
+<?php
+
+function test($stream, $sock) {
+ if ($stream !== null) {
+ echo "stream_set_blocking ";
+ print_r(stream_set_blocking($stream, 0));
+ echo "\n";
+ }
+ if ($sock !== null) {
+ echo "socket_set_block ";
+ print_r(socket_set_block($sock));
+ echo "\n";
+ echo "socket_get_option ";
+ print_r(socket_get_option($sock, SOL_SOCKET, SO_TYPE));
+ echo "\n";
+ }
+ echo "\n";
+}
+
+echo "normal\n";
+$stream0 = stream_socket_server("udp://0.0.0.0:58380", $errno, $errstr, STREAM_SERVER_BIND);
+$sock0 = socket_import_stream($stream0);
+test($stream0, $sock0);
+
+echo "\nunset stream\n";
+$stream1 = stream_socket_server("udp://0.0.0.0:58381", $errno, $errstr, STREAM_SERVER_BIND);
+$sock1 = socket_import_stream($stream1);
+unset($stream1);
+test(null, $sock1);
+
+echo "\nunset socket\n";
+$stream2 = stream_socket_server("udp://0.0.0.0:58382", $errno, $errstr, STREAM_SERVER_BIND);
+$sock2 = socket_import_stream($stream2);
+unset($sock2);
+test($stream2, null);
+
+echo "\nclose stream\n";
+$stream3 = stream_socket_server("udp://0.0.0.0:58383", $errno, $errstr, STREAM_SERVER_BIND);
+$sock3 = socket_import_stream($stream3);
+fclose($stream3);
+test($stream3, $sock3);
+
+echo "\nclose socket\n";
+$stream4 = stream_socket_server("udp://0.0.0.0:58384", $errno, $errstr, STREAM_SERVER_BIND);
+$sock4 = socket_import_stream($stream4);
+socket_close($sock4);
+test($stream4, $sock4);
+
+echo "Done.\n";
+--EXPECTF--
+normal
+stream_set_blocking 1
+socket_set_block 1
+socket_get_option 2
+
+
+unset stream
+socket_set_block 1
+socket_get_option 2
+
+
+unset socket
+stream_set_blocking 1
+
+
+close stream
+stream_set_blocking
+Warning: stream_set_blocking(): %d is not a valid stream resource in %s on line %d
+
+socket_set_block
+Warning: socket_set_block(): An operation was attempted on something that is not a socket.
+ in %ssocket_import_stream-4-win.php on line %d
+
+Warning: socket_set_block(): unable to set blocking mode [0]: The operation completed successfully.
+ in %ssocket_import_stream-4-win.php on line %d
+
+socket_get_option
+Warning: socket_get_option(): unable to retrieve socket option [0]: An operation was attempted on something that is not a socket.
+ in %ssocket_import_stream-4-win.php on line %d
+
+
+
+close socket
+stream_set_blocking
+Warning: stream_set_blocking(): %d is not a valid stream resource in %s on line %d
+
+socket_set_block
+Warning: socket_set_block(): %d is not a valid Socket resource in %s on line %d
+
+socket_get_option
+Warning: socket_get_option(): %d is not a valid Socket resource in %s on line %d
+
+
+Done.
diff --git a/ext/sockets/tests/socket_import_stream-4.phpt b/ext/sockets/tests/socket_import_stream-4.phpt
index 33ab104d6..8095d8dac 100644
--- a/ext/sockets/tests/socket_import_stream-4.phpt
+++ b/ext/sockets/tests/socket_import_stream-4.phpt
@@ -5,7 +5,9 @@ socket_import_stream: effects of closing
if (!extension_loaded('sockets')) {
die('SKIP sockets extension not available.');
}
-
+if(substr(PHP_OS, 0, 3) == 'WIN' ) {
+ die("skip Not Valid for Windows");
+}
--FILE--
<?php
diff --git a/ext/sockets/tests/socket_sentto_recvfrom_ipv4_udp.phpt b/ext/sockets/tests/socket_sentto_recvfrom_ipv4_udp.phpt
index 96cbf8f4d..bf95044d4 100644
--- a/ext/sockets/tests/socket_sentto_recvfrom_ipv4_udp.phpt
+++ b/ext/sockets/tests/socket_sentto_recvfrom_ipv4_udp.phpt
@@ -25,7 +25,7 @@ if (!extension_loaded('sockets')) {
$len = strlen($msg);
$bytes_sent = socket_sendto($socket, $msg, $len, 0, $address, 1223);
if ($bytes_sent == -1) {
- die('An error occured while sending to the socket');
+ die('An error occurred while sending to the socket');
} else if ($bytes_sent != $len) {
die($bytes_sent . ' bytes have been sent instead of the ' . $len . ' bytes expected');
}
@@ -36,7 +36,7 @@ if (!extension_loaded('sockets')) {
socket_recvfrom($socket, $buf, 12, 0, $from); // cause warning
$bytes_received = socket_recvfrom($socket, $buf, 12, 0, $from, $port);
if ($bytes_received == -1) {
- die('An error occured while receiving from the socket');
+ die('An error occurred while receiving from the socket');
} else if ($bytes_received != $len) {
die($bytes_received . ' bytes have been received instead of the ' . $len . ' bytes expected');
}
diff --git a/ext/sockets/tests/socket_sentto_recvfrom_ipv6_udp.phpt b/ext/sockets/tests/socket_sentto_recvfrom_ipv6_udp.phpt
index 1fa42fd5d..04f62eddd 100644
--- a/ext/sockets/tests/socket_sentto_recvfrom_ipv6_udp.phpt
+++ b/ext/sockets/tests/socket_sentto_recvfrom_ipv6_udp.phpt
@@ -26,7 +26,7 @@ require 'ipv6_skipif.inc';
$len = strlen($msg);
$bytes_sent = socket_sendto($socket, $msg, $len, 0, $address, 1223);
if ($bytes_sent == -1) {
- die('An error occured while sending to the socket');
+ die('An error occurred while sending to the socket');
} else if ($bytes_sent != $len) {
die($bytes_sent . ' bytes have been sent instead of the ' . $len . ' bytes expected');
}
@@ -37,7 +37,7 @@ require 'ipv6_skipif.inc';
socket_recvfrom($socket, $buf, 12, 0, $from); // cause warning
$bytes_received = socket_recvfrom($socket, $buf, 12, 0, $from, $port);
if ($bytes_received == -1) {
- die('An error occured while receiving from the socket');
+ die('An error occurred while receiving from the socket');
} else if ($bytes_received != $len) {
die($bytes_received . ' bytes have been received instead of the ' . $len . ' bytes expected');
}
diff --git a/ext/sockets/tests/socket_sentto_recvfrom_unix.phpt b/ext/sockets/tests/socket_sentto_recvfrom_unix.phpt
index 4cfdebbcb..55ad75c65 100644
--- a/ext/sockets/tests/socket_sentto_recvfrom_unix.phpt
+++ b/ext/sockets/tests/socket_sentto_recvfrom_unix.phpt
@@ -30,7 +30,7 @@ if (!extension_loaded('sockets')) {
$bytes_sent = socket_sendto($socket, $msg, $len, 0, $address);
if ($bytes_sent == -1) {
@unlink($address);
- die('An error occured while sending to the socket');
+ die('An error occurred while sending to the socket');
} else if ($bytes_sent != $len) {
@unlink($address);
die($bytes_sent . ' bytes have been sent instead of the ' . $len . ' bytes expected');
@@ -41,7 +41,7 @@ if (!extension_loaded('sockets')) {
$bytes_received = socket_recvfrom($socket, $buf, 12, 0, $from);
if ($bytes_received == -1) {
@unlink($address);
- die('An error occured while receiving from the socket');
+ die('An error occurred while receiving from the socket');
} else if ($bytes_received != $len) {
@unlink($address);
die($bytes_received . ' bytes have been received instead of the ' . $len . ' bytes expected');
diff --git a/ext/spl/spl_array.c b/ext/spl/spl_array.c
index e448731a5..84977c4b9 100755
--- a/ext/spl/spl_array.c
+++ b/ext/spl/spl_array.c
@@ -1943,6 +1943,7 @@ PHP_MINIT_FUNCTION(spl_array)
REGISTER_SPL_IMPLEMENTS(ArrayObject, Aggregate);
REGISTER_SPL_IMPLEMENTS(ArrayObject, ArrayAccess);
REGISTER_SPL_IMPLEMENTS(ArrayObject, Serializable);
+ REGISTER_SPL_IMPLEMENTS(ArrayObject, Countable);
memcpy(&spl_handler_ArrayObject, zend_get_std_object_handlers(), sizeof(zend_object_handlers));
spl_handler_ArrayObject.clone_obj = spl_array_object_clone;
@@ -1967,6 +1968,7 @@ PHP_MINIT_FUNCTION(spl_array)
REGISTER_SPL_IMPLEMENTS(ArrayIterator, ArrayAccess);
REGISTER_SPL_IMPLEMENTS(ArrayIterator, SeekableIterator);
REGISTER_SPL_IMPLEMENTS(ArrayIterator, Serializable);
+ REGISTER_SPL_IMPLEMENTS(ArrayIterator, Countable);
memcpy(&spl_handler_ArrayIterator, &spl_handler_ArrayObject, sizeof(zend_object_handlers));
spl_ce_ArrayIterator->get_iterator = spl_array_get_iterator;
@@ -1974,9 +1976,6 @@ PHP_MINIT_FUNCTION(spl_array)
REGISTER_SPL_IMPLEMENTS(RecursiveArrayIterator, RecursiveIterator);
spl_ce_RecursiveArrayIterator->get_iterator = spl_array_get_iterator;
- REGISTER_SPL_IMPLEMENTS(ArrayObject, Countable);
- REGISTER_SPL_IMPLEMENTS(ArrayIterator, Countable);
-
REGISTER_SPL_CLASS_CONST_LONG(ArrayObject, "STD_PROP_LIST", SPL_ARRAY_STD_PROP_LIST);
REGISTER_SPL_CLASS_CONST_LONG(ArrayObject, "ARRAY_AS_PROPS", SPL_ARRAY_ARRAY_AS_PROPS);
diff --git a/ext/spl/spl_directory.c b/ext/spl/spl_directory.c
index dbae3e2a0..0fcbd317e 100755
--- a/ext/spl/spl_directory.c
+++ b/ext/spl/spl_directory.c
@@ -1432,6 +1432,7 @@ SPL_METHOD(FilesystemIterator, __construct)
SPL_METHOD(FilesystemIterator, rewind)
{
spl_filesystem_object *intern = (spl_filesystem_object*)zend_object_store_get_object(getThis() TSRMLS_CC);
+ int skip_dots = SPL_HAS_FLAG(intern->flags, SPL_FILE_DIR_SKIPDOTS);
if (zend_parse_parameters_none() == FAILURE) {
return;
@@ -1443,7 +1444,7 @@ SPL_METHOD(FilesystemIterator, rewind)
}
do {
spl_filesystem_dir_read(intern TSRMLS_CC);
- } while (spl_filesystem_is_dot(intern->u.dir.entry.d_name));
+ } while (skip_dots && spl_filesystem_is_dot(intern->u.dir.entry.d_name));
}
/* }}} */
diff --git a/ext/spl/spl_heap.c b/ext/spl/spl_heap.c
index 42cb856e9..c6decd0ad 100644
--- a/ext/spl/spl_heap.c
+++ b/ext/spl/spl_heap.c
@@ -953,7 +953,7 @@ static int spl_heap_it_get_current_key(zend_object_iterator *iter, char **str_ke
{
spl_heap_it *iterator = (spl_heap_it *)iter;
- *int_key = (ulong) iterator->object->heap->count;
+ *int_key = (ulong) iterator->object->heap->count - 1;
return HASH_KEY_IS_LONG;
}
/* }}} */
diff --git a/ext/spl/tests/bug52238.phpt b/ext/spl/tests/bug52238.phpt
index 85410bdf1..10da0b5fd 100644
--- a/ext/spl/tests/bug52238.phpt
+++ b/ext/spl/tests/bug52238.phpt
@@ -1,5 +1,5 @@
--TEST--
-Bug #52238 - Crash when an Exception occured in iterator_to_array
+Bug #52238 - Crash when an Exception occurred in iterator_to_array
--FILE--
<?php
class Foo implements IteratorAggregate
diff --git a/ext/spl/tests/bug62073.phpt b/ext/spl/tests/bug62073.phpt
new file mode 100644
index 000000000..3bd355317
--- /dev/null
+++ b/ext/spl/tests/bug62073.phpt
@@ -0,0 +1,22 @@
+--TEST--
+Bug #62073 (different ways of iterating over an SplMaxHeap result in different keys)
+--FILE--
+<?php
+$heap = new SplMaxHeap();
+$heap->insert(42);
+foreach ($heap as $key => $value) {
+ var_dump($key);
+ var_dump($value);
+ break;
+}
+
+$heap = new SplMaxHeap();
+$heap->insert(42);
+var_dump($heap->key());
+var_dump($heap->current());
+?>
+--EXPECT--
+int(0)
+int(42)
+int(0)
+int(42)
diff --git a/ext/spl/tests/bug62262.phpt b/ext/spl/tests/bug62262.phpt
new file mode 100644
index 000000000..0e006ec2c
--- /dev/null
+++ b/ext/spl/tests/bug62262.phpt
@@ -0,0 +1,10 @@
+--TEST--
+Bug #62262: RecursiveArrayIterator does not implement Countable
+--FILE--
+<?php
+
+var_dump(new RecursiveArrayIterator(array()) instanceof Countable);
+
+?>
+--EXPECT--
+bool(true)
diff --git a/ext/spl/tests/bug62433.phpt b/ext/spl/tests/bug62433.phpt
new file mode 100644
index 000000000..86b5df838
--- /dev/null
+++ b/ext/spl/tests/bug62433.phpt
@@ -0,0 +1,18 @@
+--TEST--
+Bug #62433 Inconsistent behavior of RecursiveDirectoryIterator to dot files (. and ..)
+--FILE--
+<?php
+$dots = array_keys(iterator_to_array(new RecursiveDirectoryIterator(__DIR__)));
+$ndots = array_keys(iterator_to_array(new RecursiveDirectoryIterator(__DIR__, FilesystemIterator::SKIP_DOTS)));
+
+var_dump(in_array(__DIR__ . '/.', $dots));
+var_dump(in_array(__DIR__ . '/..', $dots));
+
+var_dump(in_array(__DIR__ . '/.', $ndots));
+var_dump(in_array(__DIR__ . '/..', $ndots));
+?>
+--EXPECT--
+bool(true)
+bool(true)
+bool(false)
+bool(false)
diff --git a/ext/spl/tests/heap_005.phpt b/ext/spl/tests/heap_005.phpt
index 73daaf454..1291cda77 100644
--- a/ext/spl/tests/heap_005.phpt
+++ b/ext/spl/tests/heap_005.phpt
@@ -18,104 +18,104 @@ foreach ($h as $k => $o) {
===DONE===
<?php exit(0); ?>
--EXPECTF--
-100 => 1
-99 => 2
-98 => 3
-97 => 4
-96 => 5
-95 => 6
-94 => 7
-93 => 8
-92 => 9
-91 => 10
-90 => 11
-89 => 12
-88 => 13
-87 => 14
-86 => 15
-85 => 16
-84 => 17
-83 => 18
-82 => 19
-81 => 20
-80 => 21
-79 => 22
-78 => 23
-77 => 24
-76 => 25
-75 => 26
-74 => 27
-73 => 28
-72 => 29
-71 => 30
-70 => 31
-69 => 32
-68 => 33
-67 => 34
-66 => 35
-65 => 36
-64 => 37
-63 => 38
-62 => 39
-61 => 40
-60 => 41
-59 => 42
-58 => 43
-57 => 44
-56 => 45
-55 => 46
-54 => 47
-53 => 48
-52 => 49
-51 => 50
-50 => 51
-49 => 52
-48 => 53
-47 => 54
-46 => 55
-45 => 56
-44 => 57
-43 => 58
-42 => 59
-41 => 60
-40 => 61
-39 => 62
-38 => 63
-37 => 64
-36 => 65
-35 => 66
-34 => 67
-33 => 68
-32 => 69
-31 => 70
-30 => 71
-29 => 72
-28 => 73
-27 => 74
-26 => 75
-25 => 76
-24 => 77
-23 => 78
-22 => 79
-21 => 80
-20 => 81
-19 => 82
-18 => 83
-17 => 84
-16 => 85
-15 => 86
-14 => 87
-13 => 88
-12 => 89
-11 => 90
-10 => 91
-9 => 92
-8 => 93
-7 => 94
-6 => 95
-5 => 96
-4 => 97
-3 => 98
-2 => 99
-1 => 100
+99 => 1
+98 => 2
+97 => 3
+96 => 4
+95 => 5
+94 => 6
+93 => 7
+92 => 8
+91 => 9
+90 => 10
+89 => 11
+88 => 12
+87 => 13
+86 => 14
+85 => 15
+84 => 16
+83 => 17
+82 => 18
+81 => 19
+80 => 20
+79 => 21
+78 => 22
+77 => 23
+76 => 24
+75 => 25
+74 => 26
+73 => 27
+72 => 28
+71 => 29
+70 => 30
+69 => 31
+68 => 32
+67 => 33
+66 => 34
+65 => 35
+64 => 36
+63 => 37
+62 => 38
+61 => 39
+60 => 40
+59 => 41
+58 => 42
+57 => 43
+56 => 44
+55 => 45
+54 => 46
+53 => 47
+52 => 48
+51 => 49
+50 => 50
+49 => 51
+48 => 52
+47 => 53
+46 => 54
+45 => 55
+44 => 56
+43 => 57
+42 => 58
+41 => 59
+40 => 60
+39 => 61
+38 => 62
+37 => 63
+36 => 64
+35 => 65
+34 => 66
+33 => 67
+32 => 68
+31 => 69
+30 => 70
+29 => 71
+28 => 72
+27 => 73
+26 => 74
+25 => 75
+24 => 76
+23 => 77
+22 => 78
+21 => 79
+20 => 80
+19 => 81
+18 => 82
+17 => 83
+16 => 84
+15 => 85
+14 => 86
+13 => 87
+12 => 88
+11 => 89
+10 => 90
+9 => 91
+8 => 92
+7 => 93
+6 => 94
+5 => 95
+4 => 96
+3 => 97
+2 => 98
+1 => 99
+0 => 100
===DONE===
diff --git a/ext/spl/tests/heap_006.phpt b/ext/spl/tests/heap_006.phpt
index 4422727d0..3218bdfb1 100644
--- a/ext/spl/tests/heap_006.phpt
+++ b/ext/spl/tests/heap_006.phpt
@@ -18,104 +18,104 @@ foreach ($h as $k => $o) {
===DONE===
<?php exit(0); ?>
--EXPECTF--
-100 => 100
-99 => 99
-98 => 98
-97 => 97
-96 => 96
-95 => 95
-94 => 94
-93 => 93
-92 => 92
-91 => 91
-90 => 90
-89 => 89
-88 => 88
-87 => 87
-86 => 86
-85 => 85
-84 => 84
-83 => 83
-82 => 82
-81 => 81
-80 => 80
-79 => 79
-78 => 78
-77 => 77
-76 => 76
-75 => 75
-74 => 74
-73 => 73
-72 => 72
-71 => 71
-70 => 70
-69 => 69
-68 => 68
-67 => 67
-66 => 66
-65 => 65
-64 => 64
-63 => 63
-62 => 62
-61 => 61
-60 => 60
-59 => 59
-58 => 58
-57 => 57
-56 => 56
-55 => 55
-54 => 54
-53 => 53
-52 => 52
-51 => 51
-50 => 50
-49 => 49
-48 => 48
-47 => 47
-46 => 46
-45 => 45
-44 => 44
-43 => 43
-42 => 42
-41 => 41
-40 => 40
-39 => 39
-38 => 38
-37 => 37
-36 => 36
-35 => 35
-34 => 34
-33 => 33
-32 => 32
-31 => 31
-30 => 30
-29 => 29
-28 => 28
-27 => 27
-26 => 26
-25 => 25
-24 => 24
-23 => 23
-22 => 22
-21 => 21
-20 => 20
-19 => 19
-18 => 18
-17 => 17
-16 => 16
-15 => 15
-14 => 14
-13 => 13
-12 => 12
-11 => 11
-10 => 10
-9 => 9
-8 => 8
-7 => 7
-6 => 6
-5 => 5
-4 => 4
-3 => 3
-2 => 2
-1 => 1
+99 => 100
+98 => 99
+97 => 98
+96 => 97
+95 => 96
+94 => 95
+93 => 94
+92 => 93
+91 => 92
+90 => 91
+89 => 90
+88 => 89
+87 => 88
+86 => 87
+85 => 86
+84 => 85
+83 => 84
+82 => 83
+81 => 82
+80 => 81
+79 => 80
+78 => 79
+77 => 78
+76 => 77
+75 => 76
+74 => 75
+73 => 74
+72 => 73
+71 => 72
+70 => 71
+69 => 70
+68 => 69
+67 => 68
+66 => 67
+65 => 66
+64 => 65
+63 => 64
+62 => 63
+61 => 62
+60 => 61
+59 => 60
+58 => 59
+57 => 58
+56 => 57
+55 => 56
+54 => 55
+53 => 54
+52 => 53
+51 => 52
+50 => 51
+49 => 50
+48 => 49
+47 => 48
+46 => 47
+45 => 46
+44 => 45
+43 => 44
+42 => 43
+41 => 42
+40 => 41
+39 => 40
+38 => 39
+37 => 38
+36 => 37
+35 => 36
+34 => 35
+33 => 34
+32 => 33
+31 => 32
+30 => 31
+29 => 30
+28 => 29
+27 => 28
+26 => 27
+25 => 26
+24 => 25
+23 => 24
+22 => 23
+21 => 22
+20 => 21
+19 => 20
+18 => 19
+17 => 18
+16 => 17
+15 => 16
+14 => 15
+13 => 14
+12 => 13
+11 => 12
+10 => 11
+9 => 10
+8 => 9
+7 => 8
+6 => 7
+5 => 6
+4 => 5
+3 => 4
+2 => 3
+1 => 2
+0 => 1
===DONE===
diff --git a/ext/spl/tests/pqueue_001.phpt b/ext/spl/tests/pqueue_001.phpt
index 9c299808f..de164e549 100644
--- a/ext/spl/tests/pqueue_001.phpt
+++ b/ext/spl/tests/pqueue_001.phpt
@@ -63,34 +63,34 @@ foreach ($pq3 as $k=>$v) {
<?php exit(0); ?>
--EXPECTF--
Exception: Can't extract from an empty heap
-3=>b
-2=>a
-1=>c
+2=>b
+1=>a
+0=>c
EXTR_BOTH
-3=>Array
+2=>Array
(
[data] => b
[priority] => 2
)
-2=>Array
+1=>Array
(
[data] => a
[priority] => 1
)
-1=>Array
+0=>Array
(
[data] => c
[priority] => 0
)
EXTR_DATA
-3=>b
-2=>a
-1=>c
+2=>b
+1=>a
+0=>c
EXTR_PRIORITY
-3=>2
-2=>1
-1=>0
+2=>2
+1=>1
+0=>0
===DONE===
diff --git a/ext/sqlite3/libsqlite/sqlite3.c b/ext/sqlite3/libsqlite/sqlite3.c
index a3d542a40..d96367e21 100644
--- a/ext/sqlite3/libsqlite/sqlite3.c
+++ b/ext/sqlite3/libsqlite/sqlite3.c
@@ -23307,7 +23307,7 @@ static int os2OpenSharedMemory( os2File *fd, int szRegion ) {
sqlite3_mutex_leave(pNode->mutex);
} else {
- /* Error occured. Free our link object. */
+ /* Error occurred. Free our link object. */
sqlite3_free(pLink);
}
@@ -28994,7 +28994,7 @@ static int fillInUnixFile(
unixEnterMutex();
rc = findInodeInfo(pNew, &pNew->pInode);
if( rc!=SQLITE_OK ){
- /* If an error occured in findInodeInfo(), close the file descriptor
+ /* If an error occurred in findInodeInfo(), close the file descriptor
** immediately, before releasing the mutex. findInodeInfo() may fail
** in two scenarios:
**
@@ -32173,7 +32173,7 @@ static int seekWinFile(winFile *pFile, sqlite3_int64 iOffset){
** containing the lower 32-bits of the new file-offset. Or, if it fails,
** it returns INVALID_SET_FILE_POINTER. However according to MSDN,
** INVALID_SET_FILE_POINTER may also be a valid new offset. So to determine
- ** whether an error has actually occured, it is also necessary to call
+ ** whether an error has actually occurred, it is also necessary to call
** GetLastError().
*/
dwRet = SetFilePointer(pFile->h, lowerBits, &upperBits, FILE_BEGIN);
@@ -32273,7 +32273,7 @@ static int winWrite(
int amt, /* Number of bytes to write */
sqlite3_int64 offset /* Offset into the file to begin writing at */
){
- int rc; /* True if error has occured, else false */
+ int rc; /* True if error has occurred, else false */
winFile *pFile = (winFile*)id; /* File handle */
assert( amt>0 );
@@ -37068,7 +37068,7 @@ int sqlite3PagerTrace=1; /* True to enable tracing */
** * A write transaction is active.
** * An EXCLUSIVE or greater lock is held on the database file.
** * All writing and syncing of journal and database data has finished.
-** If no error occured, all that remains is to finalize the journal to
+** If no error occurred, all that remains is to finalize the journal to
** commit the transaction. If an error did occur, the caller will need
** to rollback the transaction.
**
@@ -54279,7 +54279,7 @@ SQLITE_PRIVATE int sqlite3BtreeInsert(
insertCell(pPage, idx, newCell, szNew, 0, 0, &rc);
assert( rc!=SQLITE_OK || pPage->nCell>0 || pPage->nOverflow>0 );
- /* If no error has occured and pPage has an overflow cell, call balance()
+ /* If no error has occurred and pPage has an overflow cell, call balance()
** to redistribute the cells within the tree. Since balance() may move
** the cursor, zero the BtCursor.info.nSize and BtCursor.validNKey
** variables.
@@ -57935,7 +57935,7 @@ SQLITE_PRIVATE int sqlite3VdbeAssertMayAbort(Vdbe *v, int mayAbort){
}
sqlite3DbFree(v->db, sIter.apSub);
- /* Return true if hasAbort==mayAbort. Or if a malloc failure occured.
+ /* Return true if hasAbort==mayAbort. Or if a malloc failure occurred.
** If malloc failed, then the while() loop above may not have iterated
** through all opcodes and hasAbort may be set incorrectly. Return
** true for this case to prevent the assert() in the callers frame
@@ -59562,7 +59562,7 @@ SQLITE_PRIVATE int sqlite3VdbeCloseStatement(Vdbe *p, int eOp){
/* If p->iStatement is greater than zero, then this Vdbe opened a
** statement transaction that should be closed here. The only exception
- ** is that an IO error may have occured, causing an emergency rollback.
+ ** is that an IO error may have occurred, causing an emergency rollback.
** In this case (db->nStatement==0), and there is nothing to do.
*/
if( db->nStatement && p->iStatement ){
@@ -59697,7 +59697,7 @@ SQLITE_PRIVATE int sqlite3VdbeHalt(Vdbe *p){
**
** Even if the statement is read-only, it is important to perform
** a statement or transaction rollback operation. If the error
- ** occured while writing to the journal, sub-journal or database
+ ** occurred while writing to the journal, sub-journal or database
** file as part of an effort to free up cache space (see function
** pagerStress() in pager.c), the rollback is required to restore
** the pager to a consistent state.
@@ -61245,7 +61245,7 @@ end_of_step:
assert( p->rc!=SQLITE_ROW && p->rc!=SQLITE_DONE );
if( p->isPrepareV2 && rc!=SQLITE_ROW && rc!=SQLITE_DONE ){
/* If this statement was prepared using sqlite3_prepare_v2(), and an
- ** error has occured, then return the error code in p->rc to the
+ ** error has occurred, then return the error code in p->rc to the
** caller. Set the error code in the database handle to the same value.
*/
rc = db->errCode = p->rc;
@@ -113286,7 +113286,7 @@ static int fts3CursorSeek(sqlite3_context *pContext, Fts3Cursor *pCsr){
}else{
int rc = sqlite3_reset(pCsr->pStmt);
if( rc==SQLITE_OK ){
- /* If no row was found and no error has occured, then the %_content
+ /* If no row was found and no error has occurred, then the %_content
** table is missing a row that is present in the full-text index.
** The data structures are corrupt.
*/
diff --git a/ext/sqlite3/sqlite3.c b/ext/sqlite3/sqlite3.c
index a420d5d70..0bb8616d9 100644
--- a/ext/sqlite3/sqlite3.c
+++ b/ext/sqlite3/sqlite3.c
@@ -114,7 +114,10 @@ PHP_METHOD(sqlite3, open)
zend_throw_exception(zend_exception_get_default(TSRMLS_C), "Already initialised DB Object", 0 TSRMLS_CC);
}
- if (strncmp(filename, ":memory:", 8) != 0) {
+ if (strlen(filename) != filename_len) {
+ return;
+ }
+ if (memcmp(filename, ":memory:", sizeof(":memory:")) != 0) {
if (!(fullpath = expand_filepath(filename, NULL TSRMLS_CC))) {
zend_throw_exception(zend_exception_get_default(TSRMLS_C), "Unable to expand filepath", 0 TSRMLS_CC);
return;
@@ -1094,7 +1097,7 @@ static int php_sqlite3_stream_close(php_stream *stream, int close_handle TSRMLS_
php_stream_sqlite3_data *sqlite3_stream = (php_stream_sqlite3_data *) stream->abstract;
if (sqlite3_blob_close(sqlite3_stream->blob) != SQLITE_OK) {
- /* Error occured, but it still closed */
+ /* Error occurred, but it still closed */
}
efree(sqlite3_stream);
@@ -1959,7 +1962,7 @@ static int php_sqlite3_authorizer(void *autharg, int access_type, const char *ar
switch (access_type) {
case SQLITE_ATTACH:
{
- if (strncmp(arg3, ":memory:", sizeof(":memory:")-1) && *arg3) {
+ if (memcmp(arg3, ":memory:", sizeof(":memory:")) && *arg3) {
TSRMLS_FETCH();
#if PHP_API_VERSION < 20100412
diff --git a/ext/standard/base64.c b/ext/standard/base64.c
index 9e9c36250..d78cb244c 100644
--- a/ext/standard/base64.c
+++ b/ext/standard/base64.c
@@ -59,14 +59,14 @@ PHPAPI unsigned char *php_base64_encode(const unsigned char *str, int length, in
unsigned char *p;
unsigned char *result;
- if ((length + 2) < 0 || ((length + 2) / 3) >= (1 << (sizeof(int) * 8 - 2))) {
+ if (length < 0) {
if (ret_length != NULL) {
*ret_length = 0;
}
return NULL;
}
- result = (unsigned char *)safe_emalloc(((length + 2) / 3) * 4, sizeof(char), 1);
+ result = (unsigned char *) safe_emalloc((length + 2) / 3, 4 * sizeof(char), 1);
p = result;
while (length > 2) { /* keep going until we have less than 24 bits */
diff --git a/ext/standard/basic_functions.c b/ext/standard/basic_functions.c
index 646005ebc..a5637db50 100644
--- a/ext/standard/basic_functions.c
+++ b/ext/standard/basic_functions.c
@@ -3833,7 +3833,7 @@ PHP_NAMED_FUNCTION(php_inet_ntop)
}
if (!inet_ntop(af, address, buffer, sizeof(buffer))) {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "An unknown error occured");
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "An unknown error occurred");
RETURN_FALSE;
}
diff --git a/ext/standard/browscap.c b/ext/standard/browscap.c
index de6d18094..ae5e90cf9 100644
--- a/ext/standard/browscap.c
+++ b/ext/standard/browscap.c
@@ -43,7 +43,7 @@ ZEND_BEGIN_MODULE_GLOBALS(browscap)
browser_data activation_bdata;
ZEND_END_MODULE_GLOBALS(browscap)
-ZEND_DECLARE_MODULE_GLOBALS(browscap);
+ZEND_DECLARE_MODULE_GLOBALS(browscap)
#ifdef ZTS
#define BROWSCAP_G(v) TSRMG(browscap_globals_id, zend_browscap_globals *, v)
diff --git a/ext/standard/crypt.c b/ext/standard/crypt.c
index 9a1fcf1f6..27a8d82d0 100644
--- a/ext/standard/crypt.c
+++ b/ext/standard/crypt.c
@@ -199,7 +199,7 @@ PHP_FUNCTION(crypt)
char *output;
int needed = (sizeof(sha512_salt_prefix) - 1
+ sizeof(sha512_rounds_prefix) + 9 + 1
- + strlen(salt) + 1 + 43 + 1);
+ + salt_in_len + 1 + 86 + 1);
output = emalloc(needed);
salt[salt_in_len] = '\0';
@@ -214,7 +214,7 @@ PHP_FUNCTION(crypt)
RETVAL_STRING(output, 1);
}
- memset(output, 0, PHP_MAX_SALT_LEN + 1);
+ memset(output, 0, needed);
efree(output);
} else if (salt[0]=='$' && salt[1]=='5' && salt[2]=='$') {
const char sha256_salt_prefix[] = "$5$";
@@ -222,7 +222,7 @@ PHP_FUNCTION(crypt)
char *output;
int needed = (sizeof(sha256_salt_prefix) - 1
+ sizeof(sha256_rounds_prefix) + 9 + 1
- + strlen(salt) + 1 + 43 + 1);
+ + salt_in_len + 1 + 43 + 1);
output = emalloc(needed);
salt[salt_in_len] = '\0';
@@ -237,7 +237,7 @@ PHP_FUNCTION(crypt)
RETVAL_STRING(output, 1);
}
- memset(output, 0, PHP_MAX_SALT_LEN + 1);
+ memset(output, 0, needed);
efree(output);
} else if (
salt[0] == '$' &&
diff --git a/ext/standard/proc_open.c b/ext/standard/proc_open.c
index 4dd52ed28..5ff91994a 100644
--- a/ext/standard/proc_open.c
+++ b/ext/standard/proc_open.c
@@ -56,7 +56,7 @@
/* This symbol is defined in ext/standard/config.m4.
* Essentially, it is set if you HAVE_FORK || PHP_WIN32
- * Otherplatforms may modify that configure check and add suitable #ifdefs
+ * Other platforms may modify that configure check and add suitable #ifdefs
* around the alternate code.
* */
#ifdef PHP_CAN_SUPPORT_PROC_OPEN
diff --git a/ext/standard/tests/dir/dir_variation8-win32.phpt b/ext/standard/tests/dir/dir_variation8-win32.phpt
index 2202fb048..a56c98b88 100644
--- a/ext/standard/tests/dir/dir_variation8-win32.phpt
+++ b/ext/standard/tests/dir/dir_variation8-win32.phpt
@@ -45,23 +45,23 @@ echo "Done";
*** Testing dir() : checking with wildcard characters ***
-- wildcard = '*' --
-Warning: dir(%s/dir_var*,%s/dir_var*): No such file or directory in %s on line %d
+Warning: dir(%s/dir_var*,%s/dir_var*): %r(No such file or directory|The system cannot find the path specified. \(code: 3\))%r in %s on line %d
Warning: dir(%s/dir_var*): failed to open dir: %s in %s on line %d
bool(false)
-Warning: dir(%s/*,%s/*): No such file or directory in %s on line %d
+Warning: dir(%s/*,%s/*): %r(No such file or directory|The system cannot find the path specified. \(code: 3\))%r in %s on line %d
Warning: dir(%s/*): failed to open dir: %s in %s on line %d
bool(false)
-- wildcard = '?' --
-Warning: dir(%s/dir_variation81/sub_dir?,%s/dir_variation81/sub_dir?): No such file or directory in %s on line %d
+Warning: dir(%s/dir_variation81/sub_dir?,%s/dir_variation81/sub_dir?): %r(No such file or directory|The system cannot find the path specified. \(code: 3\))%r in %s on line %d
Warning: dir(%s/dir_variation81/sub_dir?): failed to open dir: %s in %s on line %d
bool(false)
-Warning: dir(%s/dir_variation81/sub?dir1,%s/dir_variation81/sub?dir1): No such file or directory in %s on line %d
+Warning: dir(%s/dir_variation81/sub?dir1,%s/dir_variation81/sub?dir1): %r(No such file or directory|The system cannot find the path specified. \(code: 3\))%r in %s on line %d
Warning: dir(%s/dir_variation81/sub?dir1): failed to open dir: %s in %s on line %d
bool(false)
diff --git a/ext/standard/tests/file/bug51094.phpt b/ext/standard/tests/file/bug51094.phpt
new file mode 100644
index 000000000..782355872
--- /dev/null
+++ b/ext/standard/tests/file/bug51094.phpt
@@ -0,0 +1,22 @@
+--TEST--
+Fixed bug #51094 (parse_ini_file() with INI_SCANNER_RAW cuts a value that includes a semi-colon).
+--FILE--
+<?php
+
+$ini = parse_ini_string('ini="ini;raw"', null, INI_SCANNER_RAW);
+var_dump($ini['ini']);
+$ini = parse_ini_string('ini="ini;raw', null, INI_SCANNER_RAW);
+var_dump($ini['ini']);
+$ini = parse_ini_string('ini=ini;raw', null, INI_SCANNER_RAW);
+var_dump($ini['ini']);
+$ini = parse_ini_string('ini=ini"raw', null, INI_SCANNER_RAW);
+var_dump($ini['ini']);
+$ini = parse_ini_string("ini=\r\niniraw", null, INI_SCANNER_RAW);
+var_dump($ini['ini']);
+--EXPECTF--
+string(7) "ini;raw"
+string(8) ""ini;raw"
+string(3) "ini"
+string(7) "ini"raw"
+string(0) ""
+
diff --git a/ext/standard/tests/file/popen_pclose_basic-win32.phpt b/ext/standard/tests/file/popen_pclose_basic-win32.phpt
index b5c72560d..6351d866f 100644
--- a/ext/standard/tests/file/popen_pclose_basic-win32.phpt
+++ b/ext/standard/tests/file/popen_pclose_basic-win32.phpt
@@ -39,7 +39,10 @@ $arr = array("ggg", "ddd", "aaa", "sss");
//
// since we can't depend on PHP.ini being set a certain way,
// have to put the absolute path here.
-$file_handle = popen("/windows/system32/sort", "w");
+
+$sysroot = exec('echo %SYSTEMROOT%');
+
+$file_handle = popen("$sysroot/system32/sort", "w");
$newline = "\n";
foreach($arr as $str) {
fwrite($file_handle, (binary)$str);
diff --git a/ext/standard/tests/file/rename_variation13-win32.phpt b/ext/standard/tests/file/rename_variation13-win32.phpt
index dc44b358f..a5030761a 100644
--- a/ext/standard/tests/file/rename_variation13-win32.phpt
+++ b/ext/standard/tests/file/rename_variation13-win32.phpt
Binary files differ
diff --git a/ext/standard/tests/file/tempnam_variation7-win32.phpt b/ext/standard/tests/file/tempnam_variation7-win32.phpt
index 1f0d97acf..0c8caca95 100644
--- a/ext/standard/tests/file/tempnam_variation7-win32.phpt
+++ b/ext/standard/tests/file/tempnam_variation7-win32.phpt
@@ -93,13 +93,13 @@ File created in => temp dir
Warning: tempnam() expects parameter 1 to be a valid path, string given in %stempnam_variation7-win32.php on line %d
-- File is not created --
-Warning: unlink(): Invalid argument in %s on line %d
+Warning: unlink(): %r(Invalid argument|No such file or directory)%r in %s on line %d
-- Iteration 7 --
Warning: tempnam() expects parameter 1 to be a valid path, array given in %s on line %d
-- File is not created --
-Warning: unlink(): Invalid argument in %s on line %d
+Warning: unlink(): %r(Invalid argument|No such file or directory)%r in %s on line %d
-- Iteration 8 --
File name is => %s%et%s
File permissions are => 100666
diff --git a/ext/standard/tests/file/umask_basic.phpt b/ext/standard/tests/file/umask_basic.phpt
index 7a2eb762d..761df9725 100644
--- a/ext/standard/tests/file/umask_basic.phpt
+++ b/ext/standard/tests/file/umask_basic.phpt
@@ -20,7 +20,7 @@ for($mask = 0000; $mask <= 0777; $mask++) {
var_dump( umask() );
echo "\n";
if ($mask != umask()) {
- die('An error occured while changing back the umask');
+ die('An error occurred while changing back the umask');
}
}
diff --git a/ext/standard/tests/mail/mail_skipif.inc b/ext/standard/tests/mail/mail_skipif.inc
index 2f4fbf3d6..006594021 100644
--- a/ext/standard/tests/mail/mail_skipif.inc
+++ b/ext/standard/tests/mail/mail_skipif.inc
@@ -1,5 +1,15 @@
<?php
extension_loaded('imap') or die('skip imap extension not available in this build');
+
+if( substr(PHP_OS, 0, 3) == 'WIN' && extension_loaded('sockets')) {
+ // be sure mail server is accessible... on PHP 5.3.13 release build, using test-pack PHP-5.3-r1af8b3f,
+ // the code below didn't skip test even though there was no mail server
+ // test then failed (no mail server to test against)
+ $socket = socket_create(AF_INET, SOCK_RAW, 1);
+ socket_set_option($socket, SOL_SOCKET, SO_RCVTIMEO, array('sec' => 10, 'usec' => 10));
+ // imap uses tcp port 143
+ socket_connect($socket, "localhost", 143) or die ("skip can't socket to mail server");
+}
// Change these to make tests run successfully
$mailbox = '{localhost}';
diff --git a/ext/standard/tests/serialize/bug62373.phpt b/ext/standard/tests/serialize/bug62373.phpt
new file mode 100644
index 000000000..666c33ebd
--- /dev/null
+++ b/ext/standard/tests/serialize/bug62373.phpt
@@ -0,0 +1,25 @@
+--TEST--
+Bug #62373 (serialize() generates wrong reference to the object)
+--FILE--
+<?php
+class A {}
+class B {}
+
+$size_of_ce = (((int)(log(PHP_INT_MAX) / log(2)) + 1 == 32 ? 368: 680) + 15) & ~15;
+$dummy = array();
+$b = new B();
+$period = $size_of_ce << 5;
+for ($i = 0; $i < $period * 3; $i++) {
+ $a = new A();
+ $s = unserialize(serialize(array($b, $a)));
+ if ($s[0] === $s[1]) {
+ echo "OOPS\n";
+ break;
+ }
+ $dummy[] = $a;
+}
+
+echo "OK\n";
+?>
+--EXPECT--
+OK
diff --git a/ext/standard/tests/strings/bug62443.phpt b/ext/standard/tests/strings/bug62443.phpt
new file mode 100644
index 000000000..9e0dc38cf
--- /dev/null
+++ b/ext/standard/tests/strings/bug62443.phpt
@@ -0,0 +1,9 @@
+--TEST--
+Bug #62443 Crypt SHA256/512 Segfaults With Malformed Salt
+--FILE--
+<?php
+crypt("foo", '$5$'.chr(0).'abc');
+crypt("foo", '$6$'.chr(0).'abc');
+echo "OK!";
+--EXPECT--
+OK!
diff --git a/ext/standard/var.c b/ext/standard/var.c
index c6126e95f..735d0a7cb 100644
--- a/ext/standard/var.c
+++ b/ext/standard/var.c
@@ -541,12 +541,9 @@ static inline int php_add_var_hash(HashTable *var_hash, zval *var, void *var_old
/* relies on "(long)" being a perfect hash function for data pointers,
* however the actual identity of an object has had to be determined
- * by its object handle and the class entry since 5.0. */
+ * by its object handle since 5.0. */
if ((Z_TYPE_P(var) == IS_OBJECT) && Z_OBJ_HT_P(var)->get_class_entry) {
- p = smart_str_print_long(id + sizeof(id) - 1,
- (((size_t)Z_OBJCE_P(var) << 5)
- | ((size_t)Z_OBJCE_P(var) >> (sizeof(long) * 8 - 5)))
- + (long) Z_OBJ_HANDLE_P(var));
+ p = smart_str_print_long(id + sizeof(id) - 1, (long) Z_OBJ_HANDLE_P(var));
*(--p) = 'O';
len = id + sizeof(id) - 1 - p;
} else {
diff --git a/ext/tidy/examples/cleanhtml.php b/ext/tidy/examples/cleanhtml.php
index 9a6713dc5..2644210cb 100644
--- a/ext/tidy/examples/cleanhtml.php
+++ b/ext/tidy/examples/cleanhtml.php
@@ -26,7 +26,7 @@
if(tidy_warning_count() ||
tidy_error_count()) {
- echo "\n\nThe following errors or warnings occured:\n";
+ echo "\n\nThe following errors or warnings occurred:\n";
echo tidy_get_error_buffer();
echo "\n";
}
diff --git a/ext/tidy/examples/cleanhtml5.php b/ext/tidy/examples/cleanhtml5.php
index 4dfd7643e..2ce683aca 100644
--- a/ext/tidy/examples/cleanhtml5.php
+++ b/ext/tidy/examples/cleanhtml5.php
@@ -25,7 +25,7 @@
if(!empty($tidy->errorBuffer)) {
- echo "\n\nThe following errors or warnings occured:\n";
+ echo "\n\nThe following errors or warnings occurred:\n";
echo "{$tidy->errorBuffer}\n";
}
diff --git a/ext/tidy/tests/004.phpt b/ext/tidy/tests/004.phpt
index 7ca17c6d9..d13c37dcd 100644
--- a/ext/tidy/tests/004.phpt
+++ b/ext/tidy/tests/004.phpt
@@ -6,7 +6,7 @@ tidy_diagnose()
<?php
$a = tidy_parse_string('<HTML></HTML>');
var_dump(tidy_diagnose($a));
-echo tidy_get_error_buffer($a);
+echo str_replace("\r", "", tidy_get_error_buffer($a));
$html = <<< HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
diff --git a/ext/tidy/tidy.c b/ext/tidy/tidy.c
index 5ac1a6919..72d8f5db6 100644
--- a/ext/tidy/tidy.c
+++ b/ext/tidy/tidy.c
@@ -1238,7 +1238,7 @@ static PHP_FUNCTION(tidy_parse_string)
/* }}} */
/* {{{ proto string tidy_get_error_buffer()
- Return warnings and errors which occured parsing the specified document*/
+ Return warnings and errors which occurred parsing the specified document*/
static PHP_FUNCTION(tidy_get_error_buffer)
{
TIDY_FETCH_OBJECT;
diff --git a/ext/wddx/tests/bug48562.phpt b/ext/wddx/tests/bug48562.phpt
index ebd2004e0..ee9f271d9 100644
--- a/ext/wddx/tests/bug48562.phpt
+++ b/ext/wddx/tests/bug48562.phpt
@@ -16,6 +16,12 @@ $a['x'] = &$a;
var_dump(wddx_serialize_vars($a));
+// replace $a - the recursion detection seems to be causing $a to be not an array here, maybe its internally a pointer
+// replacing $a with a new array() allows this test to still check for 2 things
+// 1. recursion detection in &$a;
+// 2. recursion detection in adding $a to itself and then serializing $a
+// the one thing the test won't check is using $a as an array after doing &$a; which isn't really a wddx problem.
+$a = array();
$a['x'] = 'foo';
$a['x'] = $a;
diff --git a/ext/xmlwriter/php_xmlwriter.c b/ext/xmlwriter/php_xmlwriter.c
index 84be01d70..0514b17ff 100644
--- a/ext/xmlwriter/php_xmlwriter.c
+++ b/ext/xmlwriter/php_xmlwriter.c
@@ -614,6 +614,7 @@ static char *_xmlwriter_get_valid_file_path(char *source, char *resolved_path, i
/* absolute file uris - libxml only supports localhost or empty host */
if (strncasecmp(source, "file:///", 8) == 0) {
if (source[sizeof("file:///") - 1] == '\0') {
+ xmlFreeURI(uri);
return NULL;
}
isFileUri = 1;
@@ -624,6 +625,7 @@ static char *_xmlwriter_get_valid_file_path(char *source, char *resolved_path, i
#endif
} else if (strncasecmp(source, "file://localhost/",17) == 0) {
if (source[sizeof("file://localhost/") - 1] == '\0') {
+ xmlFreeURI(uri);
return NULL;
}
diff --git a/ext/xsl/xsltprocessor.c b/ext/xsl/xsltprocessor.c
index d48e7090a..5aa6aa943 100644
--- a/ext/xsl/xsltprocessor.c
+++ b/ext/xsl/xsltprocessor.c
@@ -336,7 +336,7 @@ static void xsl_ext_function_php(xmlXPathParserContextPtr ctxt, int nargs, int t
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to call handler %s()", Z_STRVAL_P(&handler));
valuePush(ctxt, xmlXPathNewString(""));
}
- /* retval is == NULL, when an exception occured, don't report anything, because PHP itself will handle that */
+ /* retval is == NULL, when an exception occurred, don't report anything, because PHP itself will handle that */
} else if (retval == NULL) {
} else {
if (retval->type == IS_OBJECT && instanceof_function( Z_OBJCE_P(retval), dom_node_class_entry TSRMLS_CC)) {
diff --git a/ext/zip/config.m4 b/ext/zip/config.m4
index d5c24ce9c..85f9119f5 100644
--- a/ext/zip/config.m4
+++ b/ext/zip/config.m4
@@ -89,7 +89,14 @@ yes
lib/zip_new.c lib/zip_source_file.c lib/zip_stat_index.c \
lib/zip_set_archive_comment.c lib/zip_set_file_comment.c \
lib/zip_unchange_archive.c lib/zip_memdup.c lib/zip_stat_init.c lib/zip_add_dir.c \
- lib/zip_error_clear.c lib/zip_file_error_clear.c"
+ lib/zip_error_clear.c lib/zip_file_error_clear.c \
+ lib/zip_fdopen.c lib/zip_fopen_encrypted.c lib/zip_fopen_index_encrypted.c \
+ lib/zip_get_compression_implementation.c lib/zip_get_encryption_implementation.c \
+ lib/zip_get_file_extra.c lib/zip_get_num_entries.c lib/zip_set_default_password.c \
+ lib/zip_set_file_extra.c lib/zip_source_close.c lib/zip_source_crc.c \
+ lib/zip_source_deflate.c lib/zip_source_error.c lib/zip_source_layered.c \
+ lib/zip_source_open.c lib/zip_source_pkware.c lib/zip_source_pop.c \
+ lib/zip_source_read.c lib/zip_source_stat.c"
AC_DEFINE(HAVE_ZIP,1,[ ])
PHP_NEW_EXTENSION(zip, php_zip.c zip_stream.c $PHP_ZIP_SOURCES, $ext_shared)
diff --git a/ext/zip/config.w32 b/ext/zip/config.w32
index e60a983b3..fa0a5180d 100644
--- a/ext/zip/config.w32
+++ b/ext/zip/config.w32
@@ -27,7 +27,14 @@ if (PHP_ZIP != "no") {
zip_get_archive_comment.c zip_get_file_comment.c \
zip_set_archive_comment.c zip_set_file_comment.c \
zip_unchange_archive.c zip_memdup.c zip_stat_init.c \
- zip_add_dir.c zip_file_error_clear.c zip_error_clear.c", "zip");
+ zip_add_dir.c zip_file_error_clear.c zip_error_clear.c \
+ zip_fdopen.c zip_fopen_encrypted.c zip_fopen_index_encrypted.c \
+ zip_get_compression_implementation.c zip_get_encryption_implementation.c \
+ zip_get_file_extra.c zip_get_num_entries.c zip_set_default_password.c \
+ zip_set_file_extra.c zip_source_close.c zip_source_crc.c \
+ zip_source_deflate.c zip_source_error.c zip_source_layered.c \
+ zip_source_open.c zip_source_pkware.c zip_source_pop.c \
+ zip_source_read.c zip_source_stat.c", "zip");
AC_DEFINE('HAVE_ZIP', 1);
} else {
diff --git a/ext/zip/lib/zip.h b/ext/zip/lib/zip.h
index 14a57bc58..f11c9aba7 100644
--- a/ext/zip/lib/zip.h
+++ b/ext/zip/lib/zip.h
@@ -3,7 +3,7 @@
/*
zip.h -- exported declarations.
- Copyright (C) 1999-2009 Dieter Baron and Thomas Klausner
+ Copyright (C) 1999-2011 Dieter Baron and Thomas Klausner
This file is part of libzip, a library to manipulate ZIP archives.
The authors can be contacted at <libzip@nih.at>
@@ -52,6 +52,8 @@
BEGIN_EXTERN_C()
+#include "zipconf.h"
+
#include <sys/types.h>
#include <stdio.h>
#include <time.h>
@@ -71,10 +73,19 @@ BEGIN_EXTERN_C()
#define ZIP_FL_COMPRESSED 4 /* read compressed data */
#define ZIP_FL_UNCHANGED 8 /* use original data, ignoring changes */
#define ZIP_FL_RECOMPRESS 16 /* force recompression of data */
+#define ZIP_FL_ENCRYPTED 32 /* read encrypted data
+ (implies ZIP_FL_COMPRESSED) */
/* archive global flags flags */
#define ZIP_AFL_TORRENT 1 /* torrent zipped */
+#define ZIP_AFL_RDONLY 2 /* read only -- cannot be cleared */
+
+
+/* flags for compression and encryption sources */
+
+#define ZIP_CODEC_ENCODE 1 /* compress/encrypt */
+
/* libzip error codes */
@@ -102,7 +113,10 @@ BEGIN_EXTERN_C()
#define ZIP_ER_INCONS 21 /* N Zip archive inconsistent */
#define ZIP_ER_REMOVE 22 /* S Can't remove file */
#define ZIP_ER_DELETED 23 /* N Entry has been deleted */
-
+#define ZIP_ER_ENCRNOTSUPP 24 /* N Encryption method not supported */
+#define ZIP_ER_RDONLY 25 /* N Read-only archive */
+#define ZIP_ER_NOPASSWD 26 /* N No password provided */
+#define ZIP_ER_WRONGPASSWD 27 /* N Wrong password provided */
/* type of system error value */
@@ -162,69 +176,99 @@ enum zip_source_cmd {
ZIP_SOURCE_FREE /* cleanup and free resources */
};
-typedef ssize_t (*zip_source_callback)(void *state, void *data,
- size_t len, enum zip_source_cmd cmd);
+#define ZIP_SOURCE_ERR_LOWER -2
+
+#define ZIP_STAT_NAME 0x0001
+#define ZIP_STAT_INDEX 0x0002
+#define ZIP_STAT_SIZE 0x0004
+#define ZIP_STAT_COMP_SIZE 0x0008
+#define ZIP_STAT_MTIME 0x0010
+#define ZIP_STAT_CRC 0x0020
+#define ZIP_STAT_COMP_METHOD 0x0040
+#define ZIP_STAT_ENCRYPTION_METHOD 0x0080
+#define ZIP_STAT_FLAGS 0x0100
struct zip_stat {
+ zip_uint64_t valid; /* which fields have valid values */
const char *name; /* name of the file */
- int index; /* index within archive */
- unsigned int crc; /* crc of file data */
+ zip_uint64_t index; /* index within archive */
+ zip_uint64_t size; /* size of file (uncompressed) */
+ zip_uint64_t comp_size; /* size of file (compressed) */
time_t mtime; /* modification time */
- off_t size; /* size of file (uncompressed) */
- off_t comp_size; /* size of file (compressed) */
- unsigned short comp_method; /* compression method used */
- unsigned short encryption_method; /* encryption method used */
+ zip_uint32_t crc; /* crc of file data */
+ zip_uint16_t comp_method; /* compression method used */
+ zip_uint16_t encryption_method; /* encryption method used */
+ zip_uint32_t flags; /* reserved for future use */
};
struct zip;
struct zip_file;
struct zip_source;
+typedef zip_int64_t (*zip_source_callback)(void *, void *, zip_uint64_t,
+ enum zip_source_cmd);
+
-ZIP_EXTERN(int) zip_add(struct zip *, const char *, struct zip_source *);
-ZIP_EXTERN(int) zip_add_dir(struct zip *, const char *);
+ZIP_EXTERN(zip_int64_t) zip_add(struct zip *, const char *, struct zip_source *);
+ZIP_EXTERN(zip_int64_t) zip_add_dir(struct zip *, const char *);
ZIP_EXTERN(int) zip_close(struct zip *);
-ZIP_EXTERN(int) zip_delete(struct zip *, int);
+ZIP_EXTERN(int) zip_delete(struct zip *, zip_uint64_t);
ZIP_EXTERN(void) zip_error_clear(struct zip *);
ZIP_EXTERN(void) zip_error_get(struct zip *, int *, int *);
ZIP_EXTERN(int) zip_error_get_sys_type(int);
-ZIP_EXTERN(int) zip_error_to_str(char *, size_t, int, int);
+ZIP_EXTERN(int) zip_error_to_str(char *, zip_uint64_t, int, int);
ZIP_EXTERN(int) zip_fclose(struct zip_file *);
+ZIP_EXTERN(struct zip *)zip_fdopen(int, int, int *);
ZIP_EXTERN(void) zip_file_error_clear(struct zip_file *);
ZIP_EXTERN(void) zip_file_error_get(struct zip_file *, int *, int *);
ZIP_EXTERN(const char *)zip_file_strerror(struct zip_file *);
-ZIP_EXTERN(struct zip_file *)zip_fopen(struct zip *, const char *, int);
-ZIP_EXTERN(struct zip_file *)zip_fopen_index(struct zip *, int, int);
-ZIP_EXTERN(ssize_t) zip_fread(struct zip_file *, void *, size_t);
+ZIP_EXTERN(struct) zip_file *zip_fopen(struct zip *, const char *, int);
+ZIP_EXTERN(struct) zip_file *zip_fopen_encrypted(struct zip *, const char *,
+ int, const char *);
+ZIP_EXTERN(struct zip_file *)zip_fopen_index(struct zip *, zip_uint64_t, int);
+ZIP_EXTERN(struct zip_file *)zip_fopen_index_encrypted(struct zip *,
+ zip_uint64_t, int,
+ const char *);
+ZIP_EXTERN(zip_int64_t) zip_fread(struct zip_file *, void *, zip_uint64_t);
ZIP_EXTERN(const char *)zip_get_archive_comment(struct zip *, int *, int);
ZIP_EXTERN(int) zip_get_archive_flag(struct zip *, int, int);
-ZIP_EXTERN(const char *)zip_get_file_comment(struct zip *, int, int *, int);
-ZIP_EXTERN(const char *)zip_get_name(struct zip *, int, int);
-ZIP_EXTERN(int) zip_get_num_files(struct zip *);
+ZIP_EXTERN(const char *)zip_get_file_comment(struct zip *, zip_uint64_t,
+ int *, int);
+ZIP_EXTERN(const char *)zip_get_file_extra(struct zip *, zip_uint64_t,
+ int *, int);
+ZIP_EXTERN(const char *)zip_get_name(struct zip *, zip_uint64_t, int);
+ZIP_EXTERN(zip_uint64_t) zip_get_num_entries(struct zip *, int);
+ZIP_EXTERN(int) zip_get_num_files(struct zip *); /* deprecated, use zip_get_num_entries instead */
ZIP_EXTERN(int) zip_name_locate(struct zip *, const char *, int);
ZIP_EXTERN(struct zip *)zip_open(const char *, int, int *);
-ZIP_EXTERN(int) zip_rename(struct zip *, int, const char *);
-ZIP_EXTERN(int) zip_replace(struct zip *, int, struct zip_source *);
+ZIP_EXTERN(int) zip_rename(struct zip *, zip_uint64_t, const char *);
+ZIP_EXTERN(int) zip_replace(struct zip *, zip_uint64_t, struct zip_source *);
ZIP_EXTERN(int) zip_set_archive_comment(struct zip *, const char *, int);
ZIP_EXTERN(int) zip_set_archive_flag(struct zip *, int, int);
-ZIP_EXTERN(int) zip_set_file_comment(struct zip *, int, const char *, int);
-ZIP_EXTERN(struct zip_source *)zip_source_buffer(struct zip *, const void *,
- off_t, int);
-ZIP_EXTERN(struct zip_source *)zip_source_file(struct zip *, const char *,
- off_t, off_t);
-ZIP_EXTERN(struct zip_source *)zip_source_filep(struct zip *, FILE *,
- off_t, off_t);
+ZIP_EXTERN(int) zip_set_default_password(struct zip *, const char *);
+ZIP_EXTERN(int) zip_set_file_comment(struct zip *, zip_uint64_t,
+ const char *, int);
+ZIP_EXTERN(int) zip_set_file_extra(struct zip *, zip_uint64_t,
+ const char *, int);
+ZIP_EXTERN(struct) zip_source *zip_source_buffer(struct zip *, const void *,
+ zip_uint64_t, int);
+ZIP_EXTERN(struct) zip_source *zip_source_file(struct zip *, const char *,
+ zip_uint64_t, zip_int64_t);
+ZIP_EXTERN(struct) zip_source *zip_source_filep(struct zip *, FILE *,
+ zip_uint64_t, zip_int64_t);
ZIP_EXTERN(void) zip_source_free(struct zip_source *);
ZIP_EXTERN(struct zip_source *)zip_source_function(struct zip *,
zip_source_callback, void *);
ZIP_EXTERN(struct zip_source *)zip_source_zip(struct zip *, struct zip *,
- int, int, off_t, off_t);
+ zip_uint64_t, int,
+ zip_uint64_t, zip_int64_t);
ZIP_EXTERN(int) zip_stat(struct zip *, const char *, int, struct zip_stat *);
-ZIP_EXTERN(int) zip_stat_index(struct zip *, int, int, struct zip_stat *);
+ZIP_EXTERN(int) zip_stat_index(struct zip *, zip_uint64_t, int,
+ struct zip_stat *);
ZIP_EXTERN(void) zip_stat_init(struct zip_stat *);
ZIP_EXTERN(const char *)zip_strerror(struct zip *);
-ZIP_EXTERN(int) zip_unchange(struct zip *, int);
+ZIP_EXTERN(int) zip_unchange(struct zip *, zip_uint64_t);
ZIP_EXTERN(int) zip_unchange_all(struct zip *);
ZIP_EXTERN(int) zip_unchange_archive(struct zip *);
diff --git a/ext/zip/lib/zip_add.c b/ext/zip/lib/zip_add.c
index 85d599791..6067abbac 100644
--- a/ext/zip/lib/zip_add.c
+++ b/ext/zip/lib/zip_add.c
@@ -37,13 +37,20 @@
-ZIP_EXTERN(int)
+/*
+ NOTE: Return type is signed so we can return -1 on error.
+ The index can not be larger than ZIP_INT64_MAX since the size
+ of the central directory cannot be larger than
+ ZIP_UINT64_MAX, and each entry is larger than 2 bytes.
+*/
+
+ZIP_EXTERN(zip_int64_t)
zip_add(struct zip *za, const char *name, struct zip_source *source)
{
if (name == NULL || source == NULL) {
_zip_error_set(&za->error, ZIP_ER_INVAL, 0);
return -1;
}
-
- return _zip_replace(za, -1, name, source);
+
+ return _zip_replace(za, ZIP_UINT64_MAX, name, source);
}
diff --git a/ext/zip/lib/zip_add_dir.c b/ext/zip/lib/zip_add_dir.c
index 9b2342519..0a9d7f486 100644
--- a/ext/zip/lib/zip_add_dir.c
+++ b/ext/zip/lib/zip_add_dir.c
@@ -1,6 +1,6 @@
/*
zip_add_dir.c -- add directory
- Copyright (C) 1999-2007 Dieter Baron and Thomas Klausner
+ Copyright (C) 1999-2009 Dieter Baron and Thomas Klausner
This file is part of libzip, a library to manipulate ZIP archives.
The authors can be contacted at <libzip@nih.at>
@@ -40,13 +40,21 @@
-ZIP_EXTERN(int)
+/* NOTE: Signed due to -1 on error. See zip_add.c for more details. */
+
+ZIP_EXTERN(zip_int64_t)
zip_add_dir(struct zip *za, const char *name)
{
- int len, ret;
+ int len;
+ zip_int64_t ret;
char *s;
struct zip_source *source;
+ if (ZIP_IS_RDONLY(za)) {
+ _zip_error_set(&za->error, ZIP_ER_RDONLY, 0);
+ return -1;
+ }
+
if (name == NULL) {
_zip_error_set(&za->error, ZIP_ER_INVAL, 0);
return -1;
diff --git a/ext/zip/lib/zip_close.c b/ext/zip/lib/zip_close.c
index 0796f2746..362f92d74 100644
--- a/ext/zip/lib/zip_close.c
+++ b/ext/zip/lib/zip_close.c
@@ -1,6 +1,6 @@
/*
zip_close.c -- close zip archive and update changes
- Copyright (C) 1999-2009 Dieter Baron and Thomas Klausner
+ Copyright (C) 1999-2011 Dieter Baron and Thomas Klausner
This file is part of libzip, a library to manipulate ZIP archives.
The authors can be contacted at <libzip@nih.at>
@@ -33,26 +33,28 @@
+#include "zipint.h"
+
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
#include <sys/types.h>
#include <sys/stat.h>
-
-#include "zipint.h"
+#ifdef PHP_WIN32
+#include <io.h>
+#include <fcntl.h>
+#endif
static int add_data(struct zip *, struct zip_source *, struct zip_dirent *,
FILE *);
-static int add_data_comp(zip_source_callback, void *, struct zip_stat *,
- FILE *, struct zip_error *);
-static int add_data_uncomp(struct zip *, zip_source_callback, void *,
- struct zip_stat *, FILE *);
-static void ch_set_error(struct zip_error *, zip_source_callback, void *);
static int copy_data(FILE *, off_t, FILE *, struct zip_error *);
+static int copy_source(struct zip *, struct zip_source *, FILE *);
static int write_cdir(struct zip *, struct zip_cdir *, FILE *);
static int _zip_cdir_set_comment(struct zip_cdir *, struct zip *);
-static int _zip_changed(struct zip *, int *);
static char *_zip_create_temp_output(struct zip *, FILE **);
static int _zip_torrentzip_cmp(const void *, const void *);
@@ -72,7 +74,9 @@ zip_close(struct zip *za)
int i, j, error;
char *temp;
FILE *out;
+#ifndef PHP_WIN32
mode_t mask;
+#endif
struct zip_cdir *cd;
struct zip_dirent de;
struct filelist *filelist;
@@ -99,7 +103,7 @@ zip_close(struct zip *za)
}
_zip_free(za);
return 0;
- }
+ }
if ((filelist=(struct filelist *)malloc(sizeof(filelist[0])*survivors))
== NULL)
@@ -126,11 +130,11 @@ zip_close(struct zip *za)
cd->comment_len = TORRENT_SIG_LEN + TORRENT_CRC_LEN;
}
else if (zip_get_archive_flag(za, ZIP_AFL_TORRENT, ZIP_FL_UNCHANGED) == 0) {
- if (_zip_cdir_set_comment(cd, za) == -1) {
- _zip_cdir_free(cd);
+ if (_zip_cdir_set_comment(cd, za) == -1) {
+ _zip_cdir_free(cd);
free(filelist);
- return -1;
- }
+ return -1;
+ }
}
if ((temp=_zip_create_temp_output(za, &out)) == NULL) {
@@ -198,8 +202,7 @@ zip_close(struct zip *za)
error = 1;
break;
}
- memcpy(cd->entry+j, za->cdir->entry+i, sizeof(cd->entry[j]));
-
+ memcpy(cd->entry+j, za->cdir->entry+i, sizeof(cd->entry[j]));
if (de.bitflags & ZIP_GPBF_DATA_DESCRIPTOR) {
de.crc = za->cdir->entry[i].crc;
de.comp_size = za->cdir->entry[i].comp_size;
@@ -220,6 +223,22 @@ zip_close(struct zip *za)
cd->entry[j].filename_len = de.filename_len;
}
+ if (za->entry[i].ch_extra_len != -1) {
+ free(de.extrafield);
+ if ((de.extrafield=malloc(za->entry[i].ch_extra_len)) == NULL) {
+ error = 1;
+ break;
+ }
+ memcpy(de.extrafield, za->entry[i].ch_extra, za->entry[i].ch_extra_len);
+ de.extrafield_len = za->entry[i].ch_extra_len;
+ /* as the rest of cd entries, its malloc/free is done by za */
+ /* TODO unsure if this should also be set in the CD --
+ * not done for now
+ cd->entry[j].extrafield = za->entry[i].ch_extra;
+ cd->entry[j].extrafield_len = za->entry[i].ch_extra_len;
+ */
+ }
+
if (zip_get_archive_flag(za, ZIP_AFL_TORRENT, 0) == 0
&& za->entry[i].ch_comment_len != -1) {
/* as the rest of cd entries, its malloc/free is done by za */
@@ -234,16 +253,22 @@ zip_close(struct zip *za)
zs = NULL;
if (!ZIP_ENTRY_DATA_CHANGED(za->entry+i)) {
- if ((zs=zip_source_zip(za, za, i, ZIP_FL_RECOMPRESS, 0, -1)) == NULL) {
- error = 1;
- break;
- }
+ if ((zs=zip_source_zip(za, za, i, ZIP_FL_RECOMPRESS, 0, -1))
+ == NULL) {
+ error = 1;
+ break;
+ }
}
if (add_data(za, zs ? zs : za->entry[i].source, &de, out) < 0) {
error = 1;
+ if (zs)
+ zip_source_free(zs);
break;
}
+ if (zs)
+ zip_source_free(zs);
+
cd->entry[j].last_mod = de.last_mod;
cd->entry[j].comp_method = de.comp_method;
cd->entry[j].comp_size = de.comp_size;
@@ -291,27 +316,27 @@ zip_close(struct zip *za)
free(temp);
return -1;
}
-
- if (za->zp) {
- fclose(za->zp);
- za->zp = NULL;
- reopen_on_error = 1;
+
+ if (za->zp) {
+ fclose(za->zp);
+ za->zp = NULL;
+ reopen_on_error = 1;
}
if (_zip_rename(temp, za->zn) != 0) {
- _zip_error_set(&za->error, ZIP_ER_RENAME, errno);
- remove(temp);
- free(temp);
- if (reopen_on_error) {
- /* ignore errors, since we're already in an error case */
- za->zp = fopen(za->zn, "rb");
- }
- return -1;
+ _zip_error_set(&za->error, ZIP_ER_RENAME, errno);
+ remove(temp);
+ free(temp);
+ if (reopen_on_error) {
+ /* ignore errors, since we're already in an error case */
+ za->zp = fopen(za->zn, "rb");
}
+ return -1;
+ }
+#ifndef PHP_WIN32
mask = umask(0);
umask(mask);
chmod(za->zn, 0666&~mask);
- if (za->ch_comment)
- free(za->ch_comment);
+#endif
_zip_free(za);
free(temp);
@@ -322,23 +347,17 @@ zip_close(struct zip *za)
static int
-add_data(struct zip *za, struct zip_source *zs, struct zip_dirent *de, FILE *ft)
+add_data(struct zip *za, struct zip_source *src, struct zip_dirent *de,
+ FILE *ft)
{
- off_t offstart, offend;
- zip_source_callback cb;
- void *ud;
+ off_t offstart, offdata, offend;
struct zip_stat st;
-
- cb = zs->f;
- ud = zs->ud;
-
- if (cb(ud, &st, sizeof(st), ZIP_SOURCE_STAT) < (ssize_t)sizeof(st)) {
- ch_set_error(&za->error, cb, ud);
- return -1;
- }
-
- if (cb(ud, NULL, 0, ZIP_SOURCE_OPEN) < 0) {
- ch_set_error(&za->error, cb, ud);
+ struct zip_source *s2;
+ zip_compression_implementation comp_impl;
+ int ret;
+
+ if (zip_source_stat(src, &st) < 0) {
+ _zip_error_set_from_source(&za->error, src);
return -1;
}
@@ -347,19 +366,49 @@ add_data(struct zip *za, struct zip_source *zs, struct zip_dirent *de, FILE *ft)
if (_zip_dirent_write(de, ft, 1, &za->error) < 0)
return -1;
- if (st.comp_method != ZIP_CM_STORE) {
- if (add_data_comp(cb, ud, &st, ft, &za->error) < 0)
- return -1;
+ if ((s2=zip_source_crc(za, src, 0)) == NULL) {
+ zip_source_pop(s2);
+ return -1;
}
- else {
- if (add_data_uncomp(za, cb, ud, &st, ft) < 0)
+
+ /* XXX: deflate 0-byte files for torrentzip? */
+ if (((st.valid & ZIP_STAT_COMP_METHOD) == 0
+ || st.comp_method == ZIP_CM_STORE)
+ && ((st.valid & ZIP_STAT_SIZE) == 0 || st.size != 0)) {
+ comp_impl = NULL;
+ if ((comp_impl=zip_get_compression_implementation(ZIP_CM_DEFLATE))
+ == NULL) {
+ _zip_error_set(&za->error, ZIP_ER_COMPNOTSUPP, 0);
+ zip_source_pop(s2);
+ return -1;
+ }
+ if ((s2=comp_impl(za, s2, ZIP_CM_DEFLATE, ZIP_CODEC_ENCODE))
+ == NULL) {
+ /* XXX: set error? */
+ zip_source_pop(s2);
return -1;
+ }
+ }
+ else
+ s2 = src;
+
+ offdata = ftello(ft);
+
+ ret = copy_source(za, s2, ft);
+
+ if (zip_source_stat(s2, &st) < 0)
+ ret = -1;
+
+ while (s2 != src) {
+ if ((s2=zip_source_pop(s2)) == NULL) {
+ /* XXX: set erorr */
+ ret = -1;
+ break;
+ }
}
- if (cb(ud, NULL, 0, ZIP_SOURCE_CLOSE) < 0) {
- ch_set_error(&za->error, cb, ud);
+ if (ret < 0)
return -1;
- }
offend = ftello(ft);
@@ -368,19 +417,18 @@ add_data(struct zip *za, struct zip_source *zs, struct zip_dirent *de, FILE *ft)
return -1;
}
-
de->last_mod = st.mtime;
de->comp_method = st.comp_method;
de->crc = st.crc;
de->uncomp_size = st.size;
- de->comp_size = st.comp_size;
+ de->comp_size = offend - offdata;
if (zip_get_archive_flag(za, ZIP_AFL_TORRENT, 0))
_zip_dirent_torrent_normalize(de);
if (_zip_dirent_write(de, ft, 1, &za->error) < 0)
return -1;
-
+
if (fseeko(ft, offend, SEEK_SET) < 0) {
_zip_error_set(&za->error, ZIP_ER_SEEK, errno);
return -1;
@@ -392,133 +440,6 @@ add_data(struct zip *za, struct zip_source *zs, struct zip_dirent *de, FILE *ft)
static int
-add_data_comp(zip_source_callback cb, void *ud, struct zip_stat *st,FILE *ft,
- struct zip_error *error)
-{
- char buf[BUFSIZE];
- ssize_t n;
-
- st->comp_size = 0;
- while ((n=cb(ud, buf, sizeof(buf), ZIP_SOURCE_READ)) > 0) {
- if (fwrite(buf, 1, n, ft) != (size_t)n) {
- _zip_error_set(error, ZIP_ER_WRITE, errno);
- return -1;
- }
-
- st->comp_size += n;
- }
- if (n < 0) {
- ch_set_error(error, cb, ud);
- return -1;
- }
-
- return 0;
-}
-
-
-
-static int
-add_data_uncomp(struct zip *za, zip_source_callback cb, void *ud,
- struct zip_stat *st, FILE *ft)
-{
- char b1[BUFSIZE], b2[BUFSIZE];
- int end, flush, ret;
- ssize_t n;
- size_t n2;
- z_stream zstr;
- int mem_level;
-
- st->comp_method = ZIP_CM_DEFLATE;
- st->comp_size = st->size = 0;
- st->crc = crc32(0, NULL, 0);
-
- zstr.zalloc = Z_NULL;
- zstr.zfree = Z_NULL;
- zstr.opaque = NULL;
- zstr.avail_in = 0;
- zstr.avail_out = 0;
-
- if (zip_get_archive_flag(za, ZIP_AFL_TORRENT, 0))
- mem_level = TORRENT_MEM_LEVEL;
- else
- mem_level = MAX_MEM_LEVEL;
-
- /* -MAX_WBITS: undocumented feature of zlib to _not_ write a zlib header */
- deflateInit2(&zstr, Z_BEST_COMPRESSION, Z_DEFLATED, -MAX_WBITS, mem_level,
- Z_DEFAULT_STRATEGY);
-
- zstr.next_out = (Bytef *)b2;
- zstr.avail_out = sizeof(b2);
- zstr.next_in = NULL;
- zstr.avail_in = 0;
-
- flush = 0;
- end = 0;
- while (!end) {
- if (zstr.avail_in == 0 && !flush) {
- if ((n=cb(ud, b1, sizeof(b1), ZIP_SOURCE_READ)) < 0) {
- ch_set_error(&za->error, cb, ud);
- deflateEnd(&zstr);
- return -1;
- }
- if (n > 0) {
- zstr.avail_in = n;
- zstr.next_in = (Bytef *)b1;
- st->size += n;
- st->crc = crc32(st->crc, (Bytef *)b1, n);
- }
- else
- flush = Z_FINISH;
- }
-
- ret = deflate(&zstr, flush);
- if (ret != Z_OK && ret != Z_STREAM_END) {
- _zip_error_set(&za->error, ZIP_ER_ZLIB, ret);
- return -1;
- }
-
- if (zstr.avail_out != sizeof(b2)) {
- n2 = sizeof(b2) - zstr.avail_out;
-
- if (fwrite(b2, 1, n2, ft) != n2) {
- _zip_error_set(&za->error, ZIP_ER_WRITE, errno);
- return -1;
- }
-
- zstr.next_out = (Bytef *)b2;
- zstr.avail_out = sizeof(b2);
- st->comp_size += n2;
- }
-
- if (ret == Z_STREAM_END) {
- deflateEnd(&zstr);
- end = 1;
- }
- }
-
- return 0;
-}
-
-
-
-static void
-ch_set_error(struct zip_error *error, zip_source_callback cb, void *ud)
-{
- int e[2];
-
- if ((cb(ud, e, sizeof(e), ZIP_SOURCE_ERROR)) < (ssize_t)sizeof(e)) {
- error->zip_err = ZIP_ER_INTERNAL;
- error->sys_err = 0;
- }
- else {
- error->zip_err = e[0];
- error->sys_err = e[1];
- }
-}
-
-
-
-static int
copy_data(FILE *fs, off_t len, FILE *ft, struct zip_error *error)
{
char buf[BUFSIZE];
@@ -552,6 +473,40 @@ copy_data(FILE *fs, off_t len, FILE *ft, struct zip_error *error)
static int
+copy_source(struct zip *za, struct zip_source *src, FILE *ft)
+{
+ char buf[BUFSIZE];
+ zip_int64_t n;
+ int ret;
+
+ if (zip_source_open(src) < 0) {
+ _zip_error_set_from_source(&za->error, src);
+ return -1;
+ }
+
+ ret = 0;
+ while ((n=zip_source_read(src, buf, sizeof(buf))) > 0) {
+ if (fwrite(buf, 1, n, ft) != (size_t)n) {
+ _zip_error_set(&za->error, ZIP_ER_WRITE, errno);
+ ret = -1;
+ break;
+ }
+ }
+
+ if (n < 0) {
+ if (ret == 0)
+ _zip_error_set_from_source(&za->error, src);
+ ret = -1;
+ }
+
+ zip_source_close(src);
+
+ return ret;
+}
+
+
+
+static int
write_cdir(struct zip *za, struct zip_cdir *cd, FILE *out)
{
off_t offset;
@@ -613,7 +568,7 @@ _zip_cdir_set_comment(struct zip_cdir *dest, struct zip *src)
-static int
+int
_zip_changed(struct zip *za, int *survivorsp)
{
int changed, i, survivors;
@@ -626,13 +581,15 @@ _zip_changed(struct zip *za, int *survivorsp)
for (i=0; i<za->nentry; i++) {
if ((za->entry[i].state != ZIP_ST_UNCHANGED)
+ || (za->entry[i].ch_extra_len != -1)
|| (za->entry[i].ch_comment_len != -1))
changed = 1;
if (za->entry[i].state != ZIP_ST_DELETED)
survivors++;
}
- *survivorsp = survivors;
+ if (survivorsp)
+ *survivorsp = survivors;
return changed;
}
@@ -668,6 +625,10 @@ _zip_create_temp_output(struct zip *za, FILE **outp)
return NULL;
}
#ifdef PHP_WIN32
+ /*
+ According to Pierre Joye, Windows in some environments per
+ default creates text files, so force binary mode.
+ */
_setmode(_fileno(tfp), _O_BINARY );
#endif
diff --git a/ext/zip/lib/zip_delete.c b/ext/zip/lib/zip_delete.c
index 4591ff7f8..131d44412 100644
--- a/ext/zip/lib/zip_delete.c
+++ b/ext/zip/lib/zip_delete.c
@@ -1,6 +1,6 @@
/*
zip_delete.c -- delete file from zip archive
- Copyright (C) 1999-2007 Dieter Baron and Thomas Klausner
+ Copyright (C) 1999-2009 Dieter Baron and Thomas Klausner
This file is part of libzip, a library to manipulate ZIP archives.
The authors can be contacted at <libzip@nih.at>
@@ -38,13 +38,18 @@
ZIP_EXTERN(int)
-zip_delete(struct zip *za, int idx)
+zip_delete(struct zip *za, zip_uint64_t idx)
{
- if (idx < 0 || idx >= za->nentry) {
+ if (idx >= za->nentry) {
_zip_error_set(&za->error, ZIP_ER_INVAL, 0);
return -1;
}
+ if (ZIP_IS_RDONLY(za)) {
+ _zip_error_set(&za->error, ZIP_ER_RDONLY, 0);
+ return -1;
+ }
+
/* allow duplicate file names, because the file will
* be removed directly afterwards */
if (_zip_unchange(za, idx, 1) != 0)
diff --git a/ext/zip/lib/zip_dirent.c b/ext/zip/lib/zip_dirent.c
index 59f8ab0af..b5b9d273b 100644
--- a/ext/zip/lib/zip_dirent.c
+++ b/ext/zip/lib/zip_dirent.c
@@ -45,7 +45,6 @@
static time_t _zip_d2u_time(int, int);
static char *_zip_readfpstr(FILE *, unsigned int, int, struct zip_error *);
static char *_zip_readstr(unsigned char **, int, int, struct zip_error *);
-static void _zip_u2d_time(time_t, unsigned short *, unsigned short *);
static void _zip_write2(unsigned short, FILE *);
static void _zip_write4(unsigned int, FILE *);
@@ -213,13 +212,13 @@ _zip_dirent_init(struct zip_dirent *de)
int
_zip_dirent_read(struct zip_dirent *zde, FILE *fp,
- unsigned char **bufp, unsigned int *leftp, int local,
+ unsigned char **bufp, zip_uint32_t *leftp, int local,
struct zip_error *error)
{
unsigned char buf[CDENTRYSIZE];
unsigned char *cur;
unsigned short dostime, dosdate;
- unsigned int size;
+ zip_uint32_t size;
if (local)
size = LENTRYSIZE;
@@ -473,8 +472,10 @@ _zip_dirent_write(struct zip_dirent *zde, FILE *fp, int localp,
static time_t
_zip_d2u_time(int dtime, int ddate)
{
- struct tm tm = {0};
+ struct tm tm;
+ memset(&tm, 0, sizeof(tm));
+
/* let mktime decide if DST is in effect */
tm.tm_isdst = -1;
@@ -598,7 +599,7 @@ _zip_write4(unsigned int i, FILE *fp)
-static void
+void
_zip_u2d_time(time_t time, unsigned short *dtime, unsigned short *ddate)
{
struct tm *tm;
diff --git a/ext/zip/lib/zip_entry_free.c b/ext/zip/lib/zip_entry_free.c
index c50c9434b..e8a77707f 100644
--- a/ext/zip/lib/zip_entry_free.c
+++ b/ext/zip/lib/zip_entry_free.c
@@ -44,6 +44,9 @@ _zip_entry_free(struct zip_entry *ze)
{
free(ze->ch_filename);
ze->ch_filename = NULL;
+ free(ze->ch_extra);
+ ze->ch_extra = NULL;
+ ze->ch_extra_len = -1;
free(ze->ch_comment);
ze->ch_comment = NULL;
ze->ch_comment_len = -1;
diff --git a/ext/zip/lib/zip_entry_new.c b/ext/zip/lib/zip_entry_new.c
index 7059b1b06..ad5d59975 100644
--- a/ext/zip/lib/zip_entry_new.c
+++ b/ext/zip/lib/zip_entry_new.c
@@ -1,6 +1,6 @@
/*
zip_entry_new.c -- create and init struct zip_entry
- Copyright (C) 1999-2007 Dieter Baron and Thomas Klausner
+ Copyright (C) 1999-2009 Dieter Baron and Thomas Klausner
This file is part of libzip, a library to manipulate ZIP archives.
The authors can be contacted at <libzip@nih.at>
@@ -46,20 +46,21 @@ _zip_entry_new(struct zip *za)
if (!za) {
ze = (struct zip_entry *)malloc(sizeof(struct zip_entry));
if (!ze) {
- _zip_error_set(&za->error, ZIP_ER_MEMORY, 0);
return NULL;
}
}
else {
- if (za->nentry >= za->nentry_alloc-1) {
+ if (za->nentry+1 >= za->nentry_alloc) {
+ struct zip_entry *rentries;
za->nentry_alloc += 16;
- za->entry = (struct zip_entry *)realloc(za->entry,
- sizeof(struct zip_entry)
- * za->nentry_alloc);
- if (!za->entry) {
+ rentries = (struct zip_entry *)realloc(za->entry,
+ sizeof(struct zip_entry)
+ * za->nentry_alloc);
+ if (!rentries) {
_zip_error_set(&za->error, ZIP_ER_MEMORY, 0);
return NULL;
}
+ za->entry = rentries;
}
ze = za->entry+za->nentry;
}
@@ -67,6 +68,8 @@ _zip_entry_new(struct zip *za)
ze->state = ZIP_ST_UNCHANGED;
ze->ch_filename = NULL;
+ ze->ch_extra = NULL;
+ ze->ch_extra_len = -1;
ze->ch_comment = NULL;
ze->ch_comment_len = -1;
ze->source = NULL;
diff --git a/ext/zip/lib/zip_err_str.c b/ext/zip/lib/zip_err_str.c
index 3fcdf1738..8fb60036e 100644
--- a/ext/zip/lib/zip_err_str.c
+++ b/ext/zip/lib/zip_err_str.c
@@ -32,6 +32,10 @@ const char * const _zip_err_str[] = {
"Zip archive inconsistent",
"Can't remove file",
"Entry has been deleted",
+ "Encryption method not supported",
+ "Read-only archive",
+ "No password provided",
+ "Wrong password provided",
};
const int _zip_nerr_str = sizeof(_zip_err_str)/sizeof(_zip_err_str[0]);
@@ -65,4 +69,8 @@ const int _zip_err_type[] = {
N,
S,
N,
+ N,
+ N,
+ N,
+ N,
};
diff --git a/ext/zip/lib/zip_error.c b/ext/zip/lib/zip_error.c
index aab707945..b8d907abf 100644
--- a/ext/zip/lib/zip_error.c
+++ b/ext/zip/lib/zip_error.c
@@ -1,6 +1,6 @@
/*
zip_error.c -- struct zip_error helper functions
- Copyright (C) 1999-2007 Dieter Baron and Thomas Klausner
+ Copyright (C) 1999-2009 Dieter Baron and Thomas Klausner
This file is part of libzip, a library to manipulate ZIP archives.
The authors can be contacted at <libzip@nih.at>
@@ -99,3 +99,14 @@ _zip_error_set(struct zip_error *err, int ze, int se)
err->sys_err = se;
}
}
+
+
+
+void
+_zip_error_set_from_source(struct zip_error *err, struct zip_source *src)
+{
+ int ze, se;
+
+ zip_source_error(src, &ze, &se);
+ _zip_error_set(err, ze, se);
+}
diff --git a/ext/zip/lib/zip_error_to_str.c b/ext/zip/lib/zip_error_to_str.c
index 4dea4d667..bafe74335 100644
--- a/ext/zip/lib/zip_error_to_str.c
+++ b/ext/zip/lib/zip_error_to_str.c
@@ -1,6 +1,6 @@
/*
zip_error_to_str.c -- get string representation of zip error code
- Copyright (C) 1999-2007 Dieter Baron and Thomas Klausner
+ Copyright (C) 1999-2009 Dieter Baron and Thomas Klausner
This file is part of libzip, a library to manipulate ZIP archives.
The authors can be contacted at <libzip@nih.at>
@@ -43,7 +43,7 @@
ZIP_EXTERN(int)
-zip_error_to_str(char *buf, size_t len, int ze, int se)
+zip_error_to_str(char *buf, zip_uint64_t len, int ze, int se)
{
const char *zs, *ss;
diff --git a/ext/zip/lib/zip_fclose.c b/ext/zip/lib/zip_fclose.c
index 8f062d9d0..eb55ddbce 100644
--- a/ext/zip/lib/zip_fclose.c
+++ b/ext/zip/lib/zip_fclose.c
@@ -44,28 +44,20 @@ zip_fclose(struct zip_file *zf)
{
int i, ret;
- if (zf->zstr)
- inflateEnd(zf->zstr);
- free(zf->buffer);
- free(zf->zstr);
- if (zf->za) {
- for (i=0; i<zf->za->nfile; i++) {
- if (zf->za->file[i] == zf) {
- zf->za->file[i] = zf->za->file[zf->za->nfile-1];
- zf->za->nfile--;
- break;
- }
- }
+ if (zf->src)
+ zip_source_free(zf->src);
+
+ for (i=0; i<zf->za->nfile; i++) {
+ if (zf->za->file[i] == zf) {
+ zf->za->file[i] = zf->za->file[zf->za->nfile-1];
+ zf->za->nfile--;
+ break;
}
+ }
ret = 0;
if (zf->error.zip_err)
ret = zf->error.zip_err;
- else if ((zf->flags & ZIP_ZF_CRC) && (zf->flags & ZIP_ZF_EOF)) {
- /* if EOF, compare CRC */
- if (zf->crc_orig != zf->crc)
- ret = ZIP_ER_CRC;
- }
free(zf);
return ret;
diff --git a/ext/zip/lib/zip_fdopen.c b/ext/zip/lib/zip_fdopen.c
new file mode 100644
index 000000000..df70f2756
--- /dev/null
+++ b/ext/zip/lib/zip_fdopen.c
@@ -0,0 +1,62 @@
+/*
+ zip_fdopen.c -- open read-only archive from file descriptor
+ Copyright (C) 2009-2010 Dieter Baron and Thomas Klausner
+
+ This file is part of libzip, a library to manipulate ZIP archives.
+ The authors can be contacted at <libzip@nih.at>
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+ 3. The names of the authors may not be used to endorse or promote
+ products derived from this software without specific prior
+ written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS
+ OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
+ IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+ IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+
+
+#include "zipint.h"
+
+
+
+ZIP_EXTERN(struct zip *)
+zip_fdopen(int fd_orig, int flags, int *zep)
+{
+ int fd;
+ FILE *fp;
+
+ /* We dup() here to avoid messing with the passed in fd.
+ We could not restore it to the original state in case of error. */
+
+ if ((fd=dup(fd_orig)) < 0) {
+ *zep = ZIP_ER_OPEN;
+ return NULL;
+ }
+
+ if ((fp=fdopen(fd, "rb")) == NULL) {
+ close(fd);
+ *zep = ZIP_ER_OPEN;
+ return NULL;
+ }
+
+ close(fd_orig);
+ return _zip_open(NULL, fp, flags, ZIP_AFL_RDONLY, zep);
+}
diff --git a/ext/zip/lib/zip_filerange_crc.c b/ext/zip/lib/zip_filerange_crc.c
index c6890987b..4d1ad5669 100644
--- a/ext/zip/lib/zip_filerange_crc.c
+++ b/ext/zip/lib/zip_filerange_crc.c
@@ -1,6 +1,6 @@
/*
zip_filerange_crc.c -- compute CRC32 for a range of a file
- Copyright (C) 2008-2009 Dieter Baron and Thomas Klausner
+ Copyright (C) 2008 Dieter Baron and Thomas Klausner
This file is part of libzip, a library to manipulate ZIP archives.
The authors can be contacted at <libzip@nih.at>
diff --git a/ext/zip/lib/zip_fopen.c b/ext/zip/lib/zip_fopen.c
index b4b76049f..f62adbbf9 100644
--- a/ext/zip/lib/zip_fopen.c
+++ b/ext/zip/lib/zip_fopen.c
@@ -1,6 +1,6 @@
/*
zip_fopen.c -- open file in zip archive for reading
- Copyright (C) 1999-2007 Dieter Baron and Thomas Klausner
+ Copyright (C) 1999-2009 Dieter Baron and Thomas Klausner
This file is part of libzip, a library to manipulate ZIP archives.
The authors can be contacted at <libzip@nih.at>
@@ -45,5 +45,5 @@ zip_fopen(struct zip *za, const char *fname, int flags)
if ((idx=zip_name_locate(za, fname, flags)) < 0)
return NULL;
- return zip_fopen_index(za, idx, flags);
+ return zip_fopen_index_encrypted(za, idx, flags, za->default_password);
}
diff --git a/ext/zip/lib/zip_fopen_encrypted.c b/ext/zip/lib/zip_fopen_encrypted.c
new file mode 100644
index 000000000..8aba06256
--- /dev/null
+++ b/ext/zip/lib/zip_fopen_encrypted.c
@@ -0,0 +1,50 @@
+/*
+ zip_fopen_encrypted.c -- open file for reading with password
+ Copyright (C) 1999-2009 Dieter Baron and Thomas Klausner
+
+ This file is part of libzip, a library to manipulate ZIP archives.
+ The authors can be contacted at <libzip@nih.at>
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+ 3. The names of the authors may not be used to endorse or promote
+ products derived from this software without specific prior
+ written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS
+ OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
+ IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+ IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+
+
+#include "zipint.h"
+
+
+
+ZIP_EXTERN(struct zip_file *)
+zip_fopen_encrypted(struct zip *za, const char *fname, int flags,
+ const char *password)
+{
+ int idx;
+
+ if ((idx=zip_name_locate(za, fname, flags)) < 0)
+ return NULL;
+
+ return zip_fopen_index_encrypted(za, idx, flags, password);
+}
diff --git a/ext/zip/lib/zip_fopen_index.c b/ext/zip/lib/zip_fopen_index.c
index 1e7e41989..b60fd33e8 100644
--- a/ext/zip/lib/zip_fopen_index.c
+++ b/ext/zip/lib/zip_fopen_index.c
@@ -1,6 +1,6 @@
/*
zip_fopen_index.c -- open file in zip archive for reading by index
- Copyright (C) 1999-2007 Dieter Baron and Thomas Klausner
+ Copyright (C) 1999-2009 Dieter Baron and Thomas Klausner
This file is part of libzip, a library to manipulate ZIP archives.
The authors can be contacted at <libzip@nih.at>
@@ -39,178 +39,10 @@
#include "zipint.h"
-static struct zip_file *_zip_file_new(struct zip *za);
-
ZIP_EXTERN(struct zip_file *)
-zip_fopen_index(struct zip *za, int fileno, int flags)
+zip_fopen_index(struct zip *za, zip_uint64_t fileno, int flags)
{
- int len, ret;
- int zfflags;
- struct zip_file *zf;
-
- if ((fileno < 0) || (fileno >= za->nentry)) {
- _zip_error_set(&za->error, ZIP_ER_INVAL, 0);
- return NULL;
- }
-
- if ((flags & ZIP_FL_UNCHANGED) == 0
- && ZIP_ENTRY_DATA_CHANGED(za->entry+fileno)) {
- _zip_error_set(&za->error, ZIP_ER_CHANGED, 0);
- return NULL;
- }
-
- if (fileno >= za->cdir->nentry) {
- _zip_error_set(&za->error, ZIP_ER_INVAL, 0);
- return NULL;
- }
-
- zfflags = 0;
- switch (za->cdir->entry[fileno].comp_method) {
- case ZIP_CM_STORE:
- zfflags |= ZIP_ZF_CRC;
- break;
-
- case ZIP_CM_DEFLATE:
- if ((flags & ZIP_FL_COMPRESSED) == 0)
- zfflags |= ZIP_ZF_CRC | ZIP_ZF_DECOMP;
- break;
- default:
- if ((flags & ZIP_FL_COMPRESSED) == 0) {
- _zip_error_set(&za->error, ZIP_ER_COMPNOTSUPP, 0);
- return NULL;
- }
- break;
- }
-
- zf = _zip_file_new(za);
-
- zf->flags = zfflags;
- /* zf->name = za->cdir->entry[fileno].filename; */
- zf->method = za->cdir->entry[fileno].comp_method;
- zf->bytes_left = za->cdir->entry[fileno].uncomp_size;
- zf->cbytes_left = za->cdir->entry[fileno].comp_size;
- zf->crc_orig = za->cdir->entry[fileno].crc;
-
- if ((zf->fpos=_zip_file_get_offset(za, fileno)) == 0) {
- zip_fclose(zf);
- return NULL;
- }
-
- if ((zf->flags & ZIP_ZF_DECOMP) == 0)
- zf->bytes_left = zf->cbytes_left;
- else {
- if ((zf->buffer=(char *)malloc(BUFSIZE)) == NULL) {
- _zip_error_set(&za->error, ZIP_ER_MEMORY, 0);
- zip_fclose(zf);
- return NULL;
- }
-
- len = _zip_file_fillbuf(zf->buffer, BUFSIZE, zf);
- if (len <= 0) {
- _zip_error_copy(&za->error, &zf->error);
- zip_fclose(zf);
- return NULL;
- }
-
- if ((zf->zstr = (z_stream *)malloc(sizeof(z_stream))) == NULL) {
- _zip_error_set(&za->error, ZIP_ER_MEMORY, 0);
- zip_fclose(zf);
- return NULL;
- }
- zf->zstr->zalloc = Z_NULL;
- zf->zstr->zfree = Z_NULL;
- zf->zstr->opaque = NULL;
- zf->zstr->next_in = (Bytef *)zf->buffer;
- zf->zstr->avail_in = len;
-
- /* negative value to tell zlib that there is no header */
- if ((ret=inflateInit2(zf->zstr, -MAX_WBITS)) != Z_OK) {
- _zip_error_set(&za->error, ZIP_ER_ZLIB, ret);
- zip_fclose(zf);
- return NULL;
- }
- }
-
- return zf;
-}
-
-
-
-int
-_zip_file_fillbuf(void *buf, size_t buflen, struct zip_file *zf)
-{
- int i, j;
-
- if (zf->error.zip_err != ZIP_ER_OK)
- return -1;
-
- if ((zf->flags & ZIP_ZF_EOF) || zf->cbytes_left <= 0 || buflen <= 0)
- return 0;
-
- if (fseeko(zf->za->zp, zf->fpos, SEEK_SET) < 0) {
- _zip_error_set(&zf->error, ZIP_ER_SEEK, errno);
- return -1;
- }
- if (buflen < zf->cbytes_left)
- i = buflen;
- else
- i = zf->cbytes_left;
-
- j = fread(buf, 1, i, zf->za->zp);
- if (j == 0) {
- _zip_error_set(&zf->error, ZIP_ER_EOF, 0);
- j = -1;
- }
- else if (j < 0)
- _zip_error_set(&zf->error, ZIP_ER_READ, errno);
- else {
- zf->fpos += j;
- zf->cbytes_left -= j;
- }
-
- return j;
-}
-
-
-
-static struct zip_file *
-_zip_file_new(struct zip *za)
-{
- struct zip_file *zf, **file;
- int n;
-
- if ((zf=(struct zip_file *)malloc(sizeof(struct zip_file))) == NULL) {
- _zip_error_set(&za->error, ZIP_ER_MEMORY, 0);
- return NULL;
- }
-
- if (za->nfile >= za->nfile_alloc-1) {
- n = za->nfile_alloc + 10;
- file = (struct zip_file **)realloc(za->file,
- n*sizeof(struct zip_file *));
- if (file == NULL) {
- _zip_error_set(&za->error, ZIP_ER_MEMORY, 0);
- free(zf);
- return NULL;
- }
- za->nfile_alloc = n;
- za->file = file;
- }
-
- za->file[za->nfile++] = zf;
-
- zf->za = za;
- _zip_error_init(&zf->error);
- zf->flags = 0;
- zf->crc = crc32(0L, Z_NULL, 0);
- zf->crc_orig = 0;
- zf->method = -1;
- zf->bytes_left = zf->cbytes_left = 0;
- zf->fpos = 0;
- zf->buffer = NULL;
- zf->zstr = NULL;
-
- return zf;
+ return zip_fopen_index_encrypted(za, fileno, flags, za->default_password);
}
diff --git a/ext/zip/lib/zip_fopen_index_encrypted.c b/ext/zip/lib/zip_fopen_index_encrypted.c
new file mode 100644
index 000000000..988a78fe0
--- /dev/null
+++ b/ext/zip/lib/zip_fopen_index_encrypted.c
@@ -0,0 +1,191 @@
+/*
+ zip_fopen_index_encrypted.c -- open file for reading by index w/ password
+ Copyright (C) 1999-2009 Dieter Baron and Thomas Klausner
+
+ This file is part of libzip, a library to manipulate ZIP archives.
+ The authors can be contacted at <libzip@nih.at>
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+ 3. The names of the authors may not be used to endorse or promote
+ products derived from this software without specific prior
+ written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS
+ OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
+ IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+ IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+
+
+#include <errno.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "zipint.h"
+
+static struct zip_file *_zip_file_new(struct zip *za);
+
+
+
+ZIP_EXTERN(struct zip_file *)
+zip_fopen_index_encrypted(struct zip *za, zip_uint64_t fileno, int flags,
+ const char *password)
+{
+ struct zip_file *zf;
+ zip_compression_implementation comp_impl;
+ zip_encryption_implementation enc_impl;
+ struct zip_source *src, *s2;
+ zip_uint64_t start;
+ struct zip_stat st;
+
+ if (fileno >= za->nentry) {
+ _zip_error_set(&za->error, ZIP_ER_INVAL, 0);
+ return NULL;
+ }
+
+ if ((flags & ZIP_FL_UNCHANGED) == 0
+ && ZIP_ENTRY_DATA_CHANGED(za->entry+fileno)) {
+ _zip_error_set(&za->error, ZIP_ER_CHANGED, 0);
+ return NULL;
+ }
+
+ if (fileno >= za->cdir->nentry) {
+ _zip_error_set(&za->error, ZIP_ER_INVAL, 0);
+ return NULL;
+ }
+
+ if (flags & ZIP_FL_ENCRYPTED)
+ flags |= ZIP_FL_COMPRESSED;
+
+ zip_stat_index(za, fileno, flags, &st);
+
+ enc_impl = NULL;
+ if ((flags & ZIP_FL_ENCRYPTED) == 0) {
+ if (st.encryption_method != ZIP_EM_NONE) {
+ if (password == NULL) {
+ _zip_error_set(&za->error, ZIP_ER_NOPASSWD, 0);
+ return NULL;
+ }
+ if ((enc_impl=zip_get_encryption_implementation(
+ st.encryption_method)) == NULL) {
+ _zip_error_set(&za->error, ZIP_ER_ENCRNOTSUPP, 0);
+ return NULL;
+ }
+ }
+ }
+
+ comp_impl = NULL;
+ if ((flags & ZIP_FL_COMPRESSED) == 0) {
+ if (st.comp_method != ZIP_CM_STORE) {
+ if ((comp_impl=zip_get_compression_implementation(
+ st.comp_method)) == NULL) {
+ _zip_error_set(&za->error, ZIP_ER_COMPNOTSUPP, 0);
+ return NULL;
+ }
+ }
+ }
+
+ if ((start=_zip_file_get_offset(za, fileno)) == 0)
+ return NULL;
+
+ if (st.comp_size == 0) {
+ if ((src=zip_source_buffer(za, NULL, 0, 0)) == NULL)
+ return NULL;
+ }
+ else {
+ if ((src=_zip_source_file_or_p(za, NULL, za->zp, start, st.comp_size,
+ 0, &st)) == NULL)
+ return NULL;
+ if (enc_impl) {
+ if ((s2=enc_impl(za, src, ZIP_EM_TRAD_PKWARE, 0,
+ password)) == NULL) {
+ zip_source_free(src);
+ /* XXX: set error (how?) */
+ return NULL;
+ }
+ src = s2;
+ }
+ if (comp_impl) {
+ if ((s2=comp_impl(za, src, za->cdir->entry[fileno].comp_method,
+ 0)) == NULL) {
+ zip_source_free(src);
+ /* XXX: set error (how?) */
+ return NULL;
+ }
+ src = s2;
+ }
+ if ((flags & ZIP_FL_COMPRESSED) == 0
+ || st.comp_method == ZIP_CM_STORE ) {
+ if ((s2=zip_source_crc(za, src, 1)) == NULL) {
+ zip_source_free(src);
+ /* XXX: set error (how?) */
+ return NULL;
+ }
+ src = s2;
+ }
+ }
+
+ if (zip_source_open(src) < 0) {
+ _zip_error_set_from_source(&za->error, src);
+ zip_source_free(src);
+ return NULL;
+ }
+
+ zf = _zip_file_new(za);
+
+ zf->src = src;
+
+ return zf;
+}
+
+
+
+static struct zip_file *
+_zip_file_new(struct zip *za)
+{
+ struct zip_file *zf, **file;
+ int n;
+
+ if ((zf=(struct zip_file *)malloc(sizeof(struct zip_file))) == NULL) {
+ _zip_error_set(&za->error, ZIP_ER_MEMORY, 0);
+ return NULL;
+ }
+
+ if (za->nfile >= za->nfile_alloc-1) {
+ n = za->nfile_alloc + 10;
+ file = (struct zip_file **)realloc(za->file,
+ n*sizeof(struct zip_file *));
+ if (file == NULL) {
+ _zip_error_set(&za->error, ZIP_ER_MEMORY, 0);
+ free(zf);
+ return NULL;
+ }
+ za->nfile_alloc = n;
+ za->file = file;
+ }
+
+ za->file[za->nfile++] = zf;
+
+ zf->za = za;
+ _zip_error_init(&zf->error);
+ zf->eof = 0;
+ zf->src = NULL;
+
+ return zf;
+}
diff --git a/ext/zip/lib/zip_fread.c b/ext/zip/lib/zip_fread.c
index 00a6bdc4e..a6c0851b0 100644
--- a/ext/zip/lib/zip_fread.c
+++ b/ext/zip/lib/zip_fread.c
@@ -1,6 +1,6 @@
/*
zip_fread.c -- read from file
- Copyright (C) 1999-2007 Dieter Baron and Thomas Klausner
+ Copyright (C) 1999-2009 Dieter Baron and Thomas Klausner
This file is part of libzip, a library to manipulate ZIP archives.
The authors can be contacted at <libzip@nih.at>
@@ -37,12 +37,10 @@
-ZIP_EXTERN(ssize_t)
-zip_fread(struct zip_file *zf, void *outbuf, size_t toread)
+ZIP_EXTERN(zip_int64_t)
+zip_fread(struct zip_file *zf, void *outbuf, zip_uint64_t toread)
{
- int ret;
- size_t out_before, len;
- int i;
+ zip_int64_t n;
if (!zf)
return -1;
@@ -50,81 +48,18 @@ zip_fread(struct zip_file *zf, void *outbuf, size_t toread)
if (zf->error.zip_err != 0)
return -1;
- if ((zf->flags & ZIP_ZF_EOF) || (toread == 0))
- return 0;
+ if (toread > ZIP_INT64_MAX) {
+ _zip_error_set(&zf->error, ZIP_ER_INVAL, 0);
+ return -1;
+ }
- if (zf->bytes_left == 0) {
- zf->flags |= ZIP_ZF_EOF;
- if (zf->flags & ZIP_ZF_CRC) {
- if (zf->crc != zf->crc_orig) {
- _zip_error_set(&zf->error, ZIP_ER_CRC, 0);
- return -1;
- }
- }
+ if ((zf->eof) || (toread == 0))
return 0;
- }
- if ((zf->flags & ZIP_ZF_DECOMP) == 0) {
- ret = _zip_file_fillbuf(outbuf, toread, zf);
- if (ret > 0) {
- if (zf->flags & ZIP_ZF_CRC)
- zf->crc = crc32(zf->crc, (Bytef *)outbuf, ret);
- zf->bytes_left -= ret;
- }
- return ret;
+ if ((n=zip_source_read(zf->src, outbuf, toread)) < 0) {
+ _zip_error_set_from_source(&zf->error, zf->src);
+ return -1;
}
-
- zf->zstr->next_out = (Bytef *)outbuf;
- zf->zstr->avail_out = toread;
- out_before = zf->zstr->total_out;
-
- /* endless loop until something has been accomplished */
- for (;;) {
- ret = inflate(zf->zstr, Z_SYNC_FLUSH);
- switch (ret) {
- case Z_STREAM_END:
- if (zf->zstr->total_out == out_before) {
- if (zf->crc != zf->crc_orig) {
- _zip_error_set(&zf->error, ZIP_ER_CRC, 0);
- return -1;
- }
- else
- return 0;
- }
-
- /* fallthrough */
-
- case Z_OK:
- len = zf->zstr->total_out - out_before;
- if (len >= zf->bytes_left || len >= toread) {
- if (zf->flags & ZIP_ZF_CRC)
- zf->crc = crc32(zf->crc, (Bytef *)outbuf, len);
- zf->bytes_left -= len;
- return len;
- }
- break;
-
- case Z_BUF_ERROR:
- if (zf->zstr->avail_in == 0) {
- i = _zip_file_fillbuf(zf->buffer, BUFSIZE, zf);
- if (i == 0) {
- _zip_error_set(&zf->error, ZIP_ER_INCONS, 0);
- return -1;
- }
- else if (i < 0)
- return -1;
- zf->zstr->next_in = (Bytef *)zf->buffer;
- zf->zstr->avail_in = i;
- continue;
- }
- /* fallthrough */
- case Z_NEED_DICT:
- case Z_DATA_ERROR:
- case Z_STREAM_ERROR:
- case Z_MEM_ERROR:
- _zip_error_set(&zf->error, ZIP_ER_ZLIB, ret);
- return -1;
- }
- }
+ return n;
}
diff --git a/ext/zip/lib/zip_free.c b/ext/zip/lib/zip_free.c
index 76c3a9673..9932c14fe 100644
--- a/ext/zip/lib/zip_free.c
+++ b/ext/zip/lib/zip_free.c
@@ -57,7 +57,9 @@ _zip_free(struct zip *za)
if (za->zp)
fclose(za->zp);
+ free(za->default_password);
_zip_cdir_free(za->cdir);
+ free(za->ch_comment);
if (za->entry) {
for (i=0; i<za->nentry; i++) {
diff --git a/ext/zip/lib/zip_get_archive_comment.c b/ext/zip/lib/zip_get_archive_comment.c
index ed1324fd5..fe97e6e8c 100644
--- a/ext/zip/lib/zip_get_archive_comment.c
+++ b/ext/zip/lib/zip_get_archive_comment.c
@@ -42,11 +42,11 @@ zip_get_archive_comment(struct zip *za, int *lenp, int flags)
{
if ((flags & ZIP_FL_UNCHANGED)
|| (za->ch_comment_len == -1)) {
- if (za->cdir) {
- if (lenp != NULL)
- *lenp = za->cdir->comment_len;
- return za->cdir->comment;
- }
+ if (za->cdir) {
+ if (lenp != NULL)
+ *lenp = za->cdir->comment_len;
+ return za->cdir->comment;
+ }
else {
if (lenp != NULL)
*lenp = -1;
diff --git a/ext/zip/lib/zip_get_archive_flag.c b/ext/zip/lib/zip_get_archive_flag.c
index a595c51f5..2d46aa39f 100644
--- a/ext/zip/lib/zip_get_archive_flag.c
+++ b/ext/zip/lib/zip_get_archive_flag.c
@@ -1,6 +1,6 @@
/*
zip_get_archive_flag.c -- get archive global flag
- Copyright (C) 2008-2009 Dieter Baron and Thomas Klausner
+ Copyright (C) 2008 Dieter Baron and Thomas Klausner
This file is part of libzip, a library to manipulate ZIP archives.
The authors can be contacted at <libzip@nih.at>
diff --git a/ext/zip/lib/zip_get_compression_implementation.c b/ext/zip/lib/zip_get_compression_implementation.c
new file mode 100644
index 000000000..197cd4963
--- /dev/null
+++ b/ext/zip/lib/zip_get_compression_implementation.c
@@ -0,0 +1,46 @@
+/*
+ zip_get_compression_implementation.c -- get compression implementation
+ Copyright (C) 2009 Dieter Baron and Thomas Klausner
+
+ This file is part of libzip, a library to manipulate ZIP archives.
+ The authors can be contacted at <libzip@nih.at>
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+ 3. The names of the authors may not be used to endorse or promote
+ products derived from this software without specific prior
+ written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS
+ OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
+ IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+ IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+
+
+#include "zipint.h"
+
+
+
+ZIP_EXTERN(zip_compression_implementation)
+zip_get_compression_implementation(zip_uint16_t cm)
+{
+ if (cm == ZIP_CM_DEFLATE)
+ return zip_source_deflate;
+ return NULL;
+}
diff --git a/ext/zip/lib/zip_get_encryption_implementation.c b/ext/zip/lib/zip_get_encryption_implementation.c
new file mode 100644
index 000000000..783d538d3
--- /dev/null
+++ b/ext/zip/lib/zip_get_encryption_implementation.c
@@ -0,0 +1,46 @@
+/*
+ zip_get_encryption_implementation.c -- get encryption implementation
+ Copyright (C) 2009 Dieter Baron and Thomas Klausner
+
+ This file is part of libzip, a library to manipulate ZIP archives.
+ The authors can be contacted at <libzip@nih.at>
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+ 3. The names of the authors may not be used to endorse or promote
+ products derived from this software without specific prior
+ written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS
+ OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
+ IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+ IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+
+
+#include "zipint.h"
+
+
+
+ZIP_EXTERN(zip_encryption_implementation)
+zip_get_encryption_implementation(zip_uint16_t em)
+{
+ if (em == ZIP_EM_TRAD_PKWARE)
+ return zip_source_pkware;
+ return NULL;
+}
diff --git a/ext/zip/lib/zip_get_file_comment.c b/ext/zip/lib/zip_get_file_comment.c
index 57dd9028b..43c1520e1 100644
--- a/ext/zip/lib/zip_get_file_comment.c
+++ b/ext/zip/lib/zip_get_file_comment.c
@@ -38,9 +38,9 @@
ZIP_EXTERN(const char *)
-zip_get_file_comment(struct zip *za, int idx, int *lenp, int flags)
+zip_get_file_comment(struct zip *za, zip_uint64_t idx, int *lenp, int flags)
{
- if (idx < 0 || idx >= za->nentry) {
+ if (idx >= za->nentry) {
_zip_error_set(&za->error, ZIP_ER_INVAL, 0);
return NULL;
}
diff --git a/ext/zip/lib/zip_get_file_extra.c b/ext/zip/lib/zip_get_file_extra.c
new file mode 100644
index 000000000..a27edd8ee
--- /dev/null
+++ b/ext/zip/lib/zip_get_file_extra.c
@@ -0,0 +1,58 @@
+/*
+ zip_get_file_extra.c -- get file extra field
+ Copyright (C) 2006-2010 Dieter Baron and Thomas Klausner
+
+ This file is part of libzip, a library to manipulate ZIP archives.
+ The authors can be contacted at <libzip@nih.at>
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+ 3. The names of the authors may not be used to endorse or promote
+ products derived from this software without specific prior
+ written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS
+ OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
+ IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+ IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+
+
+#include "zipint.h"
+
+
+
+ZIP_EXTERN(const char *)
+zip_get_file_extra(struct zip *za, zip_uint64_t idx, int *lenp, int flags)
+{
+ if (idx >= za->nentry) {
+ _zip_error_set(&za->error, ZIP_ER_INVAL, 0);
+ return NULL;
+ }
+
+ if ((flags & ZIP_FL_UNCHANGED)
+ || (za->entry[idx].ch_extra_len == -1)) {
+ if (lenp != NULL)
+ *lenp = za->cdir->entry[idx].extrafield_len;
+ return za->cdir->entry[idx].extrafield;
+ }
+
+ if (lenp != NULL)
+ *lenp = za->entry[idx].ch_extra_len;
+ return za->entry[idx].ch_extra;
+}
diff --git a/ext/zip/lib/zip_get_name.c b/ext/zip/lib/zip_get_name.c
index b58d97205..945e24e15 100644
--- a/ext/zip/lib/zip_get_name.c
+++ b/ext/zip/lib/zip_get_name.c
@@ -38,7 +38,7 @@
ZIP_EXTERN(const char *)
-zip_get_name(struct zip *za, int idx, int flags)
+zip_get_name(struct zip *za, zip_uint64_t idx, int flags)
{
return _zip_get_name(za, idx, flags, &za->error);
}
@@ -46,9 +46,10 @@ zip_get_name(struct zip *za, int idx, int flags)
const char *
-_zip_get_name(struct zip *za, int idx, int flags, struct zip_error *error)
+_zip_get_name(struct zip *za, zip_uint64_t idx, int flags,
+ struct zip_error *error)
{
- if (idx < 0 || idx >= za->nentry) {
+ if (idx >= za->nentry) {
_zip_error_set(error, ZIP_ER_INVAL, 0);
return NULL;
}
diff --git a/ext/zip/lib/zip_get_num_entries.c b/ext/zip/lib/zip_get_num_entries.c
new file mode 100644
index 000000000..dd392e909
--- /dev/null
+++ b/ext/zip/lib/zip_get_num_entries.c
@@ -0,0 +1,52 @@
+/*
+ zip_get_num_entries.c -- get number of entries in archive
+ Copyright (C) 1999-2011 Dieter Baron and Thomas Klausner
+
+ This file is part of libzip, a library to manipulate ZIP archives.
+ The authors can be contacted at <libzip@nih.at>
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+ 3. The names of the authors may not be used to endorse or promote
+ products derived from this software without specific prior
+ written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS
+ OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
+ IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+ IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+
+
+#include "zipint.h"
+
+
+
+ZIP_EXTERN(zip_uint64_t)
+zip_get_num_entries(struct zip *za, int flags)
+{
+ if (za == NULL)
+ return -1;
+
+ if (flags & ZIP_FL_UNCHANGED) {
+ if (za->cdir == NULL)
+ return 0;
+ return za->cdir->nentry;
+ }
+ return za->nentry;
+}
diff --git a/ext/zip/lib/zip_name_locate.c b/ext/zip/lib/zip_name_locate.c
index 96c4f937e..8cdd2c4d7 100644
--- a/ext/zip/lib/zip_name_locate.c
+++ b/ext/zip/lib/zip_name_locate.c
@@ -1,6 +1,6 @@
/*
zip_name_locate.c -- get index by name
- Copyright (C) 1999-2007 Dieter Baron and Thomas Klausner
+ Copyright (C) 1999-2011 Dieter Baron and Thomas Klausner
This file is part of libzip, a library to manipulate ZIP archives.
The authors can be contacted at <libzip@nih.at>
@@ -17,7 +17,7 @@
3. The names of the authors may not be used to endorse or promote
products derived from this software without specific prior
written permission.
-
+
THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS
OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
@@ -55,13 +55,17 @@ _zip_name_locate(struct zip *za, const char *fname, int flags,
const char *fn, *p;
int i, n;
+ if (za == NULL)
+ return -1;
+
if (fname == NULL) {
_zip_error_set(error, ZIP_ER_INVAL, 0);
return -1;
}
- if((flags & ZIP_FL_UNCHANGED) && !za->cdir) {
- return -1;
+ if ((flags & ZIP_FL_UNCHANGED) && za->cdir == NULL) {
+ _zip_error_set(error, ZIP_ER_NOENT, 0);
+ return -1;
}
cmp = (flags & ZIP_FL_NOCASE) ? strcmpi : strcmp;
@@ -76,7 +80,7 @@ _zip_name_locate(struct zip *za, const char *fname, int flags,
/* newly added (partially filled) entry */
if (fn == NULL)
continue;
-
+
if (flags & ZIP_FL_NODIR) {
p = strrchr(fn, '/');
if (p)
diff --git a/ext/zip/lib/zip_new.c b/ext/zip/lib/zip_new.c
index 3e8ccee64..7ce1237cd 100644
--- a/ext/zip/lib/zip_new.c
+++ b/ext/zip/lib/zip_new.c
@@ -65,6 +65,7 @@ _zip_new(struct zip_error *error)
za->nfile = za->nfile_alloc = 0;
za->file = NULL;
za->flags = za->ch_flags = 0;
+ za->default_password = NULL;
return za;
}
diff --git a/ext/zip/lib/zip_open.c b/ext/zip/lib/zip_open.c
index 31e12f4fc..2f56881b0 100644
--- a/ext/zip/lib/zip_open.c
+++ b/ext/zip/lib/zip_open.c
@@ -1,6 +1,6 @@
/*
- zip_open.c -- open zip archive
- Copyright (C) 1999-2009 Dieter Baron and Thomas Klausner
+ zip_open.c -- open zip archive by name
+ Copyright (C) 1999-2011 Dieter Baron and Thomas Klausner
This file is part of libzip, a library to manipulate ZIP archives.
The authors can be contacted at <libzip@nih.at>
@@ -52,7 +52,7 @@ static int _zip_headercomp(struct zip_dirent *, int,
struct zip_dirent *, int);
static unsigned char *_zip_memmem(const unsigned char *, int,
const unsigned char *, int);
-static struct zip_cdir *_zip_readcdir(FILE *, unsigned char *, unsigned char *,
+static struct zip_cdir *_zip_readcdir(FILE *, off_t, unsigned char *, unsigned char *,
int, int, struct zip_error *);
@@ -61,10 +61,6 @@ ZIP_EXTERN(struct zip *)
zip_open(const char *fn, int flags, int *zep)
{
FILE *fp;
- struct zip *za;
- struct zip_cdir *cdir;
- int i;
- off_t len;
if (flags & ZIP_OVERWRITE) {
return _zip_allocate_new(fn, zep);
@@ -75,10 +71,8 @@ zip_open(const char *fn, int flags, int *zep)
if (!(flags & ZIP_OVERWRITE)) {
return NULL;
}
-
case 0:
return _zip_allocate_new(fn, zep);
-
default:
break;
}
@@ -88,7 +82,23 @@ zip_open(const char *fn, int flags, int *zep)
return NULL;
}
- fseeko(fp, 0, SEEK_END);
+ return _zip_open(fn, fp, flags, 0, zep);
+}
+
+
+
+struct zip *
+_zip_open(const char *fn, FILE *fp, int flags, int aflags, int *zep)
+{
+ struct zip *za;
+ struct zip_cdir *cdir;
+ int i;
+ off_t len;
+
+ if (fseeko(fp, 0, SEEK_END) < 0) {
+ *zep = ZIP_ER_SEEK;
+ return NULL;
+ }
len = ftello(fp);
/* treat empty files as empty archives */
@@ -156,13 +166,13 @@ set_error(int *zep, struct zip_error *err, int ze)
entries, or NULL if unsuccessful. */
static struct zip_cdir *
-_zip_readcdir(FILE *fp, unsigned char *buf, unsigned char *eocd, int buflen,
+_zip_readcdir(FILE *fp, off_t buf_offset, unsigned char *buf, unsigned char *eocd, int buflen,
int flags, struct zip_error *error)
{
struct zip_cdir *cd;
unsigned char *cdp, **bufp;
int i, comlen, nentry;
- unsigned int left;
+ zip_uint32_t left;
comlen = buf + buflen - eocd - EOCDLEN;
if (comlen < 0) {
@@ -196,14 +206,24 @@ _zip_readcdir(FILE *fp, unsigned char *buf, unsigned char *eocd, int buflen,
cd->comment = NULL;
cd->comment_len = _zip_read2(&cdp);
+ if (((zip_uint64_t)cd->offset)+cd->size > buf_offset + (eocd-buf)) {
+ /* cdir spans past EOCD record */
+ _zip_error_set(error, ZIP_ER_INCONS, 0);
+ cd->nentry = 0;
+ _zip_cdir_free(cd);
+ return NULL;
+ }
+
if ((comlen < cd->comment_len) || (cd->nentry != i)) {
_zip_error_set(error, ZIP_ER_NOZIP, 0);
- free(cd);
+ cd->nentry = 0;
+ _zip_cdir_free(cd);
return NULL;
}
if ((flags & ZIP_CHECKCONS) && comlen != cd->comment_len) {
_zip_error_set(error, ZIP_ER_INCONS, 0);
- free(cd);
+ cd->nentry = 0;
+ _zip_cdir_free(cd);
return NULL;
}
@@ -211,14 +231,15 @@ _zip_readcdir(FILE *fp, unsigned char *buf, unsigned char *eocd, int buflen,
if ((cd->comment=(char *)_zip_memdup(eocd+EOCDLEN,
cd->comment_len, error))
== NULL) {
- free(cd);
+ cd->nentry = 0;
+ _zip_cdir_free(cd);
return NULL;
}
}
- if (cd->size < (unsigned int)(eocd-buf)) {
+ if (cd->offset >= buf_offset) {
/* if buffer already read in, use it */
- cdp = eocd - cd->size;
+ cdp = buf + (cd->offset - buf_offset);
bufp = &cdp;
}
else {
@@ -234,20 +255,15 @@ _zip_readcdir(FILE *fp, unsigned char *buf, unsigned char *eocd, int buflen,
_zip_error_set(error, ZIP_ER_SEEK, errno);
else
_zip_error_set(error, ZIP_ER_NOZIP, 0);
- free(cd);
+ cd->nentry = 0;
+ _zip_cdir_free(cd);
return NULL;
}
}
left = cd->size;
i=0;
- do {
- if (i == cd->nentry && left > 0) {
- /* Infozip extension for more than 64k entries:
- nentries wraps around, size indicates correct EOCD */
- _zip_cdir_grow(cd, cd->nentry+0x10000, error);
- }
-
+ while (i<cd->nentry && left > 0) {
if ((_zip_dirent_read(cd->entry+i, fp, bufp, &left, 0, error)) < 0) {
cd->nentry = i;
_zip_cdir_free(cd);
@@ -255,7 +271,18 @@ _zip_readcdir(FILE *fp, unsigned char *buf, unsigned char *eocd, int buflen,
}
i++;
- } while (i<cd->nentry);
+ if (i == cd->nentry && left > 0) {
+ /* Infozip extension for more than 64k entries:
+ nentries wraps around, size indicates correct EOCD */
+ if (_zip_cdir_grow(cd, cd->nentry+ZIP_UINT16_MAX, error) < 0) {
+ cd->nentry = i;
+ _zip_cdir_free(cd);
+ return NULL;
+ }
+ }
+ }
+
+ cd->nentry = i;
return cd;
}
@@ -336,17 +363,17 @@ _zip_check_torrentzip(struct zip *za)
if (za->cdir->comment_len != TORRENT_SIG_LEN+8
|| strncmp(za->cdir->comment, TORRENT_SIG, TORRENT_SIG_LEN) != 0)
return;
-
+
memcpy(buf, za->cdir->comment+TORRENT_SIG_LEN, 8);
buf[8] = '\0';
errno = 0;
crc_should = strtoul(buf, &end, 16);
if ((crc_should == UINT_MAX && errno != 0) || (end && *end))
return;
-
+
if (_zip_filerange_crc(za->zp, za->cdir->offset, za->cdir->size,
&crc_got, NULL) < 0)
- return;
+ return;
if (crc_got == crc_should)
za->flags |= ZIP_AFL_TORRENT;
@@ -434,12 +461,16 @@ _zip_allocate_new(const char *fn, int *zep)
set_error(zep, &error, 0);
return NULL;
}
-
- za->zn = strdup(fn);
- if (!za->zn) {
- _zip_free(za);
- set_error(zep, NULL, ZIP_ER_MEMORY);
- return NULL;
+
+ if (fn == NULL)
+ za->zn = NULL;
+ else {
+ za->zn = strdup(fn);
+ if (!za->zn) {
+ _zip_free(za);
+ set_error(zep, NULL, ZIP_ER_MEMORY);
+ return NULL;
+ }
}
return za;
}
@@ -481,6 +512,7 @@ _zip_find_central_dir(FILE *fp, int flags, int *zep, off_t len)
{
struct zip_cdir *cdir, *cdirnew;
unsigned char *buf, *match;
+ off_t buf_offset;
int a, best, buflen, i;
struct zip_error zerr;
@@ -490,7 +522,8 @@ _zip_find_central_dir(FILE *fp, int flags, int *zep, off_t len)
set_error(zep, NULL, ZIP_ER_SEEK);
return NULL;
}
-
+ buf_offset = ftello(fp);
+
/* 64k is too much for stack */
if ((buf=(unsigned char *)malloc(CDBUFSIZE)) == NULL) {
set_error(zep, NULL, ZIP_ER_MEMORY);
@@ -516,7 +549,7 @@ _zip_find_central_dir(FILE *fp, int flags, int *zep, off_t len)
/* found match -- check, if good */
/* to avoid finding the same match all over again */
match++;
- if ((cdirnew=_zip_readcdir(fp, buf, match-1, buflen, flags,
+ if ((cdirnew=_zip_readcdir(fp, buf_offset, buf, match-1, buflen, flags,
&zerr)) == NULL)
continue;
diff --git a/ext/zip/lib/zip_rename.c b/ext/zip/lib/zip_rename.c
index e40ab2767..6b5a03591 100644
--- a/ext/zip/lib/zip_rename.c
+++ b/ext/zip/lib/zip_rename.c
@@ -40,16 +40,21 @@
ZIP_EXTERN(int)
-zip_rename(struct zip *za, int idx, const char *name)
+zip_rename(struct zip *za, zip_uint64_t idx, const char *name)
{
const char *old_name;
int old_is_dir, new_is_dir;
- if (idx >= za->nentry || idx < 0 || name[0] == '\0') {
+ if (idx >= za->nentry || name[0] == '\0') {
_zip_error_set(&za->error, ZIP_ER_INVAL, 0);
return -1;
}
+ if (ZIP_IS_RDONLY(za)) {
+ _zip_error_set(&za->error, ZIP_ER_RDONLY, 0);
+ return -1;
+ }
+
if ((old_name=zip_get_name(za, idx, 0)) == NULL)
return -1;
diff --git a/ext/zip/lib/zip_replace.c b/ext/zip/lib/zip_replace.c
index ae69a86f6..6dc3dd5ab 100644
--- a/ext/zip/lib/zip_replace.c
+++ b/ext/zip/lib/zip_replace.c
@@ -1,6 +1,6 @@
/*
zip_replace.c -- replace file via callback function
- Copyright (C) 1999-2007 Dieter Baron and Thomas Klausner
+ Copyright (C) 1999-2009 Dieter Baron and Thomas Klausner
This file is part of libzip, a library to manipulate ZIP archives.
The authors can be contacted at <libzip@nih.at>
@@ -38,9 +38,9 @@
ZIP_EXTERN(int)
-zip_replace(struct zip *za, int idx, struct zip_source *source)
+zip_replace(struct zip *za, zip_uint64_t idx, struct zip_source *source)
{
- if (idx < 0 || idx >= za->nentry || source == NULL) {
+ if (idx >= za->nentry || source == NULL) {
_zip_error_set(&za->error, ZIP_ER_INVAL, 0);
return -1;
}
@@ -54,11 +54,18 @@ zip_replace(struct zip *za, int idx, struct zip_source *source)
-int
-_zip_replace(struct zip *za, int idx, const char *name,
+/* NOTE: Signed due to -1 on error. See zip_add.c for more details. */
+
+zip_int64_t
+_zip_replace(struct zip *za, zip_uint64_t idx, const char *name,
struct zip_source *source)
{
- if (idx == -1) {
+ if (ZIP_IS_RDONLY(za)) {
+ _zip_error_set(&za->error, ZIP_ER_RDONLY, 0);
+ return -1;
+ }
+
+ if (idx == ZIP_UINT64_MAX) {
if (_zip_entry_new(za) == NULL)
return -1;
diff --git a/ext/zip/lib/zip_set_archive_comment.c b/ext/zip/lib/zip_set_archive_comment.c
index c4bd070dd..3cd069c75 100644
--- a/ext/zip/lib/zip_set_archive_comment.c
+++ b/ext/zip/lib/zip_set_archive_comment.c
@@ -1,6 +1,6 @@
/*
zip_set_archive_comment.c -- set archive comment
- Copyright (C) 2006-2007 Dieter Baron and Thomas Klausner
+ Copyright (C) 2006-2009 Dieter Baron and Thomas Klausner
This file is part of libzip, a library to manipulate ZIP archives.
The authors can be contacted at <libzip@nih.at>
@@ -50,6 +50,11 @@ zip_set_archive_comment(struct zip *za, const char *comment, int len)
return -1;
}
+ if (ZIP_IS_RDONLY(za)) {
+ _zip_error_set(&za->error, ZIP_ER_RDONLY, 0);
+ return -1;
+ }
+
if (len > 0) {
if ((tmpcom=(char *)_zip_memdup(comment, len, &za->error)) == NULL)
return -1;
diff --git a/ext/zip/lib/zip_set_archive_flag.c b/ext/zip/lib/zip_set_archive_flag.c
index 20316e461..07bcfbe30 100644
--- a/ext/zip/lib/zip_set_archive_flag.c
+++ b/ext/zip/lib/zip_set_archive_flag.c
@@ -40,10 +40,30 @@
ZIP_EXTERN(int)
zip_set_archive_flag(struct zip *za, int flag, int value)
{
+ unsigned int new_flags;
+
if (value)
- za->ch_flags |= flag;
+ new_flags = za->ch_flags | flag;
else
- za->ch_flags &= ~flag;
+ new_flags = za->ch_flags & ~flag;
+
+ if (new_flags == za->ch_flags)
+ return 0;
+
+ if (ZIP_IS_RDONLY(za)) {
+ _zip_error_set(&za->error, ZIP_ER_RDONLY, 0);
+ return -1;
+ }
+
+ if ((flag & ZIP_AFL_RDONLY) && value
+ && (za->ch_flags & ZIP_AFL_RDONLY) == 0) {
+ if (_zip_changed(za, NULL)) {
+ _zip_error_set(&za->error, ZIP_ER_CHANGED, 0);
+ return -1;
+ }
+ }
+
+ za->ch_flags = new_flags;
return 0;
}
diff --git a/ext/zip/lib/zip_set_default_password.c b/ext/zip/lib/zip_set_default_password.c
new file mode 100644
index 000000000..c274d1100
--- /dev/null
+++ b/ext/zip/lib/zip_set_default_password.c
@@ -0,0 +1,62 @@
+/*
+ zip_set_default_password.c -- set default password for decryption
+ Copyright (C) 2009 Dieter Baron and Thomas Klausner
+
+ This file is part of libzip, a library to manipulate ZIP archives.
+ The authors can be contacted at <libzip@nih.at>
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+ 3. The names of the authors may not be used to endorse or promote
+ products derived from this software without specific prior
+ written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS
+ OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
+ IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+ IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+
+
+#include <stdlib.h>
+#include <string.h>
+
+#include "zipint.h"
+
+
+
+ZIP_EXTERN(int)
+zip_set_default_password(struct zip *za, const char *passwd)
+{
+ if (za == NULL)
+ return -1;
+
+ if (za->default_password)
+ free(za->default_password);
+
+ if (passwd) {
+ if ((za->default_password=strdup(passwd)) == NULL) {
+ _zip_error_set(&za->error, ZIP_ER_MEMORY, 0);
+ return -1;
+ }
+ }
+ else
+ za->default_password = NULL;
+
+ return 0;
+}
diff --git a/ext/zip/lib/zip_set_file_comment.c b/ext/zip/lib/zip_set_file_comment.c
index 3d5dd6b5e..5e63dc273 100644
--- a/ext/zip/lib/zip_set_file_comment.c
+++ b/ext/zip/lib/zip_set_file_comment.c
@@ -1,6 +1,6 @@
/*
zip_set_file_comment.c -- set comment for file in archive
- Copyright (C) 2006-2007 Dieter Baron and Thomas Klausner
+ Copyright (C) 2006-2009 Dieter Baron and Thomas Klausner
This file is part of libzip, a library to manipulate ZIP archives.
The authors can be contacted at <libzip@nih.at>
@@ -40,17 +40,23 @@
ZIP_EXTERN(int)
-zip_set_file_comment(struct zip *za, int idx, const char *comment, int len)
+zip_set_file_comment(struct zip *za, zip_uint64_t idx,
+ const char *comment, int len)
{
char *tmpcom;
- if (idx < 0 || idx >= za->nentry
+ if (idx >= za->nentry
|| len < 0 || len > MAXCOMLEN
|| (len > 0 && comment == NULL)) {
_zip_error_set(&za->error, ZIP_ER_INVAL, 0);
return -1;
}
+ if (ZIP_IS_RDONLY(za)) {
+ _zip_error_set(&za->error, ZIP_ER_RDONLY, 0);
+ return -1;
+ }
+
if (len > 0) {
if ((tmpcom=(char *)_zip_memdup(comment, len, &za->error)) == NULL)
return -1;
diff --git a/ext/zip/lib/zip_set_file_extra.c b/ext/zip/lib/zip_set_file_extra.c
new file mode 100644
index 000000000..db829e2e0
--- /dev/null
+++ b/ext/zip/lib/zip_set_file_extra.c
@@ -0,0 +1,72 @@
+/*
+ zip_set_file_extra.c -- set extra field for file in archive
+ Copyright (C) 2006-2010 Dieter Baron and Thomas Klausner
+
+ This file is part of libzip, a library to manipulate ZIP archives.
+ The authors can be contacted at <libzip@nih.at>
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+ 3. The names of the authors may not be used to endorse or promote
+ products derived from this software without specific prior
+ written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS
+ OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
+ IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+ IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+
+
+#include <stdlib.h>
+
+#include "zipint.h"
+
+
+
+ZIP_EXTERN(int)
+zip_set_file_extra(struct zip *za, zip_uint64_t idx,
+ const char *extra, int len)
+{
+ char *tmpext;
+
+ if (idx >= za->nentry
+ || len < 0 || len > MAXEXTLEN
+ || (len > 0 && extra == NULL)) {
+ _zip_error_set(&za->error, ZIP_ER_INVAL, 0);
+ return -1;
+ }
+
+ if (ZIP_IS_RDONLY(za)) {
+ _zip_error_set(&za->error, ZIP_ER_RDONLY, 0);
+ return -1;
+ }
+
+ if (len > 0) {
+ if ((tmpext=(char *)_zip_memdup(extra, len, &za->error)) == NULL)
+ return -1;
+ }
+ else
+ tmpext = NULL;
+
+ free(za->entry[idx].ch_extra);
+ za->entry[idx].ch_extra = tmpext;
+ za->entry[idx].ch_extra_len = len;
+
+ return 0;
+}
diff --git a/ext/zip/lib/zip_set_name.c b/ext/zip/lib/zip_set_name.c
index 5c7da3d7c..2a90601bf 100644
--- a/ext/zip/lib/zip_set_name.c
+++ b/ext/zip/lib/zip_set_name.c
@@ -41,12 +41,12 @@
int
-_zip_set_name(struct zip *za, int idx, const char *name)
+_zip_set_name(struct zip *za, zip_uint64_t idx, const char *name)
{
char *s;
- int i;
+ zip_int64_t i;
- if (idx < 0 || idx >= za->nentry || name == NULL) {
+ if (idx >= za->nentry || name == NULL) {
_zip_error_set(&za->error, ZIP_ER_INVAL, 0);
return -1;
}
diff --git a/ext/zip/lib/zip_source_buffer.c b/ext/zip/lib/zip_source_buffer.c
index 867d3dfa3..8c9154ce3 100644
--- a/ext/zip/lib/zip_source_buffer.c
+++ b/ext/zip/lib/zip_source_buffer.c
@@ -1,6 +1,6 @@
/*
zip_source_buffer.c -- create zip data source from buffer
- Copyright (C) 1999-2007 Dieter Baron and Thomas Klausner
+ Copyright (C) 1999-2009 Dieter Baron and Thomas Klausner
This file is part of libzip, a library to manipulate ZIP archives.
The authors can be contacted at <libzip@nih.at>
@@ -44,13 +44,12 @@ struct read_data {
int freep;
};
-static ssize_t read_data(void *state, void *data, size_t len,
- enum zip_source_cmd cmd);
+static zip_int64_t read_data(void *, void *, zip_uint64_t, enum zip_source_cmd);
ZIP_EXTERN(struct zip_source *)
-zip_source_buffer(struct zip *za, const void *data, off_t len, int freep)
+zip_source_buffer(struct zip *za, const void *data, zip_uint64_t len, int freep)
{
struct read_data *f;
struct zip_source *zs;
@@ -58,7 +57,7 @@ zip_source_buffer(struct zip *za, const void *data, off_t len, int freep)
if (za == NULL)
return NULL;
- if (len < 0 || (data == NULL && len > 0)) {
+ if (data == NULL && len > 0) {
_zip_error_set(&za->error, ZIP_ER_INVAL, 0);
return NULL;
}
@@ -83,12 +82,12 @@ zip_source_buffer(struct zip *za, const void *data, off_t len, int freep)
-static ssize_t
-read_data(void *state, void *data, size_t len, enum zip_source_cmd cmd)
+static zip_int64_t
+read_data(void *state, void *data, zip_uint64_t len, enum zip_source_cmd cmd)
{
struct read_data *z;
char *buf;
- size_t n;
+ zip_uint64_t n;
z = (struct read_data *)state;
buf = (char *)data;
@@ -99,6 +98,8 @@ read_data(void *state, void *data, size_t len, enum zip_source_cmd cmd)
return 0;
case ZIP_SOURCE_READ:
+ /* XXX: return error if (len > ZIP_INT64_MAX) */
+
n = z->end - z->buf;
if (n > len)
n = len;
@@ -125,6 +126,11 @@ read_data(void *state, void *data, size_t len, enum zip_source_cmd cmd)
zip_stat_init(st);
st->mtime = z->mtime;
st->size = z->end - z->data;
+ st->comp_size = st->size;
+ st->comp_method = ZIP_CM_STORE;
+ st->encryption_method = ZIP_EM_NONE;
+ st->valid = ZIP_STAT_MTIME|ZIP_STAT_SIZE|ZIP_STAT_COMP_SIZE
+ |ZIP_STAT_COMP_METHOD|ZIP_STAT_ENCRYPTION_METHOD;
return sizeof(*st);
}
diff --git a/ext/zip/lib/zip_source_close.c b/ext/zip/lib/zip_source_close.c
new file mode 100644
index 000000000..a3bf7e5e1
--- /dev/null
+++ b/ext/zip/lib/zip_source_close.c
@@ -0,0 +1,54 @@
+/*
+ zip_source_close.c -- close zip_source (stop reading)
+ Copyright (C) 2009 Dieter Baron and Thomas Klausner
+
+ This file is part of libzip, a library to manipulate ZIP archives.
+ The authors can be contacted at <libzip@nih.at>
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+ 3. The names of the authors may not be used to endorse or promote
+ products derived from this software without specific prior
+ written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS
+ OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
+ IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+ IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+
+
+#include "zipint.h"
+
+
+
+ZIP_EXTERN(void)
+zip_source_close(struct zip_source *src)
+{
+ if (!src->is_open)
+ return;
+
+ if (src->src == NULL)
+ (void)src->cb.f(src->ud, NULL, 0, ZIP_SOURCE_CLOSE);
+ else {
+ (void)src->cb.l(src->src, src->ud, NULL, 0, ZIP_SOURCE_CLOSE);
+ zip_source_close(src->src);
+ }
+
+ src->is_open = 0;
+}
diff --git a/ext/zip/lib/zip_source_crc.c b/ext/zip/lib/zip_source_crc.c
new file mode 100644
index 000000000..7fd78f569
--- /dev/null
+++ b/ext/zip/lib/zip_source_crc.c
@@ -0,0 +1,159 @@
+/*
+ zip_source_crc.c -- pass-through source that calculates CRC32 and size
+ Copyright (C) 2009 Dieter Baron and Thomas Klausner
+
+ This file is part of libzip, a library to manipulate ZIP archives.
+ The authors can be contacted at <libzip@nih.at>
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+ 3. The names of the authors may not be used to endorse or promote
+ products derived from this software without specific prior
+ written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS
+ OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
+ IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+ IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+
+
+#include <stdlib.h>
+#include <string.h>
+
+#include "zipint.h"
+
+struct crc {
+ int eof;
+ int validate;
+ int e[2];
+ zip_uint64_t size;
+ zip_uint32_t crc;
+};
+
+static zip_int64_t crc_read(struct zip_source *, void *, void *
+ , zip_uint64_t, enum zip_source_cmd);
+
+
+
+ZIP_EXTERN(struct zip_source *)
+zip_source_crc(struct zip *za, struct zip_source *src, int validate)
+{
+ struct crc *ctx;
+
+ if (src == NULL) {
+ _zip_error_set(&za->error, ZIP_ER_INVAL, 0);
+ return NULL;
+ }
+
+ if ((ctx=(struct crc *)malloc(sizeof(*ctx))) == NULL) {
+ _zip_error_set(&za->error, ZIP_ER_MEMORY, 0);
+ return NULL;
+ }
+
+ ctx->validate = validate;
+
+ return zip_source_layered(za, src, crc_read, ctx);
+}
+
+
+
+static zip_int64_t
+crc_read(struct zip_source *src, void *_ctx, void *data,
+ zip_uint64_t len, enum zip_source_cmd cmd)
+{
+ struct crc *ctx;
+ zip_int64_t n;
+
+ ctx = (struct crc *)_ctx;
+
+ switch (cmd) {
+ case ZIP_SOURCE_OPEN:
+ ctx->eof = 0;
+ ctx->crc = crc32(0, NULL, 0);
+ ctx->size = 0;
+
+ return 0;
+
+ case ZIP_SOURCE_READ:
+ if (ctx->eof || len == 0)
+ return 0;
+
+ if ((n=zip_source_read(src, data, len)) < 0)
+ return ZIP_SOURCE_ERR_LOWER;
+
+ if (n == 0) {
+ ctx->eof = 1;
+ if (ctx->validate) {
+ struct zip_stat st;
+
+ if (zip_source_stat(src, &st) < 0)
+ return ZIP_SOURCE_ERR_LOWER;
+
+ if ((st.valid & ZIP_STAT_CRC) && st.crc != ctx->crc) {
+ ctx->e[0] = ZIP_ER_CRC;
+ ctx->e[1] = 0;
+
+ return -1;
+ }
+ if ((st.valid & ZIP_STAT_SIZE) && st.size != ctx->size) {
+ ctx->e[0] = ZIP_ER_INCONS;
+ ctx->e[1] = 0;
+
+ return -1;
+ }
+ }
+ }
+ else {
+ ctx->size += n;
+ ctx->crc = crc32(ctx->crc, data, n);
+ }
+ return n;
+
+ case ZIP_SOURCE_CLOSE:
+ return 0;
+
+ case ZIP_SOURCE_STAT:
+ {
+ struct zip_stat *st;
+
+ st = (struct zip_stat *)data;
+
+ if (ctx->eof) {
+ /* XXX: Set comp_size, comp_method, encryption_method?
+ After all, this only works for uncompressed data. */
+ st->size = ctx->size;
+ st->crc = ctx->crc;
+ st->valid |= ZIP_STAT_SIZE|ZIP_STAT_CRC;
+ }
+ }
+ return 0;
+
+ case ZIP_SOURCE_ERROR:
+ memcpy(data, ctx->e, sizeof(ctx->e));
+ return 0;
+
+ case ZIP_SOURCE_FREE:
+ free(ctx);
+ return 0;
+
+ default:
+ return -1;
+ }
+
+}
diff --git a/ext/zip/lib/zip_source_deflate.c b/ext/zip/lib/zip_source_deflate.c
new file mode 100644
index 000000000..5d9c5e67b
--- /dev/null
+++ b/ext/zip/lib/zip_source_deflate.c
@@ -0,0 +1,394 @@
+/*
+ zip_source_deflate.c -- deflate (de)compressoin routines
+ Copyright (C) 2009 Dieter Baron and Thomas Klausner
+
+ This file is part of libzip, a library to manipulate ZIP archives.
+ The authors can be contacted at <libzip@nih.at>
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+ 3. The names of the authors may not be used to endorse or promote
+ products derived from this software without specific prior
+ written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS
+ OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
+ IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+ IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+
+
+#include <stdlib.h>
+#include <string.h>
+
+#include "zipint.h"
+
+struct deflate {
+ int e[2];
+
+ int eof;
+ int mem_level;
+ zip_uint64_t size;
+ char buffer[BUFSIZE];
+ z_stream zstr;
+};
+
+static zip_int64_t compress_read(struct zip_source *, struct deflate *,
+ void *, zip_uint64_t);
+static zip_int64_t decompress_read(struct zip_source *, struct deflate *,
+ void *, zip_uint64_t);
+static zip_int64_t deflate_compress(struct zip_source *, void *, void *,
+ zip_uint64_t, enum zip_source_cmd);
+static zip_int64_t deflate_decompress(struct zip_source *, void *, void *,
+ zip_uint64_t, enum zip_source_cmd);
+static void deflate_free(struct deflate *);
+
+
+
+ZIP_EXTERN(struct zip_source *)
+zip_source_deflate(struct zip *za, struct zip_source *src,
+ zip_uint16_t cm, int flags)
+{
+ struct deflate *ctx;
+ struct zip_source *s2;
+
+ if (src == NULL || cm != ZIP_CM_DEFLATE) {
+ _zip_error_set(&za->error, ZIP_ER_INVAL, 0);
+ return NULL;
+ }
+
+ if ((ctx=(struct deflate *)malloc(sizeof(*ctx))) == NULL) {
+ _zip_error_set(&za->error, ZIP_ER_MEMORY, 0);
+ return NULL;
+ }
+
+ ctx->e[0] = ctx->e[1] = 0;
+ ctx->eof = 0;
+ if (flags & ZIP_CODEC_ENCODE) {
+ if (zip_get_archive_flag(za, ZIP_AFL_TORRENT, 0))
+ ctx->mem_level = TORRENT_MEM_LEVEL;
+ else
+ ctx->mem_level = MAX_MEM_LEVEL;
+ }
+
+ if ((s2=zip_source_layered(za, src,
+ ((flags & ZIP_CODEC_ENCODE)
+ ? deflate_compress : deflate_decompress),
+ ctx)) == NULL) {
+ deflate_free(ctx);
+ return NULL;
+ }
+
+ return s2;
+}
+
+
+
+static zip_int64_t
+compress_read(struct zip_source *src, struct deflate *ctx,
+ void *data, zip_uint64_t len)
+{
+ int end, ret;
+ zip_int64_t n;
+
+ if (ctx->e[0] != 0)
+ return -1;
+
+ if (len == 0)
+ return 0;
+
+ ctx->zstr.next_out = (Bytef *)data;
+ ctx->zstr.avail_out = len;
+
+ end = 0;
+ while (!end) {
+ ret = deflate(&ctx->zstr, ctx->eof ? Z_FINISH : 0);
+
+ switch (ret) {
+ case Z_OK:
+ case Z_STREAM_END:
+ /* all ok */
+
+ if (ctx->zstr.avail_out == 0
+ || (ctx->eof && ctx->zstr.avail_in == 0))
+ end = 1;
+ break;
+
+ case Z_BUF_ERROR:
+ if (ctx->zstr.avail_in == 0) {
+ if (ctx->eof) {
+ end = 1;
+ break;
+ }
+
+ if ((n=zip_source_read(src, ctx->buffer,
+ sizeof(ctx->buffer))) < 0) {
+ zip_source_error(src, ctx->e, ctx->e+1);
+ end = 1;
+ break;
+ }
+ else if (n == 0) {
+ ctx->eof = 1;
+ ctx->size = ctx->zstr.total_in;
+ /* XXX: check against stat of src? */
+ }
+ else {
+ ctx->zstr.next_in = (Bytef *)ctx->buffer;
+ ctx->zstr.avail_in = n;
+ }
+ continue;
+ }
+ /* fallthrough */
+ case Z_NEED_DICT:
+ case Z_DATA_ERROR:
+ case Z_STREAM_ERROR:
+ case Z_MEM_ERROR:
+ ctx->e[0] = ZIP_ER_ZLIB;
+ ctx->e[1] = ret;
+
+ end = 1;
+ break;
+ }
+ }
+
+ if (ctx->zstr.avail_out < len)
+ return len - ctx->zstr.avail_out;
+
+ return (ctx->e[0] == 0) ? 0 : -1;
+}
+
+
+
+static zip_int64_t
+decompress_read(struct zip_source *src, struct deflate *ctx,
+ void *data, zip_uint64_t len)
+{
+ int end, ret;
+ zip_int64_t n;
+
+ if (ctx->e[0] != 0)
+ return -1;
+
+ if (len == 0)
+ return 0;
+
+ ctx->zstr.next_out = (Bytef *)data;
+ ctx->zstr.avail_out = len;
+
+ end = 0;
+ while (!end && ctx->zstr.avail_out) {
+ ret = inflate(&ctx->zstr, Z_SYNC_FLUSH);
+
+ switch (ret) {
+ case Z_OK:
+ break;
+
+ case Z_STREAM_END:
+ ctx->eof = 1;
+ end = 1;
+ break;
+
+ case Z_BUF_ERROR:
+ if (ctx->zstr.avail_in == 0) {
+ if (ctx->eof) {
+ end = 1;
+ break;
+ }
+
+ if ((n=zip_source_read(src, ctx->buffer,
+ sizeof(ctx->buffer))) < 0) {
+ zip_source_error(src, ctx->e, ctx->e+1);
+ end = 1;
+ break;
+ }
+ else if (n == 0)
+ ctx->eof = 1;
+ else {
+ ctx->zstr.next_in = (Bytef *)ctx->buffer;
+ ctx->zstr.avail_in = n;
+ }
+ continue;
+ }
+ /* fallthrough */
+ case Z_NEED_DICT:
+ case Z_DATA_ERROR:
+ case Z_STREAM_ERROR:
+ case Z_MEM_ERROR:
+ ctx->e[0] = ZIP_ER_ZLIB;
+ ctx->e[1] = ret;
+ end = 1;
+ break;
+ }
+ }
+
+ if (ctx->zstr.avail_out < len)
+ return len - ctx->zstr.avail_out;
+
+ return (ctx->e[0] == 0) ? 0 : -1;
+}
+
+
+
+static zip_int64_t
+deflate_compress(struct zip_source *src, void *ud, void *data,
+ zip_uint64_t len, enum zip_source_cmd cmd)
+{
+ struct deflate *ctx;
+ int ret;
+
+ ctx = (struct deflate *)ud;
+
+ switch (cmd) {
+ case ZIP_SOURCE_OPEN:
+ ctx->zstr.zalloc = Z_NULL;
+ ctx->zstr.zfree = Z_NULL;
+ ctx->zstr.opaque = NULL;
+ ctx->zstr.avail_in = 0;
+ ctx->zstr.next_in = NULL;
+ ctx->zstr.avail_out = 0;
+ ctx->zstr.next_out = NULL;
+
+ /* negative value to tell zlib not to write a header */
+ if ((ret=deflateInit2(&ctx->zstr, Z_BEST_COMPRESSION, Z_DEFLATED,
+ -MAX_WBITS, ctx->mem_level,
+ Z_DEFAULT_STRATEGY)) != Z_OK) {
+ ctx->e[0] = ZIP_ER_ZLIB;
+ ctx->e[1] = ret;
+ return -1;
+ }
+
+ return 0;
+
+ case ZIP_SOURCE_READ:
+ return compress_read(src, ctx, data, len);
+
+ case ZIP_SOURCE_CLOSE:
+ deflateEnd(&ctx->zstr);
+ return 0;
+
+ case ZIP_SOURCE_STAT:
+ {
+ struct zip_stat *st;
+
+ st = (struct zip_stat *)data;
+
+ st->comp_method = ZIP_CM_DEFLATE;
+ st->valid |= ZIP_STAT_COMP_METHOD;
+ if (ctx->eof) {
+ st->comp_size = ctx->size;
+ st->valid |= ZIP_STAT_COMP_SIZE;
+ }
+ else
+ st->valid &= ~ZIP_STAT_COMP_SIZE;
+ }
+ return 0;
+
+ case ZIP_SOURCE_ERROR:
+ memcpy(data, ctx->e, sizeof(int)*2);
+ return sizeof(int)*2;
+
+ case ZIP_SOURCE_FREE:
+ deflate_free(ctx);
+ return 0;
+
+ default:
+ ctx->e[0] = ZIP_ER_INVAL;
+ ctx->e[1] = 0;
+ return -1;
+ }
+}
+
+
+
+static zip_int64_t
+deflate_decompress(struct zip_source *src, void *ud, void *data,
+ zip_uint64_t len, enum zip_source_cmd cmd)
+{
+ struct deflate *ctx;
+ zip_int64_t n;
+ int ret;
+
+ ctx = (struct deflate *)ud;
+
+ switch (cmd) {
+ case ZIP_SOURCE_OPEN:
+ if ((n=zip_source_read(src, ctx->buffer, sizeof(ctx->buffer))) < 0)
+ return ZIP_SOURCE_ERR_LOWER;
+
+ ctx->zstr.zalloc = Z_NULL;
+ ctx->zstr.zfree = Z_NULL;
+ ctx->zstr.opaque = NULL;
+ ctx->zstr.next_in = (Bytef *)ctx->buffer;
+ ctx->zstr.avail_in = n;
+
+ /* negative value to tell zlib that there is no header */
+ if ((ret=inflateInit2(&ctx->zstr, -MAX_WBITS)) != Z_OK) {
+ ctx->e[0] = ZIP_ER_ZLIB;
+ ctx->e[1] = ret;
+
+ return -1;
+ }
+ return 0;
+
+ case ZIP_SOURCE_READ:
+ return decompress_read(src, ctx, data, len);
+
+ case ZIP_SOURCE_CLOSE:
+ inflateEnd(&ctx->zstr);
+ return 0;
+
+ case ZIP_SOURCE_STAT:
+ {
+ struct zip_stat *st;
+
+ st = (struct zip_stat *)data;
+
+ st->comp_method = ZIP_CM_STORE;
+ if (st->comp_size > 0 && st->size > 0)
+ st->comp_size = st->size;
+ }
+ return 0;
+
+ case ZIP_SOURCE_ERROR:
+ if (len < sizeof(int)*2)
+ return -1;
+
+ memcpy(data, ctx->e, sizeof(int)*2);
+ return sizeof(int)*2;
+
+ case ZIP_SOURCE_FREE:
+ /* XXX: inflateEnd if close was not called */
+ free(ctx);
+ return 0;
+
+ default:
+ ctx->e[0] = ZIP_ER_INVAL;
+ ctx->e[1] = 0;
+ return -1;
+ }
+
+}
+
+
+
+static void
+deflate_free(struct deflate *ctx)
+{
+ /* XXX: deflateEnd if close was not called */
+ free(ctx);
+}
diff --git a/ext/zip/lib/zip_source_error.c b/ext/zip/lib/zip_source_error.c
new file mode 100644
index 000000000..ffb4652d3
--- /dev/null
+++ b/ext/zip/lib/zip_source_error.c
@@ -0,0 +1,87 @@
+/*
+ zip_source_error.c -- get last error from zip_source
+ Copyright (C) 2009 Dieter Baron and Thomas Klausner
+
+ This file is part of libzip, a library to manipulate ZIP archives.
+ The authors can be contacted at <libzip@nih.at>
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+ 3. The names of the authors may not be used to endorse or promote
+ products derived from this software without specific prior
+ written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS
+ OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
+ IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+ IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+
+
+#include "zipint.h"
+
+
+
+ZIP_EXTERN(void)
+zip_source_error(struct zip_source *src, int *ze, int *se)
+{
+ int e[2];
+
+ if (src->src == NULL) {
+ }
+ else {
+ switch (src->error_source) {
+ case ZIP_LES_NONE:
+ if (src->src == NULL) {
+ if (src->cb.f(src->ud, e, sizeof(e), ZIP_SOURCE_ERROR) < 0) {
+ e[0] = ZIP_ER_INTERNAL;
+ e[1] = 0;
+ }
+ }
+ else
+ e[0] = e[1] = 0;
+ break;
+
+ case ZIP_LES_INVAL:
+ e[0] = ZIP_ER_INVAL;
+ e[1] = 0;
+ break;
+
+ case ZIP_LES_LOWER:
+ zip_source_error(src->src, ze, se);
+ return;
+
+ case ZIP_LES_UPPER:
+ if (src->cb.l(src->src, src->ud, e, sizeof(e),
+ ZIP_SOURCE_ERROR) < 0) {
+ e[0] = ZIP_ER_INTERNAL;
+ e[1] = 0;
+ }
+ break;
+
+ default:
+ e[0] = ZIP_ER_INTERNAL;
+ e[1] = 0;
+ }
+ }
+
+ if (ze)
+ *ze = e[0];
+ if (se)
+ *se = e[1];
+}
diff --git a/ext/zip/lib/zip_source_file.c b/ext/zip/lib/zip_source_file.c
index ab6466dcb..681cc2f3e 100644
--- a/ext/zip/lib/zip_source_file.c
+++ b/ext/zip/lib/zip_source_file.c
@@ -41,15 +41,16 @@
ZIP_EXTERN(struct zip_source *)
-zip_source_file(struct zip *za, const char *fname, off_t start, off_t len)
+zip_source_file(struct zip *za, const char *fname, zip_uint64_t start,
+ zip_int64_t len)
{
if (za == NULL)
return NULL;
- if (fname == NULL || start < 0 || len < -1) {
+ if (fname == NULL || len < -1) {
_zip_error_set(&za->error, ZIP_ER_INVAL, 0);
return NULL;
}
- return _zip_source_file_or_p(za, fname, NULL, start, len);
+ return _zip_source_file_or_p(za, fname, NULL, start, len, 1, NULL);
}
diff --git a/ext/zip/lib/zip_source_filep.c b/ext/zip/lib/zip_source_filep.c
index 2a06a9f02..4d896a4c0 100644
--- a/ext/zip/lib/zip_source_filep.c
+++ b/ext/zip/lib/zip_source_filep.c
@@ -44,19 +44,23 @@
struct read_file {
char *fname; /* name of file to copy from */
FILE *f; /* file to copy from */
- off_t off; /* start offset of */
- off_t len; /* lengt of data to copy */
- off_t remain; /* bytes remaining to be copied */
+ int closep; /* close f */
+ struct zip_stat st; /* stat information passed in */
+
+ zip_uint64_t off; /* start offset of */
+ zip_int64_t len; /* length of data to copy */
+ zip_int64_t remain; /* bytes remaining to be copied */
int e[2]; /* error codes */
};
-static ssize_t read_file(void *state, void *data, size_t len,
+static zip_int64_t read_file(void *state, void *data, zip_uint64_t len,
enum zip_source_cmd cmd);
ZIP_EXTERN(struct zip_source *)
-zip_source_filep(struct zip *za, FILE *file, off_t start, off_t len)
+zip_source_filep(struct zip *za, FILE *file, zip_uint64_t start,
+ zip_int64_t len)
{
if (za == NULL)
return NULL;
@@ -66,14 +70,15 @@ zip_source_filep(struct zip *za, FILE *file, off_t start, off_t len)
return NULL;
}
- return _zip_source_file_or_p(za, NULL, file, start, len);
+ return _zip_source_file_or_p(za, NULL, file, start, len, 1, NULL);
}
struct zip_source *
_zip_source_file_or_p(struct zip *za, const char *fname, FILE *file,
- off_t start, off_t len)
+ zip_uint64_t start, zip_int64_t len, int closep,
+ const struct zip_stat *st)
{
struct read_file *f;
struct zip_source *zs;
@@ -99,7 +104,12 @@ _zip_source_file_or_p(struct zip *za, const char *fname, FILE *file,
f->f = file;
f->off = start;
f->len = (len ? len : -1);
-
+ f->closep = f->fname ? 1 : closep;
+ if (st)
+ memcpy(&f->st, st, sizeof(f->st));
+ else
+ zip_stat_init(&f->st);
+
if ((zs=zip_source_function(za, read_file, f)) == NULL) {
free(f);
return NULL;
@@ -110,8 +120,8 @@ _zip_source_file_or_p(struct zip *za, const char *fname, FILE *file,
-static ssize_t
-read_file(void *state, void *data, size_t len, enum zip_source_cmd cmd)
+static zip_int64_t
+read_file(void *state, void *data, zip_uint64_t len, enum zip_source_cmd cmd)
{
struct read_file *z;
char *buf;
@@ -130,20 +140,33 @@ read_file(void *state, void *data, size_t len, enum zip_source_cmd cmd)
}
}
- if (fseeko(z->f, z->off, SEEK_SET) < 0) {
- z->e[0] = ZIP_ER_SEEK;
- z->e[1] = errno;
- return -1;
+ if (z->closep) {
+ if (fseeko(z->f, (off_t)z->off, SEEK_SET) < 0) {
+ z->e[0] = ZIP_ER_SEEK;
+ z->e[1] = errno;
+ return -1;
+ }
}
z->remain = z->len;
return 0;
case ZIP_SOURCE_READ:
+ /* XXX: return INVAL if len > size_t max */
if (z->remain != -1)
n = len > z->remain ? z->remain : len;
else
n = len;
-
+
+ if (!z->closep) {
+ /* we might share this file with others, so let's be safe */
+ if (fseeko(z->f, (off_t)(z->off + z->len-z->remain),
+ SEEK_SET) < 0) {
+ z->e[0] = ZIP_ER_SEEK;
+ z->e[1] = errno;
+ return -1;
+ }
+ }
+
if ((i=fread(buf, 1, n, z->f)) < 0) {
z->e[0] = ZIP_ER_READ;
z->e[1] = errno;
@@ -164,34 +187,42 @@ read_file(void *state, void *data, size_t len, enum zip_source_cmd cmd)
case ZIP_SOURCE_STAT:
{
- struct zip_stat *st;
- struct stat fst;
- int err;
-
- if (len < sizeof(*st))
+ if (len < sizeof(z->st))
return -1;
- if (z->f)
- err = fstat(fileno(z->f), &fst);
- else
- err = stat(z->fname, &fst);
-
- if (err != 0) {
- z->e[0] = ZIP_ER_READ; /* best match */
- z->e[1] = errno;
- return -1;
+ if (z->st.valid != 0)
+ memcpy(data, &z->st, sizeof(z->st));
+ else {
+ struct zip_stat *st;
+ struct stat fst;
+ int err;
+
+ if (z->f)
+ err = fstat(fileno(z->f), &fst);
+ else
+ err = stat(z->fname, &fst);
+
+ if (err != 0) {
+ z->e[0] = ZIP_ER_READ; /* best match */
+ z->e[1] = errno;
+ return -1;
+ }
+
+ st = (struct zip_stat *)data;
+
+ zip_stat_init(st);
+ st->mtime = fst.st_mtime;
+ st->valid |= ZIP_STAT_MTIME;
+ if (z->len != -1) {
+ st->size = z->len;
+ st->valid |= ZIP_STAT_SIZE;
+ }
+ else if ((fst.st_mode&S_IFMT) == S_IFREG) {
+ st->size = fst.st_size;
+ st->valid |= ZIP_STAT_SIZE;
+ }
}
-
- st = (struct zip_stat *)data;
-
- zip_stat_init(st);
- st->mtime = fst.st_mtime;
- if (z->len != -1)
- st->size = z->len;
- else if ((fst.st_mode&S_IFMT) == S_IFREG)
- st->size = fst.st_size;
-
- return sizeof(*st);
+ return sizeof(z->st);
}
case ZIP_SOURCE_ERROR:
@@ -203,8 +234,8 @@ read_file(void *state, void *data, size_t len, enum zip_source_cmd cmd)
case ZIP_SOURCE_FREE:
free(z->fname);
- if (z->f)
- fclose(z->f);
+ if (z->closep && z->f)
+ fclose(z->f);
free(z);
return 0;
diff --git a/ext/zip/lib/zip_source_free.c b/ext/zip/lib/zip_source_free.c
index 293e7f7e1..f71c71ed6 100644
--- a/ext/zip/lib/zip_source_free.c
+++ b/ext/zip/lib/zip_source_free.c
@@ -1,6 +1,6 @@
/*
zip_source_free.c -- free zip data source
- Copyright (C) 1999-2007 Dieter Baron and Thomas Klausner
+ Copyright (C) 1999-2009 Dieter Baron and Thomas Klausner
This file is part of libzip, a library to manipulate ZIP archives.
The authors can be contacted at <libzip@nih.at>
@@ -40,12 +40,20 @@
ZIP_EXTERN(void)
-zip_source_free(struct zip_source *source)
+zip_source_free(struct zip_source *src)
{
- if (source == NULL)
+ if (src == NULL)
return;
- (void)source->f(source->ud, NULL, 0, ZIP_SOURCE_FREE);
+ if (src->is_open)
+ zip_source_close(src);
- free(source);
+ if (src->src == NULL)
+ (void)src->cb.f(src->ud, NULL, 0, ZIP_SOURCE_FREE);
+ else {
+ (void)src->cb.l(src->src, src->ud, NULL, 0, ZIP_SOURCE_FREE);
+ zip_source_free(src->src);
+ }
+
+ free(src);
}
diff --git a/ext/zip/lib/zip_source_function.c b/ext/zip/lib/zip_source_function.c
index fe3e82aa5..984b107f7 100644
--- a/ext/zip/lib/zip_source_function.c
+++ b/ext/zip/lib/zip_source_function.c
@@ -1,6 +1,6 @@
/*
zip_source_function.c -- create zip data source from callback function
- Copyright (C) 1999-2007 Dieter Baron and Thomas Klausner
+ Copyright (C) 1999-2009 Dieter Baron and Thomas Klausner
This file is part of libzip, a library to manipulate ZIP archives.
The authors can be contacted at <libzip@nih.at>
@@ -47,13 +47,32 @@ zip_source_function(struct zip *za, zip_source_callback zcb, void *ud)
if (za == NULL)
return NULL;
- if ((zs=(struct zip_source *)malloc(sizeof(*zs))) == NULL) {
- _zip_error_set(&za->error, ZIP_ER_MEMORY, 0);
+ if ((zs=_zip_source_new(za)) == NULL)
return NULL;
- }
- zs->f = zcb;
+ zs->cb.f = zcb;
zs->ud = ud;
return zs;
}
+
+
+
+struct zip_source *
+_zip_source_new(struct zip *za)
+{
+ struct zip_source *src;
+
+ if ((src=(struct zip_source *)malloc(sizeof(*src))) == NULL) {
+ _zip_error_set(&za->error, ZIP_ER_MEMORY, 0);
+ return NULL;
+ }
+
+ src->src = NULL;
+ src->cb.f = NULL;
+ src->ud = NULL;
+ src->error_source = ZIP_LES_NONE;
+ src->is_open = 0;
+
+ return src;
+}
diff --git a/ext/zip/lib/zip_source_layered.c b/ext/zip/lib/zip_source_layered.c
new file mode 100644
index 000000000..86ed42040
--- /dev/null
+++ b/ext/zip/lib/zip_source_layered.c
@@ -0,0 +1,59 @@
+/*
+ zip_source_layered.c -- create layered source
+ Copyright (C) 2009 Dieter Baron and Thomas Klausner
+
+ This file is part of libzip, a library to manipulate ZIP archives.
+ The authors can be contacted at <libzip@nih.at>
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+ 3. The names of the authors may not be used to endorse or promote
+ products derived from this software without specific prior
+ written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS
+ OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
+ IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+ IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+
+
+#include <stdlib.h>
+
+#include "zipint.h"
+
+
+
+ZIP_EXTERN(struct zip_source *)
+zip_source_layered(struct zip *za, struct zip_source *src,
+ zip_source_layered_callback cb, void *ud)
+{
+ struct zip_source *zs;
+
+ if (za == NULL)
+ return NULL;
+
+ if ((zs=_zip_source_new(za)) == NULL)
+ return NULL;
+
+ zs->src = src;
+ zs->cb.l = cb;
+ zs->ud = ud;
+
+ return zs;
+}
diff --git a/ext/zip/lib/zip_source_open.c b/ext/zip/lib/zip_source_open.c
new file mode 100644
index 000000000..2c768f7f3
--- /dev/null
+++ b/ext/zip/lib/zip_source_open.c
@@ -0,0 +1,76 @@
+/*
+ zip_source_open.c -- open zip_source (prepare for reading)
+ Copyright (C) 2009 Dieter Baron and Thomas Klausner
+
+ This file is part of libzip, a library to manipulate ZIP archives.
+ The authors can be contacted at <libzip@nih.at>
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+ 3. The names of the authors may not be used to endorse or promote
+ products derived from this software without specific prior
+ written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS
+ OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
+ IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+ IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+
+
+#include "zipint.h"
+
+
+
+ZIP_EXTERN(int)
+zip_source_open(struct zip_source *src)
+{
+ zip_int64_t ret;
+
+ if (src->is_open) {
+ src->error_source = ZIP_LES_INVAL;
+ return -1;
+ }
+
+ if (src->src == NULL) {
+ if (src->cb.f(src->ud, NULL, 0, ZIP_SOURCE_OPEN) < 0)
+ return -1;
+ }
+ else {
+ if (zip_source_open(src->src) < 0) {
+ src->error_source = ZIP_LES_LOWER;
+ return -1;
+ }
+
+ ret = src->cb.l(src->src, src->ud, NULL, 0, ZIP_SOURCE_OPEN);
+
+ if (ret < 0) {
+ (void)zip_source_close(src->src);
+
+ if (ret == ZIP_SOURCE_ERR_LOWER)
+ src->error_source = ZIP_LES_LOWER;
+ else
+ src->error_source = ZIP_LES_UPPER;
+ return -1;
+ }
+ }
+
+ src->is_open = 1;
+
+ return 0;
+}
diff --git a/ext/zip/lib/zip_source_pkware.c b/ext/zip/lib/zip_source_pkware.c
new file mode 100644
index 000000000..83b5cc5ad
--- /dev/null
+++ b/ext/zip/lib/zip_source_pkware.c
@@ -0,0 +1,241 @@
+/*
+ zip_source_pkware.c -- Traditional PKWARE de/encryption routines
+ Copyright (C) 2009 Dieter Baron and Thomas Klausner
+
+ This file is part of libzip, a library to manipulate ZIP archives.
+ The authors can be contacted at <libzip@nih.at>
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+ 3. The names of the authors may not be used to endorse or promote
+ products derived from this software without specific prior
+ written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS
+ OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
+ IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+ IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+
+
+#include <stdlib.h>
+#include <string.h>
+
+#include "zipint.h"
+
+struct trad_pkware {
+ int e[2];
+
+ zip_uint32_t key[3];
+};
+
+#define HEADERLEN 12
+#define KEY0 305419896
+#define KEY1 591751049
+#define KEY2 878082192
+
+static const uLongf *crc = NULL;
+
+#define CRC32(c, b) (crc[((c) ^ (b)) & 0xff] ^ ((c) >> 8))
+
+
+
+static void decrypt(struct trad_pkware *, zip_uint8_t *,
+ const zip_uint8_t *, zip_uint64_t, int);
+static int decrypt_header(struct zip_source *, struct trad_pkware *);
+static zip_int64_t pkware_decrypt(struct zip_source *, void *, void *,
+ zip_uint64_t, enum zip_source_cmd);
+static void pkware_free(struct trad_pkware *);
+
+
+
+ZIP_EXTERN(struct zip_source *)
+zip_source_pkware(struct zip *za, struct zip_source *src,
+ zip_uint16_t em, int flags, const char *password)
+{
+ struct trad_pkware *ctx;
+ struct zip_source *s2;
+
+ if (password == NULL || src == NULL || em != ZIP_EM_TRAD_PKWARE) {
+ _zip_error_set(&za->error, ZIP_ER_INVAL, 0);
+ return NULL;
+ }
+ if (flags & ZIP_CODEC_ENCODE) {
+ _zip_error_set(&za->error, ZIP_ER_ENCRNOTSUPP, 0);
+ return NULL;
+ }
+
+ if (crc == NULL)
+ crc = get_crc_table();
+
+ if ((ctx=(struct trad_pkware *)malloc(sizeof(*ctx))) == NULL) {
+ _zip_error_set(&za->error, ZIP_ER_MEMORY, 0);
+ return NULL;
+ }
+
+ ctx->e[0] = ctx->e[1] = 0;
+
+ ctx->key[0] = KEY0;
+ ctx->key[1] = KEY1;
+ ctx->key[2] = KEY2;
+ decrypt(ctx, NULL, (const zip_uint8_t *)password, strlen(password), 1);
+
+ if ((s2=zip_source_layered(za, src, pkware_decrypt, ctx)) == NULL) {
+ pkware_free(ctx);
+ return NULL;
+ }
+
+ return s2;
+}
+
+
+
+static void
+decrypt(struct trad_pkware *ctx, zip_uint8_t *out, const zip_uint8_t *in,
+ zip_uint64_t len, int update_only)
+{
+ zip_uint16_t tmp;
+ zip_uint64_t i;
+ Bytef b;
+
+ for (i=0; i<len; i++) {
+ b = in[i];
+
+ if (!update_only) {
+ /* decrypt next byte */
+ tmp = ctx->key[2] | 2;
+ tmp = (tmp * (tmp ^ 1)) >> 8;
+ b ^= tmp;
+ }
+
+ /* store cleartext */
+ if (out)
+ out[i] = b;
+
+ /* update keys */
+ ctx->key[0] = CRC32(ctx->key[0], b);
+ ctx->key[1] = (ctx->key[1] + (ctx->key[0] & 0xff)) * 134775813 + 1;
+ b = ctx->key[1] >> 24;
+ ctx->key[2] = CRC32(ctx->key[2], b);
+ }
+}
+
+
+
+static int
+decrypt_header(struct zip_source *src, struct trad_pkware *ctx)
+{
+ zip_uint8_t header[HEADERLEN];
+ struct zip_stat st;
+ zip_int64_t n;
+ unsigned short dostime, dosdate;
+
+ if ((n=zip_source_read(src, header, HEADERLEN)) < 0) {
+ zip_source_error(src, ctx->e, ctx->e+1);
+ return -1;
+ }
+
+ if (n != HEADERLEN) {
+ ctx->e[0] = ZIP_ER_EOF;
+ ctx->e[1] = 0;
+ return -1;
+ }
+
+ decrypt(ctx, header, header, HEADERLEN, 0);
+
+ if (zip_source_stat(src, &st) < 0) {
+ /* stat failed, skip password validation */
+ return 0;
+ }
+
+ _zip_u2d_time(st.mtime, &dostime, &dosdate);
+
+ if (header[HEADERLEN-1] != st.crc>>24
+ && header[HEADERLEN-1] != dostime>>8) {
+ ctx->e[0] = ZIP_ER_WRONGPASSWD;
+ ctx->e[1] = 0;
+ return -1;
+ }
+
+ return 0;
+}
+
+
+
+static zip_int64_t
+pkware_decrypt(struct zip_source *src, void *ud, void *data,
+ zip_uint64_t len, enum zip_source_cmd cmd)
+{
+ struct trad_pkware *ctx;
+ zip_int64_t n;
+
+ ctx = (struct trad_pkware *)ud;
+
+ switch (cmd) {
+ case ZIP_SOURCE_OPEN:
+ if (decrypt_header(src, ctx) < 0)
+ return -1;
+ return 0;
+
+ case ZIP_SOURCE_READ:
+ if ((n=zip_source_read(src, data, len)) < 0)
+ return ZIP_SOURCE_ERR_LOWER;
+
+ decrypt(ud, (zip_uint8_t *)data, (zip_uint8_t *)data, (zip_uint64_t)n,
+ 0);
+ return n;
+
+ case ZIP_SOURCE_CLOSE:
+ return 0;
+
+ case ZIP_SOURCE_STAT:
+ {
+ struct zip_stat *st;
+
+ st = (struct zip_stat *)data;
+
+ st->encryption_method = ZIP_EM_NONE;
+ st->valid |= ZIP_STAT_ENCRYPTION_METHOD;
+ /* XXX: deduce HEADERLEN from size for uncompressed */
+ if (st->valid & ZIP_STAT_COMP_SIZE)
+ st->comp_size -= HEADERLEN;
+ }
+ return 0;
+
+ case ZIP_SOURCE_ERROR:
+ memcpy(data, ctx->e, sizeof(int)*2);
+ return sizeof(int)*2;
+
+ case ZIP_SOURCE_FREE:
+ pkware_free(ctx);
+ return 0;
+
+ default:
+ ctx->e[0] = ZIP_ER_INVAL;
+ ctx->e[1] = 0;
+ return -1;
+ }
+}
+
+
+
+static void
+pkware_free(struct trad_pkware *ctx)
+{
+ free(ctx);
+}
diff --git a/ext/zip/lib/zip_source_pop.c b/ext/zip/lib/zip_source_pop.c
new file mode 100644
index 000000000..406093869
--- /dev/null
+++ b/ext/zip/lib/zip_source_pop.c
@@ -0,0 +1,63 @@
+/*
+ zip_source_pop.c -- pop top layer from zip data source
+ Copyright (C) 2009 Dieter Baron and Thomas Klausner
+
+ This file is part of libzip, a library to manipulate ZIP archives.
+ The authors can be contacted at <libzip@nih.at>
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+ 3. The names of the authors may not be used to endorse or promote
+ products derived from this software without specific prior
+ written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS
+ OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
+ IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+ IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+
+
+#include <stdlib.h>
+
+#include "zipint.h"
+
+
+
+ZIP_EXTERN(struct zip_source *)
+zip_source_pop(struct zip_source *src)
+{
+ struct zip_source *lower;
+
+ if (src == NULL)
+ return NULL;
+
+ lower = src->src;
+
+ if (lower == NULL)
+ zip_source_free(src);
+ else {
+ if (src->is_open)
+ (void)src->cb.l(src, src->ud, NULL, 0, ZIP_SOURCE_CLOSE);
+ (void)src->cb.l(src, src->ud, NULL, 0, ZIP_SOURCE_FREE);
+
+ free(src);
+ }
+
+ return lower;
+}
diff --git a/ext/zip/lib/zip_source_read.c b/ext/zip/lib/zip_source_read.c
new file mode 100644
index 000000000..7246f9ccb
--- /dev/null
+++ b/ext/zip/lib/zip_source_read.c
@@ -0,0 +1,64 @@
+/*
+ zip_source_read.c -- read data from zip_source
+ Copyright (C) 2009 Dieter Baron and Thomas Klausner
+
+ This file is part of libzip, a library to manipulate ZIP archives.
+ The authors can be contacted at <libzip@nih.at>
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+ 3. The names of the authors may not be used to endorse or promote
+ products derived from this software without specific prior
+ written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS
+ OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
+ IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+ IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+
+
+#include "zipint.h"
+
+
+
+ZIP_EXTERN(zip_int64_t)
+zip_source_read(struct zip_source *src, void *data, zip_uint64_t len)
+{
+ zip_int64_t ret;
+
+ if (!src->is_open || len > ZIP_INT64_MAX || (len > 0 && data == NULL)) {
+ src->error_source = ZIP_LES_INVAL;
+ return -1;
+ }
+
+ if (src->src == NULL)
+ return src->cb.f(src->ud, data, len, ZIP_SOURCE_READ);
+
+ ret = src->cb.l(src->src, src->ud, data, len, ZIP_SOURCE_READ);
+
+ if (ret < 0) {
+ if (ret == ZIP_SOURCE_ERR_LOWER)
+ src->error_source = ZIP_LES_LOWER;
+ else
+ src->error_source = ZIP_LES_UPPER;
+ return -1;
+ }
+
+ return ret;
+}
diff --git a/ext/zip/lib/zip_source_stat.c b/ext/zip/lib/zip_source_stat.c
new file mode 100644
index 000000000..662779eb6
--- /dev/null
+++ b/ext/zip/lib/zip_source_stat.c
@@ -0,0 +1,72 @@
+/*
+ zip_source_stat.c -- get meta information from zip_source
+ Copyright (C) 2009 Dieter Baron and Thomas Klausner
+
+ This file is part of libzip, a library to manipulate ZIP archives.
+ The authors can be contacted at <libzip@nih.at>
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+ 3. The names of the authors may not be used to endorse or promote
+ products derived from this software without specific prior
+ written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS
+ OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
+ IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+ IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+
+
+#include "zipint.h"
+
+
+
+ZIP_EXTERN(int)
+zip_source_stat(struct zip_source *src, struct zip_stat *st)
+{
+ zip_int64_t ret;
+
+ if (st == NULL) {
+ src->error_source = ZIP_LES_INVAL;
+ return -1;
+ }
+
+ if (src->src == NULL) {
+ if (src->cb.f(src->ud, st, sizeof(*st), ZIP_SOURCE_STAT) < 0)
+ return -1;
+ return 0;
+ }
+
+ if (zip_source_stat(src->src, st) < 0) {
+ src->error_source = ZIP_LES_LOWER;
+ return -1;
+ }
+
+ ret = src->cb.l(src->src, src->ud, st, sizeof(*st), ZIP_SOURCE_STAT);
+
+ if (ret < 0) {
+ if (ret == ZIP_SOURCE_ERR_LOWER)
+ src->error_source = ZIP_LES_LOWER;
+ else
+ src->error_source = ZIP_LES_UPPER;
+ return -1;
+ }
+
+ return 0;
+}
diff --git a/ext/zip/lib/zip_source_zip.c b/ext/zip/lib/zip_source_zip.c
index 58119dd39..228803c71 100644
--- a/ext/zip/lib/zip_source_zip.c
+++ b/ext/zip/lib/zip_source_zip.c
@@ -1,6 +1,6 @@
/*
zip_source_zip.c -- create data source from zip file
- Copyright (C) 1999-2007 Dieter Baron and Thomas Klausner
+ Copyright (C) 1999-2009 Dieter Baron and Thomas Klausner
This file is part of libzip, a library to manipulate ZIP archives.
The authors can be contacted at <libzip@nih.at>
@@ -41,17 +41,18 @@
struct read_zip {
struct zip_file *zf;
struct zip_stat st;
- off_t off, len;
+ zip_uint64_t off;
+ zip_int64_t len;
};
-static ssize_t read_zip(void *st, void *data, size_t len,
+static zip_int64_t read_zip(void *st, void *data, zip_uint64_t len,
enum zip_source_cmd cmd);
ZIP_EXTERN(struct zip_source *)
-zip_source_zip(struct zip *za, struct zip *srcza, int srcidx, int flags,
- off_t start, off_t len)
+zip_source_zip(struct zip *za, struct zip *srcza, zip_uint64_t srcidx,
+ int flags, zip_uint64_t start, zip_int64_t len)
{
struct zip_error error;
struct zip_source *zs;
@@ -62,7 +63,7 @@ zip_source_zip(struct zip *za, struct zip *srcza, int srcidx, int flags,
if (za == NULL)
return NULL;
- if (srcza == NULL || start < 0 || len < -1 || srcidx < 0 || srcidx >= srcza->nentry) {
+ if (srcza == NULL || len < -1 || srcidx < 0 || srcidx >= srcza->nentry) {
_zip_error_set(&za->error, ZIP_ER_INVAL, 0);
return NULL;
}
@@ -115,12 +116,13 @@ zip_source_zip(struct zip *za, struct zip *srcza, int srcidx, int flags,
-static ssize_t
-read_zip(void *state, void *data, size_t len, enum zip_source_cmd cmd)
+static zip_int64_t
+read_zip(void *state, void *data, zip_uint64_t len, enum zip_source_cmd cmd)
{
struct read_zip *z;
char b[8192], *buf;
- int i, n;
+ int i;
+ zip_uint64_t n;
z = (struct read_zip *)state;
buf = (char *)data;
diff --git a/ext/zip/lib/zip_stat_index.c b/ext/zip/lib/zip_stat_index.c
index 26425206c..8faa8cc39 100644
--- a/ext/zip/lib/zip_stat_index.c
+++ b/ext/zip/lib/zip_stat_index.c
@@ -1,6 +1,6 @@
/*
zip_stat_index.c -- get information about file by index
- Copyright (C) 1999-2007 Dieter Baron and Thomas Klausner
+ Copyright (C) 1999-2009 Dieter Baron and Thomas Klausner
This file is part of libzip, a library to manipulate ZIP archives.
The authors can be contacted at <libzip@nih.at>
@@ -38,11 +38,12 @@
ZIP_EXTERN(int)
-zip_stat_index(struct zip *za, int index, int flags, struct zip_stat *st)
+zip_stat_index(struct zip *za, zip_uint64_t index, int flags,
+ struct zip_stat *st)
{
const char *name;
- if (index < 0 || index >= za->nentry) {
+ if (index >= za->nentry) {
_zip_error_set(&za->error, ZIP_ER_INVAL, 0);
return -1;
}
@@ -53,8 +54,7 @@ zip_stat_index(struct zip *za, int index, int flags, struct zip_stat *st)
if ((flags & ZIP_FL_UNCHANGED) == 0
&& ZIP_ENTRY_DATA_CHANGED(za->entry+index)) {
- if (za->entry[index].source->f(za->entry[index].source->ud,
- st, sizeof(*st), ZIP_SOURCE_STAT) < 0) {
+ if (zip_source_stat(za->entry[index].source, st) < 0) {
_zip_error_set(&za->error, ZIP_ER_CHANGED, 0);
return -1;
}
@@ -64,7 +64,9 @@ zip_stat_index(struct zip *za, int index, int flags, struct zip_stat *st)
_zip_error_set(&za->error, ZIP_ER_INVAL, 0);
return -1;
}
-
+
+ zip_stat_init(st);
+
st->crc = za->cdir->entry[index].crc;
st->size = za->cdir->entry[index].uncomp_size;
st->mtime = za->cdir->entry[index].last_mod;
@@ -80,11 +82,13 @@ zip_stat_index(struct zip *za, int index, int flags, struct zip_stat *st)
}
else
st->encryption_method = ZIP_EM_NONE;
- /* st->bitflags = za->cdir->entry[index].bitflags; */
+ st->valid = ZIP_STAT_CRC|ZIP_STAT_SIZE|ZIP_STAT_MTIME
+ |ZIP_STAT_COMP_SIZE|ZIP_STAT_COMP_METHOD|ZIP_STAT_ENCRYPTION_METHOD;
}
st->index = index;
st->name = name;
+ st->valid |= ZIP_STAT_INDEX|ZIP_STAT_NAME;
return 0;
}
diff --git a/ext/zip/lib/zip_stat_init.c b/ext/zip/lib/zip_stat_init.c
index cb451dc3b..74e1ffd0b 100644
--- a/ext/zip/lib/zip_stat_init.c
+++ b/ext/zip/lib/zip_stat_init.c
@@ -1,6 +1,6 @@
/*
zip_stat_init.c -- initialize struct zip_stat.
- Copyright (C) 2006-2007 Dieter Baron and Thomas Klausner
+ Copyright (C) 2006-2009 Dieter Baron and Thomas Klausner
This file is part of libzip, a library to manipulate ZIP archives.
The authors can be contacted at <libzip@nih.at>
@@ -40,12 +40,13 @@
ZIP_EXTERN(void)
zip_stat_init(struct zip_stat *st)
{
+ st->valid = 0;
st->name = NULL;
- st->index = -1;
+ st->index = ZIP_UINT64_MAX;
st->crc = 0;
st->mtime = (time_t)-1;
- st->size = -1;
- st->comp_size = -1;
+ st->size = 0;
+ st->comp_size = 0;
st->comp_method = ZIP_CM_STORE;
st->encryption_method = ZIP_EM_NONE;
}
diff --git a/ext/zip/lib/zip_unchange.c b/ext/zip/lib/zip_unchange.c
index 7366c9cc7..550e8b990 100644
--- a/ext/zip/lib/zip_unchange.c
+++ b/ext/zip/lib/zip_unchange.c
@@ -40,7 +40,7 @@
ZIP_EXTERN(int)
-zip_unchange(struct zip *za, int idx)
+zip_unchange(struct zip *za, zip_uint64_t idx)
{
return _zip_unchange(za, idx, 0);
}
@@ -48,11 +48,11 @@ zip_unchange(struct zip *za, int idx)
int
-_zip_unchange(struct zip *za, int idx, int allow_duplicates)
+_zip_unchange(struct zip *za, zip_uint64_t idx, int allow_duplicates)
{
int i;
- if (idx < 0 || idx >= za->nentry) {
+ if (idx >= za->nentry) {
_zip_error_set(&za->error, ZIP_ER_INVAL, 0);
return -1;
}
@@ -72,6 +72,9 @@ _zip_unchange(struct zip *za, int idx, int allow_duplicates)
za->entry[idx].ch_filename = NULL;
}
+ free(za->entry[idx].ch_extra);
+ za->entry[idx].ch_extra = NULL;
+ za->entry[idx].ch_extra_len = -1;
free(za->entry[idx].ch_comment);
za->entry[idx].ch_comment = NULL;
za->entry[idx].ch_comment_len = -1;
diff --git a/ext/zip/lib/zip_unchange_archive.c b/ext/zip/lib/zip_unchange_archive.c
index fe30a5ad2..ca2b67854 100644
--- a/ext/zip/lib/zip_unchange_archive.c
+++ b/ext/zip/lib/zip_unchange_archive.c
@@ -1,6 +1,6 @@
/*
zip_unchange_archive.c -- undo global changes to ZIP archive
- Copyright (C) 2006-2009 Dieter Baron and Thomas Klausner
+ Copyright (C) 2006-2008 Dieter Baron and Thomas Klausner
This file is part of libzip, a library to manipulate ZIP archives.
The authors can be contacted at <libzip@nih.at>
diff --git a/ext/zip/lib/zip_unchange_data.c b/ext/zip/lib/zip_unchange_data.c
index 6fe89f4fb..7dd93b768 100644
--- a/ext/zip/lib/zip_unchange_data.c
+++ b/ext/zip/lib/zip_unchange_data.c
@@ -43,8 +43,7 @@ void
_zip_unchange_data(struct zip_entry *ze)
{
if (ze->source) {
- (void)ze->source->f(ze->source->ud, NULL, 0, ZIP_SOURCE_FREE);
- free(ze->source);
+ zip_source_free(ze->source);
ze->source = NULL;
}
diff --git a/ext/zip/lib/zipconf.h b/ext/zip/lib/zipconf.h
new file mode 100644
index 000000000..2b4340c86
--- /dev/null
+++ b/ext/zip/lib/zipconf.h
@@ -0,0 +1,51 @@
+#ifndef _HAD_ZIPCONF_H
+#define _HAD_ZIPCONF_H
+
+/*
+ zipconf.h -- platform specific include file
+
+ This file was generated automatically by ./make_zipconf.sh
+ based on ../config.h.
+ */
+
+#define LIBZIP_VERSION "0.10.1"
+#define LIBZIP_VERSION_MAJOR 0
+#define LIBZIP_VERSION_MINOR 10
+#define LIBZIP_VERSION_MICRO 0
+
+#ifdef PHP_WIN32
+#include <win32/php_stdint.h>
+#else
+#include <inttypes.h>
+#endif
+
+typedef int8_t zip_int8_t;
+#define ZIP_INT8_MIN INT8_MIN
+#define ZIP_INT8_MAX INT8_MAX
+
+typedef uint8_t zip_uint8_t;
+#define ZIP_UINT8_MAX UINT8_MAX
+
+typedef int16_t zip_int16_t;
+#define ZIP_INT16_MIN INT16_MIN
+#define ZIP_INT16_MAX INT16_MAX
+
+typedef uint16_t zip_uint16_t;
+#define ZIP_UINT16_MAX UINT16_MAX
+
+typedef int32_t zip_int32_t;
+#define ZIP_INT32_MIN INT32_MIN
+#define ZIP_INT32_MAX INT32_MAX
+
+typedef uint32_t zip_uint32_t;
+#define ZIP_UINT32_MAX UINT32_MAX
+
+typedef int64_t zip_int64_t;
+#define ZIP_INT64_MIN INT64_MIN
+#define ZIP_INT64_MAX INT64_MAX
+
+typedef uint64_t zip_uint64_t;
+#define ZIP_UINT64_MAX UINT64_MAX
+
+
+#endif /* zipconf.h */
diff --git a/ext/zip/lib/zipint.h b/ext/zip/lib/zipint.h
index d72ed144d..ea21dddcd 100644
--- a/ext/zip/lib/zipint.h
+++ b/ext/zip/lib/zipint.h
@@ -3,7 +3,7 @@
/*
zipint.h -- internal declarations.
- Copyright (C) 1999-2009 Dieter Baron and Thomas Klausner
+ Copyright (C) 1999-2011 Dieter Baron and Thomas Klausner
This file is part of libzip, a library to manipulate ZIP archives.
The authors can be contacted at <libzip@nih.at>
@@ -38,12 +38,37 @@
#include "zip.h"
+#ifndef HAVE_FSEEKO
+#define fseeko(s, o, w) (fseek((s), (long int)(o), (w)))
+#endif
+
+#ifndef HAVE_FTELLO
+#define ftello(s) ((long)ftell((s)))
+#endif
+
+#ifndef PHP_WIN32
+#ifndef HAVE_MKSTEMP
+int _zip_mkstemp(char *);
+#define mkstemp _zip_mkstemp
+#endif
+#endif
+
#ifdef PHP_WIN32
#include <windows.h>
#include <wchar.h>
#define _zip_rename(s, t) \
(!MoveFileExA((s), (t), \
MOVEFILE_COPY_ALLOWED|MOVEFILE_REPLACE_EXISTING))
+
+/* for dup(), close(), etc. */
+#include <io.h>
+
+#if !defined(HAVE_OPEN)
+#if defined(HAVE__OPEN)
+#define open(a, b, c) _open((a), (b))
+#endif
+#endif
+
#else
#define _zip_rename rename
#endif
@@ -52,12 +77,6 @@
# define strcmpi strcasecmp
#endif
-#ifndef HAVE_FSEEKO
-#define fseeko(s, o, w) (fseek((s), (long int)(o), (w)))
-#endif
-#ifndef HAVE_FTELLO
-#define ftello(s) ((long)ftell((s)))
-#endif
@@ -73,22 +92,77 @@
#define LENTRYSIZE 30
#undef MAXCOMLEN /* defined as 19 on BSD for max command name */
#define MAXCOMLEN 65536
+#define MAXEXTLEN 65536
#define EOCDLEN 22
#define CDBUFSIZE (MAXCOMLEN+EOCDLEN)
#define BUFSIZE 8192
+/* This section contains API that won't materialize like this. It's
+ placed in the internal section, pending cleanup. */
+
+typedef struct zip_source *(*zip_compression_implementation)(struct zip *,
+ struct zip_source *,
+ zip_uint16_t, int);
+typedef struct zip_source *(*zip_encryption_implementation)(struct zip *,
+ struct zip_source *,
+ zip_uint16_t, int,
+ const char *);
+
+ZIP_EXTERN(zip_compression_implementation) zip_get_compression_implementation(
+ zip_uint16_t);
+ZIP_EXTERN(zip_encryption_implementation) zip_get_encryption_implementation(
+ zip_uint16_t);
+
+
+
+
+/* This section contains API that is of limited use until support for
+ user-supplied compression/encryption implementation is finished.
+ Thus we will keep it private for now. */
+
+typedef zip_int64_t (*zip_source_layered_callback)(struct zip_source *, void *,
+ void *, zip_uint64_t,
+ enum zip_source_cmd);
+
+ZIP_EXTERN(void) zip_source_close(struct zip_source *);
+ZIP_EXTERN(struct zip_source *)zip_source_crc(struct zip *, struct zip_source *,
+ int);
+ZIP_EXTERN(struct zip_source *)zip_source_deflate(struct zip *,
+ struct zip_source *,
+ zip_uint16_t, int);
+ZIP_EXTERN(void) zip_source_error(struct zip_source *, int *, int *);
+ZIP_EXTERN(struct zip_source *)zip_source_layered(struct zip *,
+ struct zip_source *,
+ zip_source_layered_callback,
+ void *);
+ZIP_EXTERN(int) zip_source_open(struct zip_source *);
+ZIP_EXTERN(struct zip_source *)zip_source_pkware(struct zip *,
+ struct zip_source *,
+ zip_uint16_t, int,
+ const char *);
+ZIP_EXTERN(zip_int64_t) zip_source_read(struct zip_source *, void *,
+ zip_uint64_t);
+ZIP_EXTERN(int) zip_source_stat(struct zip_source *, struct zip_stat *);
+
+
+/* This function will probably remain private. It is not needed to
+ implement compression/encryption routines. (We should probably
+ rename it to _zip_source_pop.) */
+
+ZIP_EXTERN(struct zip_source *)zip_source_pop(struct zip_source *);
+
+
+
/* state of change of a file in zip archive */
enum zip_state { ZIP_ST_UNCHANGED, ZIP_ST_DELETED, ZIP_ST_REPLACED,
ZIP_ST_ADDED, ZIP_ST_RENAMED };
-/* constants for struct zip_file's member flags */
+/* error source for layered sources */
-#define ZIP_ZF_EOF 1 /* EOF reached */
-#define ZIP_ZF_DECOMP 2 /* decompress data */
-#define ZIP_ZF_CRC 4 /* compute and compare CRC */
+enum zip_les { ZIP_LES_NONE, ZIP_LES_UPPER, ZIP_LES_LOWER, ZIP_LES_INVAL };
/* directory entry: general purpose bit flags */
@@ -114,12 +188,14 @@ struct zip {
unsigned int flags; /* archive global flags */
unsigned int ch_flags; /* changed archive global flags */
+ char *default_password; /* password used when no other supplied */
+
struct zip_cdir *cdir; /* central directory */
char *ch_comment; /* changed archive comment */
int ch_comment_len; /* length of changed zip archive
* comment, -1 if unchanged */
- int nentry; /* number of entries */
- int nentry_alloc; /* number of entries allocated */
+ zip_uint64_t nentry; /* number of entries */
+ zip_uint64_t nentry_alloc; /* number of entries allocated */
struct zip_entry *entry; /* entries */
int nfile; /* number of opened files within archive */
int nfile_alloc; /* number of files allocated */
@@ -131,18 +207,8 @@ struct zip {
struct zip_file {
struct zip *za; /* zip archive containing this file */
struct zip_error error; /* error information */
- int flags; /* -1: eof, >0: error */
-
- int method; /* compression method */
- off_t fpos; /* position within zip file (fread/fwrite) */
- unsigned long bytes_left; /* number of bytes left to read */
- unsigned long cbytes_left; /* number of bytes of compressed data left */
-
- unsigned long crc; /* CRC so far */
- unsigned long crc_orig; /* CRC recorded in archive */
-
- char *buffer;
- z_stream *zstr;
+ int eof;
+ struct zip_source *src; /* data source */
};
/* zip archive directory entry (central or local) */
@@ -183,8 +249,14 @@ struct zip_cdir {
struct zip_source {
- zip_source_callback f;
+ struct zip_source *src;
+ union {
+ zip_source_callback f;
+ zip_source_layered_callback l;
+ } cb;
void *ud;
+ enum zip_les error_source;
+ int is_open;
};
/* entry in zip archive directory */
@@ -193,6 +265,8 @@ struct zip_entry {
enum zip_state state;
struct zip_source *source;
char *ch_filename;
+ char *ch_extra;
+ int ch_extra_len;
char *ch_comment;
int ch_comment_len;
};
@@ -209,6 +283,8 @@ extern const int _zip_err_type[];
((x)->state == ZIP_ST_REPLACED \
|| (x)->state == ZIP_ST_ADDED)
+#define ZIP_IS_RDONLY(za) ((za)->ch_flags & ZIP_AFL_RDONLY)
+
int _zip_cdir_compute_crc(struct zip *, uLong *);
@@ -220,7 +296,7 @@ int _zip_cdir_write(struct zip_cdir *, FILE *, struct zip_error *);
void _zip_dirent_finalize(struct zip_dirent *);
void _zip_dirent_init(struct zip_dirent *);
int _zip_dirent_read(struct zip_dirent *, FILE *, unsigned char **,
- unsigned int *, int, struct zip_error *);
+ zip_uint32_t *, int, struct zip_error *);
void _zip_dirent_torrent_normalize(struct zip_dirent *);
int _zip_dirent_write(struct zip_dirent *, FILE *, int, struct zip_error *);
@@ -234,6 +310,7 @@ void _zip_error_fini(struct zip_error *);
void _zip_error_get(struct zip_error *, int *, int *);
void _zip_error_init(struct zip_error *);
void _zip_error_set(struct zip_error *, int, int);
+void _zip_error_set_from_source(struct zip_error *, struct zip_source *);
const char *_zip_error_strerror(struct zip_error *);
int _zip_file_fillbuf(void *, size_t, struct zip_file *);
@@ -241,20 +318,27 @@ unsigned int _zip_file_get_offset(struct zip *, int);
int _zip_filerange_crc(FILE *, off_t, off_t, uLong *, struct zip_error *);
+struct zip *_zip_open(const char *, FILE *, int, int, int *);
+
struct zip_source *_zip_source_file_or_p(struct zip *, const char *, FILE *,
- off_t, off_t);
+ zip_uint64_t, zip_int64_t, int,
+ const struct zip_stat *);
+struct zip_source *_zip_source_new(struct zip *);
+int _zip_changed(struct zip *, int *);
void _zip_free(struct zip *);
-const char *_zip_get_name(struct zip *, int, int, struct zip_error *);
+const char *_zip_get_name(struct zip *, zip_uint64_t, int, struct zip_error *);
int _zip_local_header_read(struct zip *, int);
void *_zip_memdup(const void *, size_t, struct zip_error *);
int _zip_name_locate(struct zip *, const char *, int, struct zip_error *);
struct zip *_zip_new(struct zip_error *);
unsigned short _zip_read2(unsigned char **);
unsigned int _zip_read4(unsigned char **);
-int _zip_replace(struct zip *, int, const char *, struct zip_source *);
-int _zip_set_name(struct zip *, int, const char *);
-int _zip_unchange(struct zip *, int, int);
+zip_int64_t _zip_replace(struct zip *, zip_uint64_t, const char *,
+ struct zip_source *);
+int _zip_set_name(struct zip *, zip_uint64_t, const char *);
+void _zip_u2d_time(time_t, unsigned short *, unsigned short *);
+int _zip_unchange(struct zip *, zip_uint64_t, int);
void _zip_unchange_data(struct zip_entry *);
#endif /* zipint.h */
diff --git a/ext/zip/php_zip.c b/ext/zip/php_zip.c
index 55386558b..74f868b5c 100644
--- a/ext/zip/php_zip.c
+++ b/ext/zip/php_zip.c
@@ -1152,7 +1152,13 @@ static void php_zip_free_entry(zend_rsrc_list_entry *rsrc TSRMLS_DC)
if (zr_rsrc) {
if (zr_rsrc->zf) {
- zip_fclose(zr_rsrc->zf);
+ if (zr_rsrc->zf->za) {
+ zip_fclose(zr_rsrc->zf);
+ } else {
+ if (zr_rsrc->zf->src)
+ zip_source_free(zr_rsrc->zf->src);
+ free(zr_rsrc->zf);
+ }
zr_rsrc->zf = NULL;
}
efree(zr_rsrc);
@@ -1321,9 +1327,8 @@ static PHP_NAMED_FUNCTION(zif_zip_entry_open)
}
/* }}} */
-/* {{{ proto void zip_entry_close(resource zip_ent)
+/* {{{ proto bool zip_entry_close(resource zip_ent)
Close a zip entry */
-/* another dummy function to fit in the old api*/
static PHP_NAMED_FUNCTION(zif_zip_entry_close)
{
zval * zip_entry;
@@ -1334,8 +1339,8 @@ static PHP_NAMED_FUNCTION(zif_zip_entry_close)
}
ZEND_FETCH_RESOURCE(zr_rsrc, zip_read_rsrc *, &zip_entry, -1, le_zip_entry_name, le_zip_entry);
- /* we got a zip_entry resource, be happy */
- RETURN_TRUE;
+
+ RETURN_BOOL(SUCCESS == zend_list_delete(Z_LVAL_P(zip_entry)));
}
/* }}} */
@@ -2863,7 +2868,7 @@ static PHP_MINFO_FUNCTION(zip)
php_info_print_table_row(2, "Zip", "enabled");
php_info_print_table_row(2, "Extension Version","$Id$");
php_info_print_table_row(2, "Zip version", PHP_ZIP_VERSION_STRING);
- php_info_print_table_row(2, "Libzip version", "0.9.0");
+ php_info_print_table_row(2, "Libzip version", LIBZIP_VERSION);
php_info_print_table_end();
}
diff --git a/ext/zip/php_zip.h b/ext/zip/php_zip.h
index a321d90b0..f848ade8b 100644
--- a/ext/zip/php_zip.h
+++ b/ext/zip/php_zip.h
@@ -30,7 +30,7 @@ extern zend_module_entry zip_module_entry;
#include "lib/zip.h"
-#define PHP_ZIP_VERSION_STRING "1.9.1"
+#define PHP_ZIP_VERSION_STRING "1.11.0"
#if ((PHP_MAJOR_VERSION >= 5 && PHP_MINOR_VERSION >= 2) || PHP_MAJOR_VERSION >= 6)
# define PHP_ZIP_USE_OO 1
diff --git a/ext/zip/tests/pecl12414.phpt b/ext/zip/tests/pecl12414.phpt
index ab11d21a6..61546386a 100644
--- a/ext/zip/tests/pecl12414.phpt
+++ b/ext/zip/tests/pecl12414.phpt
@@ -35,5 +35,4 @@ if ($res === TRUE) {
?>
--DONE--
--EXPECTF--
-ZIP contents size: %d
-zip_readfile recorded data does not match unpacked size: %specl12414.zip : MYLOGOV2.GFX
+zip_readfile could not read from %specl12414.zip : MYLOGOV2.GFX
diff --git a/ext/zlib/tests/func.inc b/ext/zlib/tests/func.inc
new file mode 100644
index 000000000..0a422cab7
--- /dev/null
+++ b/ext/zlib/tests/func.inc
@@ -0,0 +1,17 @@
+<?php
+
+function get_zlib_version()
+{
+ $version = NULL;
+
+ ob_start();
+ phpinfo();
+ $info = ob_get_contents();
+ ob_end_clean();
+ if (preg_match(',zlib.*Compiled Version => (\d+\.\d+\.\d+),s', $info, $match)) {
+ $version = $match[1];
+ }
+
+ return $version;
+}
+
diff --git a/ext/zlib/tests/gzgetc_basic.phpt b/ext/zlib/tests/gzgetc_basic.phpt
index ca2e38c0e..5c814e0d1 100644
--- a/ext/zlib/tests/gzgetc_basic.phpt
+++ b/ext/zlib/tests/gzgetc_basic.phpt
@@ -1,10 +1,14 @@
--TEST--
-Test function gzgetc() by calling it with its expected arguments
+Test function gzgetc() by calling it with its expected arguments zlib 1.2.5
--SKIPIF--
<?php
if (!extension_loaded("zlib")) {
print "skip - ZLIB extension not loaded";
}
+include 'func.inc';
+if (version_compare(get_zlib_version(), '1.2.5') > 0) {
+ die('skip - only for zlib <= 1.2.5');
+}
?>
--FILE--
<?php
@@ -35,4 +39,4 @@ as it turns around
and I know that it descends down on me
characters counted=176
-===DONE=== \ No newline at end of file
+===DONE===
diff --git a/ext/zlib/tests/gzgetc_basic_1.phpt b/ext/zlib/tests/gzgetc_basic_1.phpt
new file mode 100644
index 000000000..59e3eb623
--- /dev/null
+++ b/ext/zlib/tests/gzgetc_basic_1.phpt
@@ -0,0 +1,43 @@
+--TEST--
+Test function gzgetc() by calling it with its expected arguments zlib 1.2.7
+--SKIPIF--
+<?php
+if (!extension_loaded("zlib")) {
+ print "skip - ZLIB extension not loaded";
+}
+include 'func.inc';
+if (version_compare(get_zlib_version(), '1.2.7') < 0) {
+ die('skip - only for zlib >= 1.2.7');
+}
+?>
+--FILE--
+<?php
+
+// note that gzgets is an alias to fgets. parameter checking tests will be
+// the same as gzgets
+
+$f = dirname(__FILE__)."/004.txt.gz";
+$h = gzopen($f, 'r');
+if ($h) {
+ $count = 0;
+ while (($c = fgetc( $h )) !== false) {
+ $count++;
+ echo $c;
+ }
+
+ echo "\ncharacters counted=$count\n";
+ gzclose($h);
+}
+
+?>
+===DONE===
+--EXPECT--
+When you're taught through feelings
+Destiny flying high above
+all I know is that you can realize it
+Destiny who cares
+as it turns around
+and I know that it descends down on me
+
+characters counted=176
+===DONE===
diff --git a/main/main.c b/main/main.c
index c34f95243..709c6dd3d 100644
--- a/main/main.c
+++ b/main/main.c
@@ -1080,7 +1080,7 @@ static void php_error_cb(int type, const char *error_filename, const uint error_
PG(display_errors) == PHP_DISPLAY_ERRORS_STDERR
) {
#ifdef PHP_WIN32
- fprintf(stderr, "%s: %s in %s on line%d\n", error_type_str, buffer, error_filename, error_lineno);
+ fprintf(stderr, "%s: %s in %s on line %d\n", error_type_str, buffer, error_filename, error_lineno);
fflush(stderr);
#else
fprintf(stderr, "%s: %s in %s on line %d\n", error_type_str, buffer, error_filename, error_lineno);
diff --git a/main/php_config.h.in b/main/php_config.h.in
index 326dc7bc7..cd96c1418 100644
--- a/main/php_config.h.in
+++ b/main/php_config.h.in
@@ -1498,6 +1498,9 @@
/* */
#undef HAVE_SAPDB
+/* Whether you have sockaddr_storage.ss_family */
+#undef HAVE_SA_SS_FAMILY
+
/* Define to 1 if you have the `scandir' function. */
#undef HAVE_SCANDIR
diff --git a/main/php_version.h b/main/php_version.h
index 4f953462a..7db820ebd 100644
--- a/main/php_version.h
+++ b/main/php_version.h
@@ -2,7 +2,7 @@
/* edit configure.in to change version number */
#define PHP_MAJOR_VERSION 5
#define PHP_MINOR_VERSION 4
-#define PHP_RELEASE_VERSION 4
+#define PHP_RELEASE_VERSION 5
#define PHP_EXTRA_VERSION ""
-#define PHP_VERSION "5.4.4"
-#define PHP_VERSION_ID 50404
+#define PHP_VERSION "5.4.5"
+#define PHP_VERSION_ID 50405
diff --git a/main/streams/streams.c b/main/streams/streams.c
index db6e25f68..e9c2e0732 100755
--- a/main/streams/streams.c
+++ b/main/streams/streams.c
@@ -2332,8 +2332,8 @@ PHPAPI int _php_stream_scandir(char *dirname, char **namelist[], int flags, php_
php_stream *stream;
php_stream_dirent sdp;
char **vector = NULL;
- int vector_size = 0;
- int nfiles = 0;
+ unsigned int vector_size = 0;
+ unsigned int nfiles = 0;
if (!namelist) {
return FAILURE;
@@ -2349,14 +2349,24 @@ PHPAPI int _php_stream_scandir(char *dirname, char **namelist[], int flags, php_
if (vector_size == 0) {
vector_size = 10;
} else {
+ if(vector_size*2 < vector_size) {
+ /* overflow */
+ efree(vector);
+ return FAILURE;
+ }
vector_size *= 2;
}
- vector = (char **) erealloc(vector, vector_size * sizeof(char *));
+ vector = (char **) safe_erealloc(vector, vector_size, sizeof(char *), 0);
}
vector[nfiles] = estrdup(sdp.d_name);
nfiles++;
+ if(vector_size < 10 || nfiles == 0) {
+ /* overflow */
+ efree(vector);
+ return FAILURE;
+ }
}
php_stream_closedir(stream);
diff --git a/makedist b/makedist
index 4d704cf7c..bfc8fcc44 100755
--- a/makedist
+++ b/makedist
@@ -69,9 +69,6 @@ echo ""
cd $DIR || exit 5
-# The full ChangeLog is available separately from lxr.php.net
-rm -f ChangeLog*
-
# hide away our own versions of libtool-generated files
for i in $LT_TARGETS; do
if test -f "$i"; then
diff --git a/php.ini-development b/php.ini-development
index 8e7073895..298cb06a7 100644
--- a/php.ini-development
+++ b/php.ini-development
@@ -751,7 +751,7 @@ enable_dl = Off
; will look for to know it is OK to continue execution. Setting this variable MAY
; cause security issues, KNOW WHAT YOU ARE DOING FIRST.
; http://php.net/cgi.redirect-status-env
-;cgi.redirect_status_env = ;
+;cgi.redirect_status_env =
; cgi.fix_pathinfo provides *real* PATH_INFO/PATH_TRANSLATED support for CGI. PHP's
; previous behaviour was to set PATH_TRANSLATED to SCRIPT_FILENAME, and to not grok
@@ -768,7 +768,7 @@ enable_dl = Off
; does not currently support this feature (03/17/2002)
; Set to 1 if running under IIS. Default is zero.
; http://php.net/fastcgi.impersonate
-;fastcgi.impersonate = 1;
+;fastcgi.impersonate = 1
; Disable logging through FastCGI connection. PHP's default behavior is to enable
; this feature.
diff --git a/php.ini-production b/php.ini-production
index e8d1c748e..d4c1261fc 100644
--- a/php.ini-production
+++ b/php.ini-production
@@ -751,7 +751,7 @@ enable_dl = Off
; will look for to know it is OK to continue execution. Setting this variable MAY
; cause security issues, KNOW WHAT YOU ARE DOING FIRST.
; http://php.net/cgi.redirect-status-env
-;cgi.redirect_status_env = ;
+;cgi.redirect_status_env =
; cgi.fix_pathinfo provides *real* PATH_INFO/PATH_TRANSLATED support for CGI. PHP's
; previous behaviour was to set PATH_TRANSLATED to SCRIPT_FILENAME, and to not grok
@@ -768,7 +768,7 @@ enable_dl = Off
; does not currently support this feature (03/17/2002)
; Set to 1 if running under IIS. Default is zero.
; http://php.net/fastcgi.impersonate
-;fastcgi.impersonate = 1;
+;fastcgi.impersonate = 1
; Disable logging through FastCGI connection. PHP's default behavior is to enable
; this feature.
diff --git a/run-tests.php b/run-tests.php
index 1fe0deb6a..2a4698639 100755
--- a/run-tests.php
+++ b/run-tests.php
@@ -1,4 +1,4 @@
-#!/usr/bin/php
+#!/usr/bin/env php
<?php
/*
+----------------------------------------------------------------------+
@@ -239,10 +239,7 @@ $ini_overwrites = array(
'magic_quotes_runtime=0',
'ignore_repeated_errors=0',
'precision=14',
- 'unicode.runtime_encoding=ISO-8859-1',
- 'unicode.script_encoding=UTF-8',
- 'unicode.output_encoding=UTF-8',
- 'unicode.from_error_mode=U_INVALID_SUBSTITUTE',
+ 'memory_limit=128M',
);
function write_information($show_html)
@@ -2092,8 +2089,10 @@ $output
if (isset($old_php)) {
$php = $old_php;
}
+
+ $diff = empty($diff) ? '' : "<![CDATA[\n " . preg_replace('/\e/', '<esc>', $diff) . "\n]]>";
- junit_mark_test_as($restype, str_replace($cwd . '/', '', $tested_file), $tested, null, $info, "<![CDATA[\n " . preg_replace('/\e/', '<esc>', $diff) . "\n]]>");
+ junit_mark_test_as($restype, str_replace($cwd . '/', '', $tested_file), $tested, null, $info, $diff);
return $restype[0] . 'ED';
}
diff --git a/sapi/cgi/tests/apache_request_headers.phpt b/sapi/cgi/tests/apache_request_headers.phpt
index 2c82d57b2..3dc3580c2 100644
--- a/sapi/cgi/tests/apache_request_headers.phpt
+++ b/sapi/cgi/tests/apache_request_headers.phpt
@@ -1,5 +1,7 @@
--TEST--
apache_request_headers() stack overflow.
+--INI--
+default_charset="UTF-8"
--SKIPIF--
<?php
include "skipif.inc";
@@ -29,7 +31,7 @@ echo "Done\n";
?>
--EXPECTF--
X-Powered-By: PHP/%s
-Content-type: text/html
+Content-type: text/html; charset=UTF-8
Array
(
diff --git a/sapi/cli/php_cli.c b/sapi/cli/php_cli.c
index 205b9db3f..2cdd1aac6 100644
--- a/sapi/cli/php_cli.c
+++ b/sapi/cli/php_cli.c
@@ -1173,6 +1173,9 @@ out:
if (request_started) {
php_request_shutdown((void *) 0);
}
+ if (translated_path) {
+ free(translated_path);
+ }
return exit_status;
err:
sapi_deactivate(TSRMLS_C);
diff --git a/sapi/cli/php_cli_server.c b/sapi/cli/php_cli_server.c
index 87ab7b48f..876c57a34 100644
--- a/sapi/cli/php_cli_server.c
+++ b/sapi/cli/php_cli_server.c
@@ -1826,6 +1826,9 @@ static int php_cli_server_send_error_page(php_cli_server *server, php_cli_server
return SUCCESS;
fail:
+ if (errstr) {
+ pefree(errstr, 1);
+ }
efree(escaped_request_uri);
return FAILURE;
} /* }}} */
diff --git a/sapi/cli/tests/bug61546.phpt b/sapi/cli/tests/bug61546.phpt
index 2cd690f65..071edb722 100644
--- a/sapi/cli/tests/bug61546.phpt
+++ b/sapi/cli/tests/bug61546.phpt
@@ -2,13 +2,22 @@
Bug #61546 (functions related to current script failed when chdir() in cli sapi)
--FILE--
<?php
+// reference doc for getmyinode() on php.net states that it returns an integer or FALSE on error
+// on Windows, getmyinode() returns 0 which normally casts to FALSE
+// however, the implementation of getmyinode() (in pageinfo.c) returns an explicit FALSE in the
+// event that the internal page_inode structure is less than 0, otherwise it returns the long value
+// of page_inode. therefore, an explicit 0 should be a passing value for this test.
+//
+// the ext/standard/tests/file/statpage.phpt test also tests getmyinode() returns an integer and will
+// pass even if that integer is 0. on Windows, the getmyinode() call in statpage.phpt returns 0 and
+// passes on Windows.
$php = getenv("TEST_PHP_EXECUTABLE");
$test_code = <<<PHP
<?php
chdir('..');
var_dump(get_current_user() != "");
chdir('..');
-var_dump(getmyinode() != false);
+var_dump(getmyinode() !== false);
var_dump(getlastmod() != false);
PHP;
diff --git a/sapi/fpm/config.m4 b/sapi/fpm/config.m4
index 89628100b..ad46717ac 100644
--- a/sapi/fpm/config.m4
+++ b/sapi/fpm/config.m4
@@ -16,6 +16,7 @@ AC_DEFUN([AC_FPM_STDLIBS],
AC_CHECK_HEADERS([errno.h fcntl.h stdio.h stdlib.h unistd.h sys/uio.h])
AC_CHECK_HEADERS([sys/select.h sys/socket.h sys/time.h])
AC_CHECK_HEADERS([arpa/inet.h netinet/in.h])
+ AC_CHECK_HEADERS([sysexits.h])
])
AC_DEFUN([AC_FPM_PRCTL],
@@ -192,6 +193,8 @@ AC_DEFUN([AC_FPM_TRACE],
have_ptrace=no
have_broken_ptrace=yes
AC_MSG_RESULT([no])
+ ], [
+ AC_MSG_RESULT([skipped (cross compiling)])
])
fi
@@ -264,6 +267,8 @@ AC_DEFUN([AC_FPM_TRACE],
], [
proc_mem_file=""
AC_MSG_RESULT([no])
+ ], [
+ AC_MSG_RESULT([skipped (cross compiling)])
])
fi
diff --git a/sapi/fpm/fpm/fastcgi.c b/sapi/fpm/fpm/fastcgi.c
index 212b6ff1d..e2e208aa7 100644
--- a/sapi/fpm/fpm/fastcgi.c
+++ b/sapi/fpm/fpm/fastcgi.c
@@ -399,7 +399,7 @@ static inline int fcgi_param_get_eff_len( unsigned char *p, unsigned char *end,
{
int ret = 1;
int zero_found = 0;
- *eff_len = 0;
+ *eff_len = 0;
for (; p != end; ++p) {
if (*p == '\0') {
zero_found = 1;
@@ -427,7 +427,7 @@ static int fcgi_get_params(fcgi_request *req, unsigned char *p, unsigned char *e
char *tmp = buf;
size_t buf_size = sizeof(buf);
int name_len, val_len;
- uint eff_name_len, eff_val_len;
+ uint eff_name_len;
char *s;
int ret = 1;
size_t bytes_consumed;
@@ -453,8 +453,12 @@ static int fcgi_get_params(fcgi_request *req, unsigned char *p, unsigned char *e
ret = 0;
break;
}
- if (!fcgi_param_get_eff_len(p, p+name_len, &eff_name_len) ||
- !fcgi_param_get_eff_len(p+name_len, p+name_len+val_len, &eff_val_len)) {
+
+ /*
+ * get the effective length of the name in case it's not a valid string
+ * don't do this on the value because it can be binary data
+ */
+ if (!fcgi_param_get_eff_len(p, p+name_len, &eff_name_len)){
/* Malicious request */
ret = 0;
break;
@@ -473,7 +477,7 @@ static int fcgi_get_params(fcgi_request *req, unsigned char *p, unsigned char *e
}
memcpy(tmp, p, eff_name_len);
tmp[eff_name_len] = 0;
- s = estrndup((char*)p + name_len, eff_val_len);
+ s = estrndup((char*)p + name_len, val_len);
if (s == NULL) {
ret = 0;
break;
diff --git a/sapi/fpm/fpm/fpm.c b/sapi/fpm/fpm/fpm.c
index 96aabbfc4..dab415d12 100644
--- a/sapi/fpm/fpm/fpm.c
+++ b/sapi/fpm/fpm/fpm.c
@@ -37,10 +37,12 @@ struct fpm_globals_s fpm_globals = {
.max_requests = 0,
.is_child = 0,
.test_successful = 0,
- .heartbeat = 0
+ .heartbeat = 0,
+ .run_as_root = 0,
+ .send_config_signal = 0,
};
-int fpm_init(int argc, char **argv, char *config, char *prefix, char *pid, int test_conf) /* {{{ */
+int fpm_init(int argc, char **argv, char *config, char *prefix, char *pid, int test_conf, int run_as_root) /* {{{ */
{
fpm_globals.argc = argc;
fpm_globals.argv = argv;
@@ -49,6 +51,7 @@ int fpm_init(int argc, char **argv, char *config, char *prefix, char *pid, int t
}
fpm_globals.prefix = prefix;
fpm_globals.pid = pid;
+ fpm_globals.run_as_root = run_as_root;
if (0 > fpm_php_init_main() ||
0 > fpm_stdio_init_main() ||
@@ -64,7 +67,7 @@ int fpm_init(int argc, char **argv, char *config, char *prefix, char *pid, int t
0 > fpm_event_init_main()) {
if (fpm_globals.test_successful) {
- exit(0);
+ exit(FPM_EXIT_OK);
} else {
zlog(ZLOG_ERROR, "FPM initialization failed");
return -1;
diff --git a/sapi/fpm/fpm/fpm.h b/sapi/fpm/fpm/fpm.h
index bfeac4d67..7a2903d07 100644
--- a/sapi/fpm/fpm/fpm.h
+++ b/sapi/fpm/fpm/fpm.h
@@ -7,8 +7,37 @@
#include <unistd.h>
+#ifdef HAVE_SYSEXITS_H
+#include <sysexits.h>
+#endif
+
+#ifdef EX_OK
+#define FPM_EXIT_OK EX_OK
+#else
+#define FPM_EXIT_OK 0
+#endif
+
+#ifdef EX_USAGE
+#define FPM_EXIT_USAGE EX_USAGE
+#else
+#define FPM_EXIT_USAGE 64
+#endif
+
+#ifdef EX_SOFTWARE
+#define FPM_EXIT_SOFTWARE EX_SOFTWARE
+#else
+#define FPM_EXIT_SOFTWARE 70
+#endif
+
+#ifdef EX_CONFIG
+#define FPM_EXIT_CONFIG EX_CONFIG
+#else
+#define FPM_EXIT_CONFIG 78
+#endif
+
+
int fpm_run(int *max_requests);
-int fpm_init(int argc, char **argv, char *config, char *prefix, char *pid, int test_conf);
+int fpm_init(int argc, char **argv, char *config, char *prefix, char *pid, int test_conf, int run_as_root);
struct fpm_globals_s {
pid_t parent_pid;
@@ -25,6 +54,8 @@ struct fpm_globals_s {
int is_child;
int test_successful;
int heartbeat;
+ int run_as_root;
+ int send_config_signal;
};
extern struct fpm_globals_s fpm_globals;
diff --git a/sapi/fpm/fpm/fpm_children.c b/sapi/fpm/fpm/fpm_children.c
index 35058b0ea..84a947433 100644
--- a/sapi/fpm/fpm/fpm_children.c
+++ b/sapi/fpm/fpm/fpm_children.c
@@ -156,7 +156,7 @@ static void fpm_child_init(struct fpm_worker_pool_s *wp) /* {{{ */
0 > fpm_php_init_child(wp)) {
zlog(ZLOG_ERROR, "[pool %s] child failed to initialize", wp->config->name);
- exit(255);
+ exit(FPM_EXIT_SOFTWARE);
}
}
/* }}} */
@@ -198,7 +198,7 @@ void fpm_children_bury() /* {{{ */
restart_child = 0;
}
- if (WEXITSTATUS(status) != 0) {
+ if (WEXITSTATUS(status) != FPM_EXIT_OK) {
severity = ZLOG_WARNING;
}
diff --git a/sapi/fpm/fpm/fpm_conf.c b/sapi/fpm/fpm/fpm_conf.c
index 304076d35..dfe6792c0 100644
--- a/sapi/fpm/fpm/fpm_conf.c
+++ b/sapi/fpm/fpm/fpm_conf.c
@@ -53,7 +53,9 @@
static int fpm_conf_load_ini_file(char *filename TSRMLS_DC);
static char *fpm_conf_set_integer(zval *value, void **config, intptr_t offset);
+#if 0 /* not used for now */
static char *fpm_conf_set_long(zval *value, void **config, intptr_t offset);
+#endif
static char *fpm_conf_set_time(zval *value, void **config, intptr_t offset);
static char *fpm_conf_set_boolean(zval *value, void **config, intptr_t offset);
static char *fpm_conf_set_string(zval *value, void **config, intptr_t offset);
@@ -70,6 +72,7 @@ struct fpm_global_config_s fpm_global_config = {
.syslog_facility = -1,
#endif
.process_max = 0,
+ .process_priority = 64, /* 64 means unset */
};
static struct fpm_worker_pool_s *current_wp = NULL;
static int ini_recursion = 0;
@@ -92,6 +95,7 @@ static struct ini_value_parser_s ini_fpm_global_options[] = {
{ "emergency_restart_interval", &fpm_conf_set_time, GO(emergency_restart_interval) },
{ "process_control_timeout", &fpm_conf_set_time, GO(process_control_timeout) },
{ "process.max", &fpm_conf_set_integer, GO(process_max) },
+ { "process.priority", &fpm_conf_set_integer, GO(process_priority) },
{ "daemonize", &fpm_conf_set_boolean, GO(daemonize) },
{ "rlimit_files", &fpm_conf_set_integer, GO(rlimit_files) },
{ "rlimit_core", &fpm_conf_set_rlimit_core, GO(rlimit_core) },
@@ -112,6 +116,7 @@ static struct ini_value_parser_s ini_fpm_pool_options[] = {
{ "listen.group", &fpm_conf_set_string, WPO(listen_group) },
{ "listen.mode", &fpm_conf_set_string, WPO(listen_mode) },
{ "listen.allowed_clients", &fpm_conf_set_string, WPO(listen_allowed_clients) },
+ { "process.priority", &fpm_conf_set_integer, WPO(process_priority) },
{ "pm", &fpm_conf_set_pm, WPO(pm) },
{ "pm.max_children", &fpm_conf_set_integer, WPO(pm_max_children) },
{ "pm.start_servers", &fpm_conf_set_integer, WPO(pm_start_servers) },
@@ -239,6 +244,7 @@ static char *fpm_conf_set_integer(zval *value, void **config, intptr_t offset) /
}
/* }}} */
+#if 0 /* not used for now */
static char *fpm_conf_set_long(zval *value, void **config, intptr_t offset) /* {{{ */
{
char *val = Z_STRVAL_P(value);
@@ -254,6 +260,7 @@ static char *fpm_conf_set_long(zval *value, void **config, intptr_t offset) /* {
return NULL;
}
/* }}} */
+#endif
static char *fpm_conf_set_time(zval *value, void **config, intptr_t offset) /* {{{ */
{
@@ -577,6 +584,7 @@ static void *fpm_worker_pool_config_alloc() /* {{{ */
memset(wp->config, 0, sizeof(struct fpm_worker_pool_config_s));
wp->config->listen_backlog = FPM_BACKLOG_DEFAULT;
wp->config->pm_process_idle_timeout = 10; /* 10s by default */
+ wp->config->process_priority = 64; /* 64 means unset */
if (!fpm_worker_all_pools) {
fpm_worker_all_pools = wp;
@@ -704,7 +712,7 @@ static int fpm_evaluate_full_path(char **path, struct fpm_worker_pool_s *wp, cha
static int fpm_conf_process_all_pools() /* {{{ */
{
- struct fpm_worker_pool_s *wp;
+ struct fpm_worker_pool_s *wp, *wp2;
if (!fpm_worker_all_pools) {
zlog(ZLOG_ERROR, "No pool defined. at least one pool section must be specified in config file");
@@ -723,8 +731,8 @@ static int fpm_conf_process_all_pools() /* {{{ */
}
}
- /* user */
- if (!wp->config->user) {
+ /* alert if user is not set only if we are not root*/
+ if (!wp->config->user && !geteuid()) {
zlog(ZLOG_ALERT, "[pool %s] user has not been defined", wp->config->name);
return -1;
}
@@ -741,6 +749,11 @@ static int fpm_conf_process_all_pools() /* {{{ */
return -1;
}
+ if (wp->config->process_priority != 64 && (wp->config->process_priority < -19 || wp->config->process_priority > 20)) {
+ zlog(ZLOG_ERROR, "[pool %s] process.priority must be included into [-19,20]", wp->config->name);
+ return -1;
+ }
+
/* pm */
if (wp->config->pm != PM_STYLE_STATIC && wp->config->pm != PM_STYLE_DYNAMIC && wp->config->pm != PM_STYLE_ONDEMAND) {
zlog(ZLOG_ALERT, "[pool %s] the process manager is missing (static, dynamic or ondemand)", wp->config->name);
@@ -1044,6 +1057,20 @@ static int fpm_conf_process_all_pools() /* {{{ */
}
}
}
+
+ /* ensure 2 pools do not use the same listening address */
+ for (wp = fpm_worker_all_pools; wp; wp = wp->next) {
+ for (wp2 = fpm_worker_all_pools; wp2; wp2 = wp2->next) {
+ if (wp == wp2) {
+ continue;
+ }
+
+ if (wp->config->listen_address && *wp->config->listen_address && wp2->config->listen_address && *wp2->config->listen_address && !strcmp(wp->config->listen_address, wp2->config->listen_address)) {
+ zlog(ZLOG_ERROR, "[pool %s] unable to set listen address as it's already used in another pool '%s'", wp2->config->name, wp->config->name);
+ return -1;
+ }
+ }
+ }
return 0;
}
/* }}} */
@@ -1103,6 +1130,11 @@ static int fpm_conf_post_process(TSRMLS_D) /* {{{ */
return -1;
}
+ if (fpm_global_config.process_priority != 64 && (fpm_global_config.process_priority < -19 || fpm_global_config.process_priority > 20)) {
+ zlog(ZLOG_ERROR, "process.priority must be included into [-19,20]");
+ return -1;
+ }
+
if (!fpm_global_config.error_log) {
fpm_global_config.error_log = strdup("log/php-fpm.log");
}
@@ -1485,6 +1517,11 @@ static void fpm_conf_dump() /* {{{ */
zlog(ZLOG_NOTICE, "\temergency_restart_threshold = %d", fpm_global_config.emergency_restart_threshold);
zlog(ZLOG_NOTICE, "\tprocess_control_timeout = %ds", fpm_global_config.process_control_timeout);
zlog(ZLOG_NOTICE, "\tprocess.max = %d", fpm_global_config.process_max);
+ if (fpm_global_config.process_priority == 64) {
+ zlog(ZLOG_NOTICE, "\tprocess.priority = undefined");
+ } else {
+ zlog(ZLOG_NOTICE, "\tprocess.priority = %d", fpm_global_config.process_priority);
+ }
zlog(ZLOG_NOTICE, "\tdaemonize = %s", BOOL2STR(fpm_global_config.daemonize));
zlog(ZLOG_NOTICE, "\trlimit_files = %d", fpm_global_config.rlimit_files);
zlog(ZLOG_NOTICE, "\trlimit_core = %d", fpm_global_config.rlimit_core);
@@ -1504,6 +1541,11 @@ static void fpm_conf_dump() /* {{{ */
zlog(ZLOG_NOTICE, "\tlisten.group = %s", STR2STR(wp->config->listen_group));
zlog(ZLOG_NOTICE, "\tlisten.mode = %s", STR2STR(wp->config->listen_mode));
zlog(ZLOG_NOTICE, "\tlisten.allowed_clients = %s", STR2STR(wp->config->listen_allowed_clients));
+ if (wp->config->process_priority == 64) {
+ zlog(ZLOG_NOTICE, "\tprocess.priority = undefined");
+ } else {
+ zlog(ZLOG_NOTICE, "\tprocess.priority = %d", wp->config->process_priority);
+ }
zlog(ZLOG_NOTICE, "\tpm = %s", PM2STR(wp->config->pm));
zlog(ZLOG_NOTICE, "\tpm.max_children = %d", wp->config->pm_max_children);
zlog(ZLOG_NOTICE, "\tpm.start_servers = %d", wp->config->pm_start_servers);
diff --git a/sapi/fpm/fpm/fpm_conf.h b/sapi/fpm/fpm/fpm_conf.h
index 9fbd5064c..f780f0389 100644
--- a/sapi/fpm/fpm/fpm_conf.h
+++ b/sapi/fpm/fpm/fpm_conf.h
@@ -35,6 +35,7 @@ struct fpm_global_config_s {
int emergency_restart_interval;
int process_control_timeout;
int process_max;
+ int process_priority;
int daemonize;
int rlimit_files;
int rlimit_core;
@@ -57,6 +58,7 @@ struct fpm_worker_pool_config_s {
char *listen_group;
char *listen_mode;
char *listen_allowed_clients;
+ int process_priority;
int pm;
int pm_max_children;
int pm_start_servers;
diff --git a/sapi/fpm/fpm/fpm_main.c b/sapi/fpm/fpm/fpm_main.c
index 14dccbd14..83b461b79 100644
--- a/sapi/fpm/fpm/fpm_main.c
+++ b/sapi/fpm/fpm/fpm_main.c
@@ -154,6 +154,7 @@ static const opt_struct OPTIONS[] = {
{'t', 0, "test"},
{'p', 1, "prefix"},
{'g', 1, "pid"},
+ {'R', 0, "allow-to-run-as-root"},
{'-', 0, NULL} /* end of args */
};
@@ -646,12 +647,38 @@ static void sapi_cgi_register_variables(zval *track_vars_array TSRMLS_DC)
}
}
-static void sapi_cgi_log_message(char *message TSRMLS_DC)
+/* {{{ sapi_cgi_log_fastcgi
+ *
+ * Ignore level, we want to send all messages through fastcgi
+ */
+void sapi_cgi_log_fastcgi(int level, char *message, size_t len)
{
- if (CGIG(fcgi_logging)) {
- zlog(ZLOG_NOTICE, "PHP message: %s", message);
+ TSRMLS_FETCH();
+
+ fcgi_request *request = (fcgi_request*) SG(server_context);
+
+ /* ensure we want:
+ * - to log (fastcgi.logging in php.ini)
+ * - we are currently dealing with a request
+ * - the message is not empty
+ */
+ if (CGIG(fcgi_logging) && request && message && len > 0) {
+ char *buf = malloc(len + 2);
+ memcpy(buf, message, len);
+ memcpy(buf + len, "\n", sizeof("\n"));
+ fcgi_write(request, FCGI_STDERR, buf, len+1);
+ free(buf);
}
}
+/* }}} */
+
+/* {{{ sapi_cgi_log_message
+ */
+static void sapi_cgi_log_message(char *message)
+{
+ zlog(ZLOG_NOTICE, "PHP message: %s", message);
+}
+/* }}} */
/* {{{ php_cgi_ini_activate_user_config
*/
@@ -900,7 +927,9 @@ static void php_cgi_usage(char *argv0)
" Specify the PID file location.\n"
" -y, --fpm-config <file>\n"
" Specify alternative path to FastCGI process manager config file.\n"
- " -t, --test Test FPM configuration and exit\n",
+ " -t, --test Test FPM configuration and exit\n"
+ " -R, --allow-to-run-as-root\n"
+ " Allow pool to run as root (disabled by default)\n",
prog, PHP_PREFIX);
}
/* }}} */
@@ -1499,7 +1528,7 @@ static zend_module_entry cgi_module_entry = {
*/
int main(int argc, char *argv[])
{
- int exit_status = SUCCESS;
+ int exit_status = FPM_EXIT_OK;
int cgi = 0, c, use_extended_info = 0;
zend_file_handle file_handle;
@@ -1522,6 +1551,7 @@ int main(int argc, char *argv[])
char *fpm_pid = NULL;
int test_conf = 0;
int php_information = 0;
+ int php_allow_to_run_as_root = 0;
#ifdef HAVE_SIGNAL_H
#if defined(SIGPIPE) && defined(SIG_IGN)
@@ -1629,13 +1659,17 @@ int main(int argc, char *argv[])
php_output_end_all(TSRMLS_C);
php_output_deactivate(TSRMLS_C);
fcgi_shutdown();
- exit_status = 0;
+ exit_status = FPM_EXIT_OK;
goto out;
case 'i': /* php info & quit */
php_information = 1;
break;
+ case 'R': /* allow to run as root */
+ php_allow_to_run_as_root = 1;
+ break;
+
default:
case 'h':
case '?':
@@ -1646,7 +1680,7 @@ int main(int argc, char *argv[])
php_output_end_all(TSRMLS_C);
php_output_deactivate(TSRMLS_C);
fcgi_shutdown();
- exit_status = 0;
+ exit_status = (c == 'h') ? FPM_EXIT_OK : FPM_EXIT_USAGE;
goto out;
case 'v': /* show php version & quit */
@@ -1654,7 +1688,7 @@ int main(int argc, char *argv[])
if (php_request_startup(TSRMLS_C) == FAILURE) {
SG(server_context) = NULL;
php_module_shutdown(TSRMLS_C);
- return FAILURE;
+ return FPM_EXIT_SOFTWARE;
}
SG(headers_sent) = 1;
SG(request_info).no_headers = 1;
@@ -1666,7 +1700,7 @@ int main(int argc, char *argv[])
#endif
php_request_shutdown((void *) 0);
fcgi_shutdown();
- exit_status = 0;
+ exit_status = FPM_EXIT_OK;
goto out;
}
}
@@ -1677,14 +1711,14 @@ int main(int argc, char *argv[])
if (php_request_startup(TSRMLS_C) == FAILURE) {
SG(server_context) = NULL;
php_module_shutdown(TSRMLS_C);
- return FAILURE;
+ return FPM_EXIT_SOFTWARE;
}
SG(headers_sent) = 1;
SG(request_info).no_headers = 1;
php_print_info(0xFFFFFFFF TSRMLS_CC);
php_request_shutdown((void *) 0);
fcgi_shutdown();
- exit_status = 0;
+ exit_status = FPM_EXIT_OK;
goto out;
}
@@ -1697,7 +1731,7 @@ int main(int argc, char *argv[])
php_output_end_all(TSRMLS_C);
php_output_deactivate(TSRMLS_C);
fcgi_shutdown();
- exit_status = 0;
+ exit_status = FPM_EXIT_USAGE;
goto out;
}
@@ -1716,7 +1750,7 @@ int main(int argc, char *argv[])
#ifdef ZTS
tsrm_shutdown();
#endif
- return FAILURE;
+ return FPM_EXIT_SOFTWARE;
}
if (use_extended_info) {
@@ -1759,19 +1793,31 @@ consult the installation file that came with this distribution, or visit \n\
*/
tsrm_shutdown();
#endif
- return FAILURE;
+ return FPM_EXIT_SOFTWARE;
}
}
- if (0 > fpm_init(argc, argv, fpm_config ? fpm_config : CGIG(fpm_config), fpm_prefix, fpm_pid, test_conf)) {
- return FAILURE;
+ if (0 > fpm_init(argc, argv, fpm_config ? fpm_config : CGIG(fpm_config), fpm_prefix, fpm_pid, test_conf, php_allow_to_run_as_root)) {
+
+ if (fpm_globals.send_config_signal) {
+ zlog(ZLOG_DEBUG, "Sending SIGUSR2 (error) to parent %d", getppid());
+ kill(getppid(), SIGUSR2);
+ }
+ return FPM_EXIT_CONFIG;
}
+ if (fpm_globals.send_config_signal) {
+ zlog(ZLOG_DEBUG, "Sending SIGUSR1 (OK) to parent %d", getppid());
+ kill(getppid(), SIGUSR1);
+ }
fpm_is_running = 1;
fcgi_fd = fpm_run(&max_requests);
parent = 0;
+ /* onced forked tell zlog to also send messages through sapi_cgi_log_fastcgi() */
+ zlog_set_external_logger(sapi_cgi_log_fastcgi);
+
/* make php call us to get _ENV vars */
php_php_import_environment_variables = php_import_environment_variables;
php_import_environment_variables = cgi_php_import_environment_variables;
@@ -1795,7 +1841,7 @@ consult the installation file that came with this distribution, or visit \n\
fcgi_finish_request(&request, 1);
SG(server_context) = NULL;
php_module_shutdown(TSRMLS_C);
- return FAILURE;
+ return FPM_EXIT_SOFTWARE;
}
/* check if request_method has been sent.
@@ -1883,17 +1929,9 @@ fastcgi_request_done:
php_request_shutdown((void *) 0);
- if (exit_status == 0) {
- exit_status = EG(exit_status);
- }
-
requests++;
if (max_requests && (requests == max_requests)) {
fcgi_finish_request(&request, 1);
- if (max_requests != 1) {
- /* no need to return exit_status of the last request */
- exit_status = 0;
- }
break;
}
/* end of fastcgi loop */
@@ -1907,7 +1945,7 @@ fastcgi_request_done:
free(cgi_sapi_module.ini_entries);
}
} zend_catch {
- exit_status = 255;
+ exit_status = FPM_EXIT_SOFTWARE;
} zend_end_try();
out:
diff --git a/sapi/fpm/fpm/fpm_php.c b/sapi/fpm/fpm/fpm_php.c
index 840eec73e..cd4d3aef3 100644
--- a/sapi/fpm/fpm/fpm_php.c
+++ b/sapi/fpm/fpm/fpm_php.c
@@ -257,3 +257,41 @@ int fpm_php_limit_extensions(char *path) /* {{{ */
return 1; /* extension not found: not allowed */
}
/* }}} */
+
+char* fpm_php_get_string_from_table(char *table, char *key TSRMLS_DC) /* {{{ */
+{
+ zval **data, **tmp;
+ char *string_key;
+ uint string_len;
+ ulong num_key;
+ if (!table || !key) {
+ return NULL;
+ }
+
+ /* inspired from ext/standard/info.c */
+
+ zend_is_auto_global(table, strlen(table) TSRMLS_CC);
+
+ /* find the table and ensure it's an array */
+ if (zend_hash_find(&EG(symbol_table), table, strlen(table) + 1, (void **) &data) == SUCCESS && Z_TYPE_PP(data) == IS_ARRAY) {
+
+ /* reset the internal pointer */
+ zend_hash_internal_pointer_reset(Z_ARRVAL_PP(data));
+
+ /* parse the array to look for our key */
+ while (zend_hash_get_current_data(Z_ARRVAL_PP(data), (void **) &tmp) == SUCCESS) {
+ /* ensure the key is a string */
+ if (zend_hash_get_current_key_ex(Z_ARRVAL_PP(data), &string_key, &string_len, &num_key, 0, NULL) == HASH_KEY_IS_STRING) {
+ /* compare to our key */
+ if (!strncmp(string_key, key, string_len)) {
+ return Z_STRVAL_PP(tmp);
+ }
+ }
+ zend_hash_move_forward(Z_ARRVAL_PP(data));
+ }
+ }
+
+ return NULL;
+}
+/* }}} */
+
diff --git a/sapi/fpm/fpm/fpm_php.h b/sapi/fpm/fpm/fpm_php.h
index a2c7ed318..d6054737d 100644
--- a/sapi/fpm/fpm/fpm_php.h
+++ b/sapi/fpm/fpm/fpm_php.h
@@ -44,6 +44,7 @@ void fpm_php_soft_quit();
int fpm_php_init_main();
int fpm_php_apply_defines_ex(struct key_value_s *kv, int mode);
int fpm_php_limit_extensions(char *path);
+char* fpm_php_get_string_from_table(char *table, char *key TSRMLS_DC);
#endif
diff --git a/sapi/fpm/fpm/fpm_process_ctl.c b/sapi/fpm/fpm/fpm_process_ctl.c
index e698eb0ca..7840d17f8 100644
--- a/sapi/fpm/fpm/fpm_process_ctl.c
+++ b/sapi/fpm/fpm/fpm_process_ctl.c
@@ -71,7 +71,7 @@ static void fpm_pctl_exit() /* {{{ */
fpm_conf_unlink_pid();
fpm_cleanups_run(FPM_CLEANUP_PARENT_EXIT_MAIN);
- exit(0);
+ exit(FPM_EXIT_OK);
}
/* }}} */
@@ -100,7 +100,7 @@ static void fpm_pctl_exec() /* {{{ */
fpm_cleanups_run(FPM_CLEANUP_PARENT_EXEC);
execvp(saved_argv[0], saved_argv);
zlog(ZLOG_SYSERROR, "failed to reload: execvp() failed");
- exit(1);
+ exit(FPM_EXIT_SOFTWARE);
}
/* }}} */
diff --git a/sapi/fpm/fpm/fpm_signals.c b/sapi/fpm/fpm/fpm_signals.c
index 8993a860a..656269f1a 100644
--- a/sapi/fpm/fpm/fpm_signals.c
+++ b/sapi/fpm/fpm/fpm_signals.c
@@ -249,3 +249,15 @@ int fpm_signals_get_fd() /* {{{ */
}
/* }}} */
+void fpm_signals_sighandler_exit_ok(pid_t pid) /* {{{ */
+{
+ exit(FPM_EXIT_OK);
+}
+/* }}} */
+
+void fpm_signals_sighandler_exit_config(pid_t pid) /* {{{ */
+{
+ exit(FPM_EXIT_CONFIG);
+}
+/* }}} */
+
diff --git a/sapi/fpm/fpm/fpm_signals.h b/sapi/fpm/fpm/fpm_signals.h
index eb80faecf..13484cbac 100644
--- a/sapi/fpm/fpm/fpm_signals.h
+++ b/sapi/fpm/fpm/fpm_signals.h
@@ -11,6 +11,9 @@ int fpm_signals_init_main();
int fpm_signals_init_child();
int fpm_signals_get_fd();
+void fpm_signals_sighandler_exit_ok(pid_t pid);
+void fpm_signals_sighandler_exit_config(pid_t pid);
+
extern const char *fpm_signal_names[NSIG + 1];
#endif
diff --git a/sapi/fpm/fpm/fpm_sockets.c b/sapi/fpm/fpm/fpm_sockets.c
index cb4897e9b..d24dcccc9 100644
--- a/sapi/fpm/fpm/fpm_sockets.c
+++ b/sapi/fpm/fpm/fpm_sockets.c
@@ -179,6 +179,10 @@ static int fpm_sockets_new_listening_socket(struct fpm_worker_pool_s *wp, struct
setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &flags, sizeof(flags));
if (wp->listen_address_domain == FPM_AF_UNIX) {
+ if (fpm_socket_unix_test_connect((struct sockaddr_un *)sa, socklen) == 0) {
+ zlog(ZLOG_ERROR, "An another FPM instance seems to already listen on %s", ((struct sockaddr_un *) sa)->sun_path);
+ return -1;
+ }
unlink( ((struct sockaddr_un *) sa)->sun_path);
saved_umask = umask(0777 ^ wp->socket_mode);
}
@@ -450,3 +454,24 @@ int fpm_socket_get_listening_queue(int sock, unsigned *cur_lq, unsigned *max_lq)
}
#endif
+
+int fpm_socket_unix_test_connect(struct sockaddr_un *sun, size_t socklen) /* {{{ */
+{
+ int fd;
+
+ if (!sun || sun->sun_family != AF_UNIX) {
+ return -1;
+ }
+
+ if ((fd = socket(AF_UNIX, SOCK_STREAM, 0)) < 0) {
+ return -1;
+ }
+
+ if (connect(fd, (struct sockaddr *)sun, socklen) == -1) {
+ return -1;
+ }
+
+ close(fd);
+ return 0;
+}
+/* }}} */
diff --git a/sapi/fpm/fpm/fpm_sockets.h b/sapi/fpm/fpm/fpm_sockets.h
index 447fbff4b..499ba6baf 100644
--- a/sapi/fpm/fpm/fpm_sockets.h
+++ b/sapi/fpm/fpm/fpm_sockets.h
@@ -5,6 +5,9 @@
#ifndef FPM_MISC_H
#define FPM_MISC_H 1
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <sys/un.h>
#include <unistd.h>
#include <fcntl.h>
@@ -22,6 +25,7 @@
enum fpm_address_domain fpm_sockets_domain_from_address(char *addr);
int fpm_sockets_init_main();
int fpm_socket_get_listening_queue(int sock, unsigned *cur_lq, unsigned *max_lq);
+int fpm_socket_unix_test_connect(struct sockaddr_un *sun, size_t socklen);
static inline int fd_set_blocked(int fd, int blocked) /* {{{ */
diff --git a/sapi/fpm/fpm/fpm_status.c b/sapi/fpm/fpm/fpm_status.c
index 83de76d5a..5f2c852c7 100644
--- a/sapi/fpm/fpm/fpm_status.c
+++ b/sapi/fpm/fpm/fpm_status.c
@@ -14,6 +14,7 @@
#include "zlog.h"
#include "fpm_atomic.h"
#include "fpm_conf.h"
+#include "fpm_php.h"
#include <ext/standard/html.h>
static char *fpm_status_uri = NULL;
@@ -125,13 +126,13 @@ int fpm_status_handle_request(TSRMLS_D) /* {{{ */
}
/* full status ? */
- full = SG(request_info).request_uri && strstr(SG(request_info).query_string, "full");
+ full = (fpm_php_get_string_from_table("_GET", "full" TSRMLS_CC) != NULL);
short_syntax = short_post = NULL;
full_separator = full_pre = full_syntax = full_post = NULL;
encode = 0;
/* HTML */
- if (SG(request_info).query_string && strstr(SG(request_info).query_string, "html")) {
+ if (fpm_php_get_string_from_table("_GET", "html" TSRMLS_CC)) {
sapi_add_header_ex(ZEND_STRL("Content-Type: text/html"), 1, 1 TSRMLS_CC);
time_format = "%d/%b/%Y:%H:%M:%S %z";
encode = 1;
@@ -205,7 +206,7 @@ int fpm_status_handle_request(TSRMLS_D) /* {{{ */
}
/* XML */
- } else if (SG(request_info).request_uri && strstr(SG(request_info).query_string, "xml")) {
+ } else if (fpm_php_get_string_from_table("_GET", "xml" TSRMLS_CC)) {
sapi_add_header_ex(ZEND_STRL("Content-Type: text/xml"), 1, 1 TSRMLS_CC);
time_format = "%s";
encode = 1;
@@ -256,7 +257,7 @@ int fpm_status_handle_request(TSRMLS_D) /* {{{ */
}
/* JSON */
- } else if (SG(request_info).request_uri && strstr(SG(request_info).query_string, "json")) {
+ } else if (fpm_php_get_string_from_table("_GET", "json" TSRMLS_CC)) {
sapi_add_header_ex(ZEND_STRL("Content-Type: application/json"), 1, 1 TSRMLS_CC);
time_format = "%s";
diff --git a/sapi/fpm/fpm/fpm_unix.c b/sapi/fpm/fpm/fpm_unix.c
index 17d0b8125..5c5e37c3a 100644
--- a/sapi/fpm/fpm/fpm_unix.c
+++ b/sapi/fpm/fpm/fpm_unix.c
@@ -23,6 +23,7 @@
#include "fpm_clock.h"
#include "fpm_stdio.h"
#include "fpm_unix.h"
+#include "fpm_signals.h"
#include "zlog.h"
size_t fpm_pagesize;
@@ -112,12 +113,12 @@ static int fpm_unix_conf_wp(struct fpm_worker_pool_s *wp) /* {{{ */
}
}
-#ifndef I_REALLY_WANT_ROOT_PHP
- if (wp->set_uid == 0 || wp->set_gid == 0) {
- zlog(ZLOG_ERROR, "[pool %s] please specify user and group other than root", wp->config->name);
- return -1;
+ if (!fpm_globals.run_as_root) {
+ if (wp->set_uid == 0 || wp->set_gid == 0) {
+ zlog(ZLOG_ERROR, "[pool %s] please specify user and group other than root", wp->config->name);
+ return -1;
+ }
}
-#endif
} else { /* not root */
if (wp->config->user && *wp->config->user) {
zlog(ZLOG_WARNING, "[pool %s] 'user' directive is ignored when FPM is not running as root", wp->config->name);
@@ -128,6 +129,9 @@ static int fpm_unix_conf_wp(struct fpm_worker_pool_s *wp) /* {{{ */
if (wp->config->chroot && *wp->config->chroot) {
zlog(ZLOG_WARNING, "[pool %s] 'chroot' directive is ignored when FPM is not running as root", wp->config->name);
}
+ if (wp->config->process_priority != 64) {
+ zlog(ZLOG_WARNING, "[pool %s] 'process.priority' directive is ignored when FPM is not running as root", wp->config->name);
+ }
/* set up HOME and USER anyway */
pwd = getpwuid(getuid());
@@ -183,6 +187,14 @@ int fpm_unix_init_child(struct fpm_worker_pool_s *wp) /* {{{ */
}
if (is_root) {
+
+ if (wp->config->process_priority != 64) {
+ if (setpriority(PRIO_PROCESS, 0, wp->config->process_priority) < 0) {
+ zlog(ZLOG_SYSERROR, "[pool %s] Unable to set priority for this new process", wp->config->name);
+ return -1;
+ }
+ }
+
if (wp->set_gid) {
if (0 > setgid(wp->set_gid)) {
zlog(ZLOG_SYSERROR, "[pool %s] failed to setgid(%d)", wp->config->name, wp->set_gid);
@@ -217,6 +229,7 @@ int fpm_unix_init_child(struct fpm_worker_pool_s *wp) /* {{{ */
int fpm_unix_init_main() /* {{{ */
{
struct fpm_worker_pool_s *wp;
+ int is_root = !geteuid();
if (fpm_global_config.rlimit_files) {
struct rlimit r;
@@ -242,23 +255,92 @@ int fpm_unix_init_main() /* {{{ */
fpm_pagesize = getpagesize();
if (fpm_global_config.daemonize) {
- switch (fork()) {
- case -1 :
+ /*
+ * If daemonize, the calling process will die soon
+ * and the master process continues to initialize itself.
+ *
+ * The parent process has then to wait for the master
+ * process to initialize to return a consistent exit
+ * value. For this pupose, the master process will
+ * send USR1 if everything went well and USR2
+ * otherwise.
+ */
+
+ struct sigaction act;
+ struct sigaction oldact_usr1;
+ struct sigaction oldact_usr2;
+ struct timeval tv;
+
+ /*
+ * set sigaction for USR1 before fork
+ * save old sigaction to restore it after
+ * fork in the child process (the master process)
+ */
+ memset(&act, 0, sizeof(act));
+ memset(&act, 0, sizeof(oldact_usr1));
+ act.sa_handler = fpm_signals_sighandler_exit_ok;
+ sigfillset(&act.sa_mask);
+ sigaction(SIGUSR1, &act, &oldact_usr1);
+
+ /*
+ * set sigaction for USR2 before fork
+ * save old sigaction to restore it after
+ * fork in the child process (the master process)
+ */
+ memset(&act, 0, sizeof(act));
+ memset(&act, 0, sizeof(oldact_usr2));
+ act.sa_handler = fpm_signals_sighandler_exit_config;
+ sigfillset(&act.sa_mask);
+ sigaction(SIGUSR2, &act, &oldact_usr2);
+
+ /* then fork */
+ pid_t pid = fork();
+ switch (pid) {
+
+ case -1 : /* error */
zlog(ZLOG_SYSERROR, "failed to daemonize");
return -1;
- case 0 :
+
+ case 0 : /* children */
+ /* restore USR1 and USR2 sigaction */
+ sigaction(SIGUSR1, &oldact_usr1, NULL);
+ sigaction(SIGUSR2, &oldact_usr2, NULL);
+ fpm_globals.send_config_signal = 1;
break;
- default :
+
+ default : /* parent */
fpm_cleanups_run(FPM_CLEANUP_PARENT_EXIT);
- exit(0);
+
+ /*
+ * wait for 10s before exiting with error
+ * the child is supposed to send USR1 or USR2 to tell the parent
+ * how it goes for it
+ */
+ tv.tv_sec = 10;
+ tv.tv_usec = 0;
+ zlog(ZLOG_DEBUG, "The calling process is waiting for the master process to ping");
+ select(0, NULL, NULL, NULL, &tv);
+ exit(FPM_EXIT_SOFTWARE);
}
}
+ /* continue as a child */
setsid();
if (0 > fpm_clock_init()) {
return -1;
}
+ if (fpm_global_config.process_priority != 64) {
+ if (is_root) {
+ if (setpriority(PRIO_PROCESS, 0, fpm_global_config.process_priority) < 0) {
+ zlog(ZLOG_SYSERROR, "Unable to set priority for the master process");
+ return -1;
+ }
+ } else {
+ zlog(ZLOG_WARNING, "'process.priority' directive is ignored when FPM is not running as root");
+ }
+ }
+
fpm_globals.parent_pid = getpid();
for (wp = fpm_worker_all_pools; wp; wp = wp->next) {
if (0 > fpm_unix_conf_wp(wp)) {
diff --git a/sapi/fpm/fpm/zlog.c b/sapi/fpm/fpm/zlog.c
index b127ec16f..80db9d837 100644
--- a/sapi/fpm/fpm/zlog.c
+++ b/sapi/fpm/fpm/zlog.c
@@ -22,6 +22,7 @@
static int zlog_fd = -1;
static int zlog_level = ZLOG_NOTICE;
static int launched = 0;
+static void (*external_logger)(int, char *, size_t) = NULL;
static const char *level_names[] = {
[ZLOG_DEBUG] = "DEBUG",
@@ -41,6 +42,12 @@ const int syslog_priorities[] = {
};
#endif
+void zlog_set_external_logger(void (*logger)(int, char *, size_t)) /* {{{ */
+{
+ external_logger = logger;
+}
+/* }}} */
+
const char *zlog_get_level_name(int log_level) /* {{{ */
{
if (log_level < 0) {
@@ -101,6 +108,19 @@ void zlog_ex(const char *function, int line, int flags, const char *fmt, ...) /*
int truncated = 0;
int saved_errno;
+ if (external_logger) {
+ va_start(args, fmt);
+ len = vsnprintf(buf, buf_size, fmt, args);
+ va_end(args);
+ if (len >= buf_size) {
+ memcpy(buf + buf_size - sizeof("..."), "...", sizeof("...") - 1);
+ len = buf_size - 1;
+ }
+ external_logger(flags & ZLOG_LEVEL_MASK, buf, len);
+ len = 0;
+ memset(buf, '\0', buf_size);
+ }
+
if ((flags & ZLOG_LEVEL_MASK) < zlog_level) {
return;
}
diff --git a/sapi/fpm/fpm/zlog.h b/sapi/fpm/fpm/zlog.h
index e6a5c019a..1945922da 100644
--- a/sapi/fpm/fpm/zlog.h
+++ b/sapi/fpm/fpm/zlog.h
@@ -9,6 +9,7 @@
struct timeval;
+void zlog_set_external_logger(void (*logger)(int, char *, size_t));
int zlog_set_fd(int new_fd);
int zlog_set_level(int new_value);
const char *zlog_get_level_name(int log_level);
diff --git a/sapi/fpm/php-fpm.conf.in b/sapi/fpm/php-fpm.conf.in
index 2dad9d7f5..a63dec709 100644
--- a/sapi/fpm/php-fpm.conf.in
+++ b/sapi/fpm/php-fpm.conf.in
@@ -76,6 +76,14 @@
; Default Value: 0
; process.max = 128
+; Specify the nice(2) priority to apply to the master process (only if set)
+; The value can vary from -19 (highest priority) to 20 (lower priority)
+; Note: - It will only work if the FPM master process is launched as root
+; - The pool process will inherit the master process priority
+; unless it specified otherwise
+; Default Value: no set
+; process.priority = -19
+
; Send FPM to background. Set to 'no' to keep FPM in foreground for debugging.
; Default Value: yes
;daemonize = yes
@@ -163,6 +171,14 @@ listen = 127.0.0.1:9000
; Default Value: any
;listen.allowed_clients = 127.0.0.1
+; Specify the nice(2) priority to apply to the pool processes (only if set)
+; The value can vary from -19 (highest priority) to 20 (lower priority)
+; Note: - It will only work if the FPM master process is launched as root
+; - The pool processes will inherit the master process priority
+; unless it specified otherwise
+; Default Value: no set
+; priority = -19
+
; Choose how the process manager will control the number of child processes.
; Possible Values:
; static - a fixed number (pm.max_children) of child processes;
diff --git a/win32/registry.c b/win32/registry.c
index 35b411f4c..45e842b45 100644
--- a/win32/registry.c
+++ b/win32/registry.c
@@ -77,11 +77,16 @@ static int LoadDirectory(HashTable *directories, HKEY key, char *path, int path_
value_len = max_value+1;
if (RegEnumValue(key, i, name, &name_len, NULL, &type, value, &value_len) == ERROR_SUCCESS) {
if ((type == REG_SZ) || (type == REG_EXPAND_SZ)) {
+ ht = (HashTable*)malloc(sizeof(HashTable));
if (!ht) {
- ht = (HashTable*)malloc(sizeof(HashTable));
- zend_hash_init(ht, 0, NULL, ZVAL_INTERNAL_PTR_DTOR, 1);
+ return ret;
}
+ zend_hash_init(ht, 0, NULL, ZVAL_INTERNAL_PTR_DTOR, 1);
+
data = (zval*)malloc(sizeof(zval));
+ if (!data) {
+ return ret;
+ }
INIT_PZVAL(data);
Z_STRVAL_P(data) = zend_strndup(value, value_len-1);
Z_STRLEN_P(data) = value_len-1;
@@ -174,6 +179,9 @@ void UpdateIniFromRegistry(char *path TSRMLS_DC)
if (!PW32G(registry_directories)) {
PW32G(registry_directories) = (HashTable*)malloc(sizeof(HashTable));
+ if (!PW32G(registry_directories)) {
+ return;
+ }
zend_hash_init(PW32G(registry_directories), 0, NULL, delete_internal_hashtable, 1);
if (!OpenPhpRegistryKey("\\Per Directory Values", &PW32G(registry_key))) {
PW32G(registry_key) = NULL;
diff --git a/win32/time.c b/win32/time.c
index a376fd61b..391a8a81e 100644
--- a/win32/time.c
+++ b/win32/time.c
@@ -1,4 +1,3 @@
-
/*****************************************************************************
* *
* DH_TIME.C *
@@ -35,12 +34,21 @@
int getfilesystemtime(struct timeval *time_Info)
{
-FILETIME ft;
-__int64 ff;
+ FILETIME ft;
+ __int64 ff;
+ ULARGE_INTEGER convFromft;
GetSystemTimeAsFileTime(&ft); /* 100 ns blocks since 01-Jan-1641 */
- /* resolution seems to be 0.01 sec */
- ff = *(__int64*)(&ft);
+ /* resolution seems to be 0.01 sec */
+ /*
+ * Do not cast a pointer to a FILETIME structure to either a
+ * ULARGE_INTEGER* or __int64* value because it can cause alignment faults on 64-bit Windows.
+ * via http://technet.microsoft.com/en-us/library/ms724284(v=vs.85).aspx
+ */
+ convFromft.HighPart = ft.dwHighDateTime;
+ convFromft.LowPart = ft.dwLowDateTime;
+ ff = convFromft.QuadPart;
+
time_Info->tv_sec = (int)(ff/(__int64)10000000-(__int64)11644473600);
time_Info->tv_usec = (int)(ff % 10000000)/10;
return 0;