Merge lp:~legolas/ubuntu/natty/php5/5.3.5 into lp:ubuntu/natty/php5

Proposed by Stas Verberkt
Status: Rejected
Rejected by: James Westby
Proposed branch: lp:~legolas/ubuntu/natty/php5/5.3.5
Merge into: lp:ubuntu/natty/php5
Diff against target: 125436 lines (+46026/-23883)
660 files modified
INSTALL (+24/-12)
LICENSE (+1/-1)
Makefile.global (+1/-0)
NEWS (+359/-3)
TSRM/tsrm_virtual_cwd.c (+214/-87)
TSRM/tsrm_virtual_cwd.h (+14/-10)
UPGRADING (+14/-1)
UPGRADING.INTERNALS (+23/-0)
Zend/acinclude.m4 (+2/-2)
Zend/tests/bug45180.phpt (+4/-4)
Zend/tests/bug45186.phpt (+4/-4)
Zend/tests/bug51176.phpt (+3/-3)
Zend/tests/bug52361.phpt (+35/-0)
Zend/tests/bug52484.phpt (+19/-0)
Zend/tests/bug52484_2.phpt (+19/-0)
Zend/tests/bug52484_3.phpt (+19/-0)
Zend/tests/bug52508.phpt (+20/-0)
Zend/tests/bug52879.phpt (+16/-0)
Zend/tests/bug52939.phpt (+40/-0)
Zend/tests/bug53305.phpt (+19/-0)
Zend/tests/bug53632.phpt (+10/-0)
Zend/tests/call_static_003.phpt (+2/-2)
Zend/tests/call_static_007.phpt (+1/-1)
Zend/tests/declare_001.phpt (+6/-0)
Zend/tests/gc_032.phpt (+40/-0)
Zend/tests/objects_032.phpt (+40/-0)
Zend/tests/unset_cv05.phpt (+1/-1)
Zend/tests/unset_cv06.phpt (+1/-1)
Zend/zend_API.c (+2/-2)
Zend/zend_compile.c (+12/-5)
Zend/zend_constants.c (+11/-3)
Zend/zend_exceptions.c (+7/-6)
Zend/zend_execute.c (+2/-2)
Zend/zend_execute_API.c (+3/-2)
Zend/zend_gc.c (+26/-22)
Zend/zend_hash.c (+4/-1)
Zend/zend_hash.h (+5/-5)
Zend/zend_ini_scanner.c (+1767/-1759)
Zend/zend_ini_scanner.l (+2/-2)
Zend/zend_ini_scanner_defs.h (+1/-1)
Zend/zend_language_scanner.c (+6/-335)
Zend/zend_language_scanner.l (+5/-1)
Zend/zend_language_scanner_defs.h (+1/-2)
Zend/zend_object_handlers.c (+45/-11)
Zend/zend_objects.c (+4/-6)
Zend/zend_strtod.c (+2/-2)
Zend/zend_variables.c (+12/-1)
Zend/zend_variables.h (+12/-1)
Zend/zend_vm_execute.h (+44/-0)
acinclude.m4 (+21/-16)
aclocal.m4 (+21/-16)
configure (+2831/-3473)
configure.in (+6/-6)
debian/changelog (+66/-0)
debian/patches/006-debian_quirks.patch (+2/-6)
debian/patches/fpm-config.patch (+10/-9)
debian/patches/gentoo/009_ob-memory-leaks.patch (+9/-7)
debian/patches/php-fpm-man-section-and-cleanup.patch (+3/-9)
debian/patches/php5-CVE-2010-3436-regression.patch (+32/-0)
debian/patches/php5-CVE-2010-3436.patch (+29/-0)
debian/patches/php5-CVE-2010-3709.patch (+24/-0)
debian/patches/php5-CVE-2010-3710.patch (+53/-0)
debian/patches/php5-CVE-2010-3870.patch (+204/-0)
debian/patches/php5-CVE-2010-4156.patch (+65/-0)
debian/patches/php5-CVE-2010-4409.patch (+90/-0)
debian/patches/php5-CVE-2010-4645.patch (+25/-0)
debian/patches/series (+13/-5)
debian/patches/ubuntu/ubuntu-php-version.patch (+4/-4)
debian/rules (+1/-1)
ext/bz2/bz2.c (+5/-2)
ext/calendar/calendar.c (+10/-3)
ext/calendar/tests/bug52744.phpt (+12/-0)
ext/com_dotnet/com_persist.c (+8/-1)
ext/curl/interface.c (+17/-17)
ext/curl/php_curl.h (+1/-3)
ext/curl/tests/bug52202.phpt (+16/-0)
ext/curl/tests/bug52827.phpt (+32/-0)
ext/curl/tests/curl_multi_getcontent_basic3.phpt (+6/-1)
ext/curl/tests/curl_multi_getcontent_error1.phpt (+2/-2)
ext/curl/tests/curl_multi_getcontent_error2.phpt (+2/-2)
ext/curl/tests/curl_multi_getcontent_error3.phpt (+2/-2)
ext/curl/tests/curl_multi_getcontent_error4.phpt (+2/-2)
ext/curl/tests/curl_setopt_basic001.phpt (+1/-1)
ext/curl/tests/curl_setopt_error.phpt (+1/-0)
ext/date/lib/parse_date.c (+9/-3)
ext/date/lib/parse_date.c.orig (+109/-103)
ext/date/lib/parse_date.re (+8/-2)
ext/date/lib/parse_iso_intervals.c (+2/-2)
ext/date/lib/timelib.c (+14/-3)
ext/date/lib/timelib.h (+2/-1)
ext/date/lib/timezonedb.h (+718/-657)
ext/date/lib/tm2unixtime.c (+2/-1)
ext/date/lib/unixtime2tm.c (+7/-1)
ext/date/php_date.c (+33/-32)
ext/date/php_date.h (+7/-1)
ext/date/tests/010.phpt (+19/-586)
ext/date/tests/DateTime_modify_variation1.phpt (+66/-166)
ext/date/tests/big_year.phpt (+17/-0)
ext/date/tests/bug33415-2.phpt (+2/-2)
ext/date/tests/bug46874.phpt (+31/-0)
ext/date/tests/bug52342.phpt (+23/-0)
ext/date/tests/bug52430.phpt (+37/-0)
ext/date/tests/bug52454.phpt (+22/-0)
ext/date/tests/bug52577.phpt (+19/-0)
ext/date/tests/bug52668.phpt (+25/-0)
ext/date/tests/date_modify_variation2.phpt (+66/-166)
ext/date/tests/timezone_abbreviations_list_basic1.phpt (+2/-2)
ext/dba/config.m4 (+2/-2)
ext/dba/tests/dba_cdb_make.phpt (+1/-1)
ext/dom/tests/bug52656.phpt (+14/-0)
ext/dom/text.c (+2/-2)
ext/enchant/enchant.c (+10/-2)
ext/exif/tests/exif006.phpt (+1/-1)
ext/ext_skel (+2/-2)
ext/fileinfo/fileinfo.c (+4/-1)
ext/filter/logical_filters.c (+36/-15)
ext/filter/tests/030.phpt (+38/-17)
ext/filter/tests/bug39763.phpt (+1/-1)
ext/filter/tests/bug52929.phpt (+18/-0)
ext/gd/gd.c (+17/-1)
ext/gd/gd_ctx.c (+4/-1)
ext/gmp/gmp.c (+32/-23)
ext/gmp/tests/005.phpt (+5/-5)
ext/gmp/tests/040.phpt (+1/-1)
ext/gmp/tests/bug50283.phpt (+5/-4)
ext/gmp/tests/bug52906.phpt (+46/-0)
ext/gmp/tests/gmp_nextprime.phpt (+1/-1)
ext/hash/php_hash_tiger.h (+2/-2)
ext/iconv/iconv.c (+43/-10)
ext/iconv/tests/bug51250.phpt (+29/-0)
ext/iconv/tests/bug52941.phpt (+41/-0)
ext/iconv/tests/bug53304.phpt (+13/-0)
ext/iconv/tests/iconv_stream_filter_delimiter.phpt (+1/-1)
ext/imap/php_imap.c (+11/-5)
ext/interbase/config.w32 (+3/-2)
ext/intl/dateformat/dateformat_attr.c (+1/-0)
ext/intl/dateformat/dateformat_format.c (+24/-2)
ext/intl/dateformat/dateformat_parse.c (+7/-6)
ext/intl/formatter/formatter_attr.c (+7/-2)
ext/intl/tests/bug50590.phpt (+13/-0)
ext/intl/tests/dateformat_format.phpt (+135/-3)
ext/intl/tests/dateformat_format_parse.phpt (+7/-13)
ext/intl/tests/dateformat_get_locale.phpt (+6/-0)
ext/intl/tests/dateformat_parse_timestamp_parsepos.phpt (+2/-4)
ext/intl/tests/formatter_get_set_symbol.phpt (+6/-1)
ext/json/json.c (+2/-2)
ext/ldap/config.w32 (+8/-5)
ext/mbstring/libmbfl/mbfl/mbfilter.c (+4/-0)
ext/mbstring/mbstring.c (+7/-5)
ext/mbstring/tests/bug43301.phpt (+2/-2)
ext/mbstring/tests/bug52861.phpt (+26/-0)
ext/mbstring/tests/bug52931.phpt (+22/-0)
ext/mbstring/tests/bug52981.phpt (+23/-0)
ext/mbstring/tests/mb_decode_mimeheader_variation1.phpt (+3/-6)
ext/mbstring/tests/mb_send_mail01.phpt (+2/-2)
ext/mbstring/tests/mb_send_mail02.phpt (+2/-2)
ext/mbstring/tests/mb_send_mail03.phpt (+2/-2)
ext/mbstring/tests/mb_send_mail04.phpt (+2/-2)
ext/mbstring/tests/mb_send_mail05.phpt (+2/-2)
ext/mbstring/tests/mb_send_mail06.phpt (+2/-2)
ext/mbstring/tests/mb_send_mail07.phpt (+2/-2)
ext/mbstring/tests/mb_strcut_missing_boundary_check.phpt (+31/-0)
ext/mbstring/ucgendat/OPENLDAP_LICENSE (+47/-0)
ext/mbstring/ucgendat/README (+9/-0)
ext/mbstring/ucgendat/ucgendat.c (+1985/-0)
ext/mbstring/unicode_data.h (+4271/-2737)
ext/mssql/php_mssql.c (+10/-2)
ext/mysql/php_mysql.c (+82/-82)
ext/mysql/tests/mysql_trace_mode.phpt (+2/-0)
ext/mysqli/config.m4 (+2/-1)
ext/mysqli/mysqli.c (+130/-69)
ext/mysqli/mysqli_api.c (+92/-67)
ext/mysqli/mysqli_driver.c (+3/-3)
ext/mysqli/mysqli_embedded.c (+3/-3)
ext/mysqli/mysqli_exception.c (+3/-2)
ext/mysqli/mysqli_fe.c (+17/-12)
ext/mysqli/mysqli_fe.h (+135/-0)
ext/mysqli/mysqli_libmysql.h (+1/-1)
ext/mysqli/mysqli_nonapi.c (+52/-53)
ext/mysqli/mysqli_priv.h (+156/-0)
ext/mysqli/mysqli_prop.c (+39/-38)
ext/mysqli/mysqli_report.c (+8/-6)
ext/mysqli/mysqli_report.h (+2/-2)
ext/mysqli/mysqli_warning.c (+10/-9)
ext/mysqli/php_mysqli.h (+1/-1)
ext/mysqli/php_mysqli_structs.h (+12/-250)
ext/mysqli/tests/002.phpt (+3/-3)
ext/mysqli/tests/003.phpt (+3/-3)
ext/mysqli/tests/004.phpt (+3/-3)
ext/mysqli/tests/005.phpt (+4/-4)
ext/mysqli/tests/006.phpt (+3/-3)
ext/mysqli/tests/007.phpt (+3/-3)
ext/mysqli/tests/008.phpt (+3/-3)
ext/mysqli/tests/009.phpt (+6/-6)
ext/mysqli/tests/010.phpt (+3/-3)
ext/mysqli/tests/011.phpt (+3/-3)
ext/mysqli/tests/012.phpt (+3/-3)
ext/mysqli/tests/013.phpt (+4/-4)
ext/mysqli/tests/016.phpt (+3/-3)
ext/mysqli/tests/017.phpt (+3/-3)
ext/mysqli/tests/018.phpt (+3/-3)
ext/mysqli/tests/019.phpt (+5/-5)
ext/mysqli/tests/020.phpt (+5/-5)
ext/mysqli/tests/021.phpt (+5/-5)
ext/mysqli/tests/022.phpt (+5/-5)
ext/mysqli/tests/023.phpt (+5/-5)
ext/mysqli/tests/024.phpt (+5/-5)
ext/mysqli/tests/025.phpt (+5/-5)
ext/mysqli/tests/026.phpt (+8/-8)
ext/mysqli/tests/042.phpt (+2/-2)
ext/mysqli/tests/043.phpt (+3/-3)
ext/mysqli/tests/045.phpt (+5/-5)
ext/mysqli/tests/046.phpt (+2/-2)
ext/mysqli/tests/047.phpt (+3/-3)
ext/mysqli/tests/050.phpt (+1/-1)
ext/mysqli/tests/051.phpt (+1/-1)
ext/mysqli/tests/052.phpt (+1/-1)
ext/mysqli/tests/057.phpt (+6/-6)
ext/mysqli/tests/058.phpt (+11/-11)
ext/mysqli/tests/059.phpt (+5/-5)
ext/mysqli/tests/065.phpt (+2/-2)
ext/mysqli/tests/bug35759.phpt (+1/-1)
ext/mysqli/tests/bug52891.phpt (+160/-0)
ext/mysqli/tests/bug_mysql_49406.phpt (+107/-0)
ext/mysqli/tests/connect.inc (+95/-0)
ext/mysqli/tests/mysqli_change_user_set_names.phpt (+2/-2)
ext/mysqli/tests/mysqli_character_set.phpt (+12/-10)
ext/mysqli/tests/mysqli_character_set_name.phpt (+3/-3)
ext/mysqli/tests/mysqli_character_set_name_oo.phpt (+2/-2)
ext/mysqli/tests/mysqli_class_mysqli_interface.phpt (+1/-0)
ext/mysqli/tests/mysqli_class_mysqli_reflection.phpt (+51/-0)
ext/mysqli/tests/mysqli_constants.phpt (+6/-0)
ext/mysqli/tests/mysqli_fetch_array_large.phpt (+54/-41)
ext/mysqli/tests/mysqli_fetch_field.phpt (+29/-11)
ext/mysqli/tests/mysqli_fetch_field_oo.phpt (+24/-10)
ext/mysqli/tests/mysqli_fetch_fields.phpt (+21/-3)
ext/mysqli/tests/mysqli_field_seek.phpt (+20/-6)
ext/mysqli/tests/mysqli_get_client_stats.phpt (+79/-4)
ext/mysqli/tests/mysqli_get_client_stats_off.phpt (+8/-10)
ext/mysqli/tests/mysqli_insert_packet_overflow.phpt (+2/-2)
ext/mysqli/tests/mysqli_magic_quotes.phpt (+128/-0)
ext/mysqli/tests/mysqli_options.phpt (+52/-41)
ext/mysqli/tests/mysqli_options_int_and_float_native.phpt (+109/-0)
ext/mysqli/tests/mysqli_pconn_conn_multiple.phpt (+0/-3)
ext/mysqli/tests/mysqli_pconn_disabled.phpt (+0/-3)
ext/mysqli/tests/mysqli_pconn_kill.phpt (+0/-2)
ext/mysqli/tests/mysqli_pconn_limits.phpt (+0/-3)
ext/mysqli/tests/mysqli_pconn_max_links.phpt (+13/-9)
ext/mysqli/tests/mysqli_pconn_reuse.phpt (+0/-3)
ext/mysqli/tests/mysqli_pconn_twice.phpt (+0/-2)
ext/mysqli/tests/mysqli_pconnect.phpt (+0/-3)
ext/mysqli/tests/mysqli_prepare.phpt (+5/-5)
ext/mysqli/tests/mysqli_set_charset.phpt (+1/-1)
ext/mysqli/tests/mysqli_stmt_attr_set.phpt (+6/-0)
ext/mysqli/tests/mysqli_stmt_bind_param.phpt (+1/-1)
ext/mysqli/tests/mysqli_stmt_bind_param_check_param_no_change.phpt (+1/-0)
ext/mysqli/tests/mysqli_stmt_bind_result.phpt (+1/-1)
ext/mysqli/tests/mysqli_stmt_fetch.phpt (+1/-1)
ext/mysqli/tests/mysqli_stmt_get_result_metadata_fetch_field.phpt (+30/-12)
ext/mysqli/tests/mysqli_stmt_num_rows.phpt (+3/-3)
ext/mysqli/tests/mysqli_stmt_param_count.phpt (+1/-1)
ext/mysqli/tests/mysqli_stmt_result_metadata.phpt (+1/-1)
ext/mysqli/tests/mysqli_stmt_send_long_data.phpt (+1/-1)
ext/mysqlnd/config9.m4 (+3/-6)
ext/mysqlnd/mysqlnd.c (+61/-69)
ext/mysqlnd/mysqlnd.h (+7/-9)
ext/mysqlnd/mysqlnd_block_alloc.c (+1/-2)
ext/mysqlnd/mysqlnd_charset.c (+295/-310)
ext/mysqlnd/mysqlnd_debug.c (+189/-29)
ext/mysqlnd/mysqlnd_debug.h (+67/-14)
ext/mysqlnd/mysqlnd_enum_n_def.h (+24/-9)
ext/mysqlnd/mysqlnd_loaddata.c (+5/-3)
ext/mysqlnd/mysqlnd_net.c (+3/-6)
ext/mysqlnd/mysqlnd_portability.h (+6/-6)
ext/mysqlnd/mysqlnd_priv.h (+25/-10)
ext/mysqlnd/mysqlnd_ps.c (+80/-50)
ext/mysqlnd/mysqlnd_ps_codec.c (+138/-75)
ext/mysqlnd/mysqlnd_result.c (+114/-80)
ext/mysqlnd/mysqlnd_result_meta.c (+12/-13)
ext/mysqlnd/mysqlnd_statistics.c (+10/-8)
ext/mysqlnd/mysqlnd_statistics.h (+2/-2)
ext/mysqlnd/mysqlnd_structs.h (+11/-6)
ext/mysqlnd/mysqlnd_wireprotocol.c (+60/-49)
ext/mysqlnd/mysqlnd_wireprotocol.h (+2/-2)
ext/mysqlnd/php_mysqlnd.c (+5/-3)
ext/oci8/oci8.c (+8/-16)
ext/oci8/oci8_interface.c (+22/-12)
ext/oci8/package.xml (+60/-8)
ext/oci8/php_oci8.h (+2/-2)
ext/oci8/tests/bind_char_1.phpt (+8/-3)
ext/oci8/tests/bind_char_2.phpt (+8/-3)
ext/oci8/tests/bind_char_3.phpt (+8/-3)
ext/oci8/tests/bind_char_4.phpt (+8/-3)
ext/oci8/tests/bug27303_1.phpt (+8/-3)
ext/oci8/tests/bug27303_2.phpt (+8/-3)
ext/oci8/tests/bug27303_4.phpt (+8/-3)
ext/oci8/tests/connect_without_oracle_home.phpt (+4/-0)
ext/oci8/tests/connect_without_oracle_home_11.phpt (+41/-0)
ext/oci8/tests/connect_without_oracle_home_old.phpt (+4/-0)
ext/oci8/tests/connect_without_oracle_home_old_11.phpt (+41/-0)
ext/oci8/tests/debug.phpt (+5/-51)
ext/oci8/tests/null_byte_1.phpt (+38/-0)
ext/oci8/tests/null_byte_2.phpt (+69/-0)
ext/oci8/tests/oci8safemode.phpt (+1/-1)
ext/odbc/php_odbc.c (+48/-4)
ext/openssl/openssl.c (+48/-14)
ext/openssl/xp_ssl.c (+1/-2)
ext/pcntl/pcntl.c (+135/-3)
ext/pcntl/php_pcntl.h (+6/-1)
ext/pcntl/php_signal.c (+12/-3)
ext/pcntl/php_signal.h (+2/-1)
ext/pcntl/tests/pcntl_get_last_error.phpt (+17/-0)
ext/pcre/pcrelib/ChangeLog (+95/-0)
ext/pcre/pcrelib/NEWS (+11/-0)
ext/pcre/pcrelib/NON-UNIX-USE (+4/-4)
ext/pcre/pcrelib/config.h (+16/-3)
ext/pcre/pcrelib/doc/pcre.txt (+892/-578)
ext/pcre/pcrelib/pcre.h (+6/-3)
ext/pcre/pcrelib/pcre_chartables.c (+1/-1)
ext/pcre/pcrelib/pcre_compile.c (+528/-224)
ext/pcre/pcrelib/pcre_exec.c (+744/-315)
ext/pcre/pcrelib/pcre_internal.h (+51/-26)
ext/pcre/pcrelib/pcre_printint.src (+8/-0)
ext/pcre/pcrelib/pcre_study.c (+217/-75)
ext/pcre/pcrelib/pcre_tables.c (+17/-5)
ext/pcre/pcrelib/pcre_xclass.c (+32/-4)
ext/pcre/pcrelib/pcreposix.c (+14/-6)
ext/pcre/pcrelib/pcreposix.h (+1/-0)
ext/pcre/pcrelib/testdata/testinput10 (+12/-1)
ext/pcre/pcrelib/testdata/testinput2 (+265/-6)
ext/pcre/pcrelib/testdata/testinput5 (+49/-0)
ext/pcre/pcrelib/testdata/testinput6 (+50/-0)
ext/pcre/pcrelib/testdata/testinput9 (+139/-0)
ext/pcre/pcrelib/testdata/testoutput10 (+42/-1)
ext/pcre/pcrelib/testdata/testoutput2 (+471/-13)
ext/pcre/pcrelib/testdata/testoutput5 (+146/-0)
ext/pcre/pcrelib/testdata/testoutput6 (+68/-0)
ext/pcre/pcrelib/testdata/testoutput9 (+360/-0)
ext/pcre/php_pcre.c (+15/-3)
ext/pcre/tests/backtrack_limit.phpt (+1/-1)
ext/pcre/tests/bug33200.phpt (+1/-1)
ext/pcre/tests/bug52732.phpt (+13/-0)
ext/pcre/tests/bug52971.phpt (+43/-0)
ext/pcre/tests/invalid_utf8_offset.phpt (+1/-1)
ext/pcre/tests/recursion_limit.phpt (+1/-1)
ext/pdo/pdo_stmt.c (+8/-6)
ext/pdo/tests/bug47769.phpt (+5/-0)
ext/pdo/tests/bug_38253.phpt (+7/-1)
ext/pdo/tests/bug_43139.phpt (+6/-1)
ext/pdo/tests/pdo_018.phpt (+7/-1)
ext/pdo/tests/pdo_021.phpt (+0/-2)
ext/pdo/tests/pdo_034.phpt (+2/-2)
ext/pdo_dblib/dblib_stmt.c (+3/-3)
ext/pdo_firebird/config.w32 (+4/-2)
ext/pdo_firebird/firebird_driver.c (+6/-2)
ext/pdo_firebird/firebird_statement.c (+34/-1)
ext/pdo_firebird/tests/rowCount.phpt (+48/-0)
ext/pdo_mysql/mysql_statement.c (+2/-2)
ext/pdo_mysql/php_pdo_mysql_int.h (+3/-3)
ext/pdo_mysql/tests/bug_42499.phpt (+2/-2)
ext/pdo_mysql/tests/bug_44454.phpt (+8/-4)
ext/pdo_mysql/tests/bug_pecl_12925.phpt (+3/-3)
ext/pdo_mysql/tests/mysql_pdo_test.inc (+2/-2)
ext/pdo_mysql/tests/pdo_mysql_attr_autocommit.phpt (+1/-1)
ext/pdo_mysql/tests/pdo_mysql_attr_case.phpt (+5/-5)
ext/pdo_mysql/tests/pdo_mysql_attr_oracle_nulls.phpt (+3/-3)
ext/pdo_mysql/tests/pdo_mysql_attr_server_info.phpt (+1/-1)
ext/pdo_mysql/tests/pdo_mysql_begintransaction.phpt (+2/-2)
ext/pdo_mysql/tests/pdo_mysql_commit.phpt (+2/-2)
ext/pdo_mysql/tests/pdo_mysql_exec.phpt (+9/-9)
ext/pdo_mysql/tests/pdo_mysql_exec_load_data.phpt (+1/-1)
ext/pdo_mysql/tests/pdo_mysql_exec_select.phpt (+4/-4)
ext/pdo_mysql/tests/pdo_mysql_interface.phpt (+12/-11)
ext/pdo_mysql/tests/pdo_mysql_last_insert_id.phpt (+6/-6)
ext/pdo_mysql/tests/pdo_mysql_prepare_emulated.phpt (+4/-4)
ext/pdo_mysql/tests/pdo_mysql_prepare_emulated_anonymous.phpt (+2/-2)
ext/pdo_mysql/tests/pdo_mysql_prepare_emulated_placeholder_everywhere.phpt (+1/-1)
ext/pdo_mysql/tests/pdo_mysql_prepare_load_data.phpt (+3/-3)
ext/pdo_mysql/tests/pdo_mysql_prepare_native.phpt (+4/-4)
ext/pdo_mysql/tests/pdo_mysql_prepare_native_clear_error.phpt (+1/-1)
ext/pdo_mysql/tests/pdo_mysql_prepare_native_dup_named_placeholder.phpt (+1/-1)
ext/pdo_mysql/tests/pdo_mysql_prepare_native_named_placeholder.phpt (+2/-2)
ext/pdo_mysql/tests/pdo_mysql_prepare_native_placeholder_everywhere.phpt (+1/-1)
ext/pdo_mysql/tests/pdo_mysql_rollback.phpt (+2/-2)
ext/pdo_mysql/tests/pdo_mysql_stmt_columncount.phpt (+2/-2)
ext/pdo_mysql/tests/pdo_mysql_stmt_fetch_non_select.phpt (+3/-3)
ext/pdo_mysql/tests/pdo_mysql_stmt_fetch_serialize_simple.phpt (+1/-1)
ext/pdo_mysql/tests/pdo_mysql_stmt_fetchobject.phpt (+13/-3)
ext/pdo_mysql/tests/pdo_mysql_stmt_getcolumnmeta.phpt (+10/-5)
ext/pdo_mysql/tests/pdo_mysql_subclass.phpt (+1/-1)
ext/pdo_mysql/tests/pdo_mysql_types.phpt (+2/-2)
ext/pdo_mysql/tests/pdo_mysql_types_zerofill.phpt (+7/-2)
ext/pdo_oci/tests/pdo_oci_attr_client.phpt (+1/-1)
ext/pdo_pgsql/tests/bug36727.phpt (+1/-1)
ext/pdo_sqlite/tests/bug52487.phpt (+21/-0)
ext/pgsql/pgsql.c (+19/-7)
ext/pgsql/tests/bug47199.phpt (+67/-0)
ext/phar/phar.c (+4/-4)
ext/phar/phar_object.c (+6/-2)
ext/phar/stream.c (+1/-1)
ext/phar/tests/phpinfo_001.phpt (+2/-2)
ext/phar/tests/phpinfo_002.phpt (+1/-1)
ext/phar/tests/phpinfo_003.phpt (+1/-1)
ext/phar/tests/phpinfo_004.phpt (+2/-2)
ext/posix/posix.c (+14/-2)
ext/posix/tests/posix_access.phpt (+1/-1)
ext/posix/tests/posix_access_error_modes.phpt (+1/-1)
ext/posix/tests/posix_access_error_wrongparams.phpt (+1/-1)
ext/posix/tests/posix_access_safemode.phpt (+1/-1)
ext/posix/tests/posix_mkfifo_safemode.phpt (+1/-1)
ext/pspell/pspell.c (+13/-1)
ext/recode/CREDITS (+1/-1)
ext/reflection/php_reflection.c (+36/-6)
ext/reflection/tests/ReflectionClass_getConstructor_basic.phpt (+2/-5)
ext/reflection/tests/ReflectionClass_isIterateable_001.phpt (+21/-7)
ext/reflection/tests/ReflectionMethod_constructor_basic.phpt (+0/-2)
ext/reflection/tests/ReflectionObject_getConstructor_basic.phpt (+1/-4)
ext/reflection/tests/ReflectionParameter_isDefault.phpt (+34/-0)
ext/reflection/tests/bug52854.phpt (+28/-0)
ext/reflection/tests/bug53366.phpt (+25/-0)
ext/session/config.m4 (+2/-1)
ext/session/session.c (+3/-3)
ext/session/tests/001.phpt (+1/-1)
ext/session/tests/003.phpt (+1/-1)
ext/session/tests/004.phpt (+1/-1)
ext/session/tests/005.phpt (+1/-1)
ext/session/tests/006.phpt (+1/-1)
ext/session/tests/007.phpt (+2/-2)
ext/session/tests/008-php4.2.3.phpt (+1/-1)
ext/session/tests/009.phpt (+1/-1)
ext/session/tests/012.phpt (+1/-1)
ext/session/tests/013.phpt (+1/-1)
ext/session/tests/014.phpt (+1/-1)
ext/session/tests/019.phpt (+1/-1)
ext/session/tests/bug53141.phpt (+26/-0)
ext/simplexml/simplexml.c (+2/-2)
ext/soap/php_encoding.c (+5/-5)
ext/soap/php_http.c (+8/-1)
ext/soap/php_packet_soap.c (+2/-2)
ext/soap/php_sdl.c (+12/-9)
ext/soap/tests/bugs/bug50698_1.phpt (+2/-0)
ext/soap/tests/bugs/bug50698_2.phpt (+2/-0)
ext/soap/tests/bugs/bug50698_3.phpt (+2/-0)
ext/soap/tests/bugs/bug50698_4.phpt (+2/-0)
ext/soap/tests/bugs/bug50762.phpt (+2/-0)
ext/spl/php_spl.c (+10/-7)
ext/spl/spl_array.c (+50/-2)
ext/spl/spl_directory.c (+155/-10)
ext/spl/spl_dllist.c (+25/-1)
ext/spl/spl_fixedarray.c (+9/-2)
ext/spl/spl_heap.c (+24/-1)
ext/spl/spl_iterators.c (+234/-4)
ext/spl/spl_observer.c (+122/-12)
ext/spl/tests/SplFileObject_fgetcsv_escape_default.phpt (+24/-0)
ext/spl/tests/arrayObject_count_basic1.phpt (+6/-2)
ext/spl/tests/bug50579.phpt (+40/-0)
ext/spl/tests/bug52573.phpt (+18/-0)
ext/spl/tests/bug53071.phpt (+26/-0)
ext/spl/tests/bug53144.phpt (+20/-0)
ext/spl/tests/bug53362.phpt (+22/-0)
ext/spl/tests/fileobject_005.phpt (+4/-2)
ext/spl/tests/spl_fileinfo_getlinktarget_basic.phpt (+1/-1)
ext/sqlite/sqlite.c (+12/-2)
ext/sqlite3/libsqlite/sqlite3.c (+14857/-6580)
ext/sqlite3/libsqlite/sqlite3.h (+793/-346)
ext/sqlite3/sqlite3.c (+11/-2)
ext/sqlite3/tests/bug53463.phpt (+28/-0)
ext/sqlite3/tests/sqlite3_15_open_error.phpt (+2/-2)
ext/standard/array.c (+5/-5)
ext/standard/base64.c (+2/-2)
ext/standard/basic_functions.c (+39/-2)
ext/standard/credits.c (+3/-3)
ext/standard/dir.c (+13/-1)
ext/standard/dns.c (+3/-5)
ext/standard/dns_win32.c (+2/-3)
ext/standard/file.c (+96/-13)
ext/standard/file.h (+3/-2)
ext/standard/filestat.c (+27/-2)
ext/standard/formatted_print.c (+2/-2)
ext/standard/ftok.c (+5/-1)
ext/standard/ftp_fopen_wrapper.c (+4/-4)
ext/standard/html.c (+75/-42)
ext/standard/http_fopen_wrapper.c (+37/-28)
ext/standard/iptc.c (+5/-1)
ext/standard/link.c (+22/-2)
ext/standard/link_win32.c (+8/-67)
ext/standard/math.c (+13/-3)
ext/standard/proc_open.c (+56/-48)
ext/standard/quot_print.c (+2/-2)
ext/standard/rand.c (+9/-3)
ext/standard/streamsfuncs.c (+25/-7)
ext/standard/string.c (+14/-12)
ext/standard/tests/array/bug52534.phpt (+14/-0)
ext/standard/tests/array/extract_safety.phpt (+24/-0)
ext/standard/tests/assert/assert02.phpt (+1/-1)
ext/standard/tests/file/bug52820.phpt (+49/-0)
ext/standard/tests/file/bug53241.phpt (+23/-0)
ext/standard/tests/file/copy_variation12.phpt (+2/-2)
ext/standard/tests/file/copy_variation4.phpt (+6/-13)
ext/standard/tests/file/disk_free_space_variation.phpt (+8/-8)
ext/standard/tests/file/file_get_contents_variation8-win32.phpt (+0/-2)
ext/standard/tests/file/file_get_contents_variation8.phpt (+0/-2)
ext/standard/tests/file/file_put_contents_variation8.phpt (+1/-3)
ext/standard/tests/file/filegroup_variation3.phpt (+2/-2)
ext/standard/tests/file/fileinode_variation3.phpt (+2/-2)
ext/standard/tests/file/fileowner_variation3.phpt (+2/-2)
ext/standard/tests/file/fileperms_variation3.phpt (+2/-2)
ext/standard/tests/file/fnmatch_variation.phpt (+17/-17)
ext/standard/tests/file/glob_variation.phpt (+7/-16)
ext/standard/tests/file/is_dir_variation4.phpt (+2/-2)
ext/standard/tests/file/is_executable_variation1.phpt (+2/-2)
ext/standard/tests/file/is_file_variation4.phpt (+2/-2)
ext/standard/tests/file/is_readable_variation1.phpt (+3/-3)
ext/standard/tests/file/is_writable_variation1.phpt (+6/-6)
ext/standard/tests/file/mkdir_rmdir_variation2.phpt (+2/-2)
ext/standard/tests/file/readfile_variation10-win32.phpt (+11/-3)
ext/standard/tests/file/readfile_variation10.phpt (+21/-13)
ext/standard/tests/file/rename_variation13-win32.phpt (+1/-5)
ext/standard/tests/file/rename_variation13.phpt (+0/-4)
ext/standard/tests/file/stream_rfc2397_006.phpt (+2/-2)
ext/standard/tests/file/tempnam_variation3-win32.phpt (+3/-2)
ext/standard/tests/file/tempnam_variation3.phpt (+3/-3)
ext/standard/tests/file/tempnam_variation7-win32.phpt (+3/-3)
ext/standard/tests/file/tempnam_variation7.phpt (+3/-3)
ext/standard/tests/general_functions/bug44394_2.phpt (+1/-0)
ext/standard/tests/general_functions/bug46587.phpt (+16/-0)
ext/standard/tests/general_functions/get_cfg_var_variation8.phpt (+20/-20)
ext/standard/tests/general_functions/putenv_error1.phpt (+1/-1)
ext/standard/tests/general_functions/putenv_error2.phpt (+1/-1)
ext/standard/tests/http/bug53198.phpt (+56/-0)
ext/standard/tests/math/log_variation2.phpt (+3/-3)
ext/standard/tests/misc/syslog_vars_variation1.phpt (+1/-1)
ext/standard/tests/streams/bug46024.phpt (+1/-1)
ext/standard/tests/strings/bug47168.phpt (+12/-0)
ext/standard/tests/strings/bug49785.phpt (+1/-1)
ext/standard/tests/strings/bug53021.phpt (+34/-0)
ext/standard/tests/strings/bug53319.phpt (+17/-0)
ext/standard/tests/strings/get_html_translation_table_basic1.phpt (+408/-132)
ext/standard/tests/strings/get_html_translation_table_basic2.phpt (+1214/-327)
ext/standard/tests/strings/get_html_translation_table_basic3.phpt (+15/-28)
ext/standard/tests/strings/get_html_translation_table_basic4.phpt (+289/-0)
ext/standard/tests/strings/get_html_translation_table_error.phpt (+3/-3)
ext/standard/tests/strings/get_html_translation_table_variation1.phpt (+62/-870)
ext/standard/tests/strings/get_html_translation_table_variation2.phpt (+19/-29)
ext/standard/tests/strings/htmlentities-utf-2.phpt (+2/-2)
ext/standard/tests/strings/htmlentities-utf-3.phpt (+83/-0)
ext/standard/tests/strings/htmlentities-utf.phpt (+2/-2)
ext/standard/tests/strings/htmlentities17.phpt (+0/-3)
ext/standard/tests/strings/parse_str_basic3.phpt (+1/-1)
ext/standard/tests/url/bug52327.phpt (+12/-0)
ext/standard/tests/url/bug53248.phpt (+12/-0)
ext/standard/url.c (+2/-2)
ext/standard/var.c (+9/-5)
ext/standard/var_unserializer.c (+3/-3)
ext/standard/var_unserializer.c.orig (+3/-3)
ext/standard/var_unserializer.re (+2/-2)
ext/sybase_ct/config.m4 (+3/-3)
ext/sysvmsg/sysvmsg.c (+24/-24)
ext/tidy/tidy.c (+16/-4)
ext/wddx/tests/bug52468.phpt (+20/-0)
ext/wddx/wddx.c (+2/-1)
ext/xml/tests/bug49687.phpt (+24/-0)
ext/xml/xml.c (+111/-31)
ext/xsl/xsltprocessor.c (+5/-2)
ext/zip/php_zip.c (+30/-9)
ext/zip/zip_stream.c (+80/-3)
ext/zlib/tests/bug_52944.phpt (+157/-0)
ext/zlib/zlib_filter.c (+4/-1)
ext/zlib/zlib_fopen_wrapper.c (+2/-2)
main/SAPI.c (+3/-3)
main/fopen_wrappers.c (+40/-14)
main/main.c (+8/-3)
main/network.c (+47/-35)
main/output.c (+137/-151)
main/php_config.h.in (+11/-8)
main/php_ini.c (+32/-5)
main/php_streams.h (+5/-5)
main/php_version.h (+3/-3)
main/rfc1867.c (+28/-19)
main/streams/cast.c (+50/-2)
main/streams/glob_wrapper.c (+3/-1)
main/streams/php_streams_int.h (+8/-1)
main/streams/plain_wrapper.c (+17/-6)
main/streams/streams.c (+13/-10)
main/win95nt.h (+3/-3)
php.ini-development (+4/-6)
php.ini-production (+4/-7)
run-tests.php (+27/-5)
sapi/cli/config.w32 (+2/-2)
sapi/cli/php_cli.c (+2/-1)
sapi/fpm/Makefile.frag (+3/-3)
sapi/fpm/config.m4 (+58/-229)
sapi/fpm/fpm/fpm.c (+14/-10)
sapi/fpm/fpm/fpm.h (+3/-4)
sapi/fpm/fpm/fpm_atomic.h (+20/-2)
sapi/fpm/fpm/fpm_children.c (+21/-25)
sapi/fpm/fpm/fpm_children.h (+5/-5)
sapi/fpm/fpm/fpm_clock.c (+4/-4)
sapi/fpm/fpm/fpm_conf.c (+367/-156)
sapi/fpm/fpm/fpm_conf.h (+6/-1)
sapi/fpm/fpm/fpm_config.h (+63/-24)
sapi/fpm/fpm/fpm_env.c (+96/-0)
sapi/fpm/fpm/fpm_env.h (+3/-0)
sapi/fpm/fpm/fpm_events.c (+381/-76)
sapi/fpm/fpm/fpm_events.h (+23/-7)
sapi/fpm/fpm/fpm_main.c (+30/-12)
sapi/fpm/fpm/fpm_php.c (+2/-0)
sapi/fpm/fpm/fpm_php.h (+20/-0)
sapi/fpm/fpm/fpm_php_trace.c (+3/-3)
sapi/fpm/fpm/fpm_process_ctl.c (+71/-74)
sapi/fpm/fpm/fpm_process_ctl.h (+11/-6)
sapi/fpm/fpm/fpm_request.c (+8/-13)
sapi/fpm/fpm/fpm_shm.c (+1/-1)
sapi/fpm/fpm/fpm_signals.c (+5/-5)
sapi/fpm/fpm/fpm_sockets.c (+95/-14)
sapi/fpm/fpm/fpm_sockets.h (+10/-0)
sapi/fpm/fpm/fpm_status.c (+102/-21)
sapi/fpm/fpm/fpm_status.h (+7/-2)
sapi/fpm/fpm/fpm_stdio.c (+37/-20)
sapi/fpm/fpm/fpm_stdio.h (+1/-1)
sapi/fpm/fpm/fpm_trace_mach.c (+3/-3)
sapi/fpm/fpm/fpm_trace_pread.c (+3/-3)
sapi/fpm/fpm/fpm_trace_ptrace.c (+4/-4)
sapi/fpm/fpm/fpm_unix.c (+18/-18)
sapi/fpm/fpm/fpm_worker_pool.h (+1/-0)
sapi/fpm/fpm/zlog.c (+15/-1)
sapi/fpm/fpm/zlog.h (+4/-2)
sapi/fpm/init.d.php-fpm.in (+2/-2)
sapi/fpm/php-fpm.8.in (+199/-0)
sapi/fpm/php-fpm.conf.in (+56/-21)
scripts/phpize.m4 (+1/-1)
tests/basic/021.phpt (+1/-1)
tests/basic/bug46313-win.phpt (+2/-3)
tests/basic/bug51709_1.phpt (+1/-1)
tests/basic/bug51709_2.phpt (+1/-1)
tests/basic/bug53180.phpt (+19/-0)
tests/basic/rfc1867_max_file_uploads_empty_files.phpt (+101/-0)
tests/basic/rfc1867_max_file_uploads_empty_files_debug.phpt (+102/-0)
tests/classes/constants_error_004.phpt (+1/-1)
tests/output/bug46897.phpt (+2/-2)
tests/output/ob_clean_basic_001.phpt (+2/-2)
tests/output/ob_end_clean_basic_001.phpt (+2/-2)
tests/output/ob_end_flush_basic_001.phpt (+3/-3)
tests/output/ob_flush_basic_001.phpt (+2/-2)
tests/output/ob_get_level_basic_001.phpt (+2/-2)
tests/output/ob_start_basic_unerasable_002.phpt (+8/-8)
tests/output/ob_start_basic_unerasable_003.phpt (+2/-2)
tests/output/ob_start_basic_unerasable_004.phpt (+1/-1)
tests/output/ob_start_basic_unerasable_005.phpt (+2/-2)
tests/output/ob_start_callbacks.phpt (+39/-0)
tests/security/bug53226.phpt (+29/-0)
win32/build/Makefile (+3/-3)
win32/build/config.w32 (+7/-7)
win32/build/config.w32.h.in (+2/-1)
win32/build/template.rc (+2/-2)
win32/glob.c (+29/-31)
win32/php5dll.dsp (+0/-4)
win32/php5dllts.dsp (+0/-4)
win32/time.c (+2/-2)
win32/winutil.c (+6/-9)
To merge this branch: bzr merge lp:~legolas/ubuntu/natty/php5/5.3.5
Reviewer Review Type Date Requested Status
Artur Rona (community) Disapprove
Ubuntu branches Pending
Review via email: mp+48128@code.launchpad.net

Description of the change

To post a comment you must log in.
Revision history for this message
Artur Rona (ari-tczew) wrote :

Thank you for your time and efforts making Ubuntu better! However, we have php5 already merged from Debian.

review: Disapprove

Unmerged revisions

81. By Stas Verberkt

Deprecated mssql fix segfault patch.

80. By Stas Verberkt

Created PHP 5.3.5 including all patches

79. By Stas Verberkt

Inserted PHP 5.3.5.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'INSTALL'
2--- INSTALL 2010-08-01 11:58:54 +0000
3+++ INSTALL 2011-02-01 10:04:54 +0000
4@@ -279,7 +279,15 @@
5 it is your first install then you need to "make install" as well)
6
7 13. cd ../php-5.x.y
8-14. cp php.ini-dist /usr/local/lib/php.ini
9+
10+14. The PHP distribution provides two sample php.ini files, you can use them
11+ by
12+ cp php.ini-development /usr/local/lib/php.ini
13+ or
14+ cp php.ini-production /usr/local/lib/php.ini
15+
16+ If you choose one of these php.ini files be certain to read the list
17+ of changes within, as they affect how PHP behaves.
18
19 15. You can edit /usr/local/lib/php.ini file to set PHP options.
20 Edit your httpd.conf or srm.conf file and add:
21@@ -451,15 +459,19 @@
22
23 13. Setup your php.ini
24
25- cp php.ini-dist /usr/local/lib/php.ini
26+ The PHP distribution provides two sample php.ini files, you can use them
27+ by
28+ cp php.ini-development /usr/local/lib/php.ini
29+ or
30+ cp php.ini-production /usr/local/lib/php.ini
31+
32+ If you choose one of these php.ini files be certain to read the list
33+ of changes within, as they affect how PHP behaves.
34
35 You may edit your .ini file to set PHP options. If you prefer having
36 php.ini in another location, use --with-config-file-path=/some/path in
37 step 10.
38
39- If you instead choose php.ini-recommended, be certain to read the list
40- of changes within, as they affect how PHP behaves.
41-
42 14. Edit your httpd.conf to load the PHP module. The path on the right hand
43 side of the LoadModule statement must point to the path of the PHP
44 module on your system. The make install from above may have already
45@@ -858,7 +870,7 @@
46 Example 2-6. OpenBSD Package Install Example
47 # pkg_add php4-core-4.3.8.tgz
48 # /usr/local/sbin/phpxs -s
49-# cp /usr/local/share/doc/php4/php.ini-recommended /var/www/conf/php.ini
50+# cp /usr/local/share/doc/php4/php.ini-development /var/www/conf/php.ini
51 (add in mysql)
52 # pkg_add php4-mysql-4.3.8.tgz
53 # /usr/local/sbin/phpxs -a mysql
54@@ -1242,10 +1254,10 @@
55 back to the root of the Apache source directory and run the above
56 configure command again. That'll bring the link table up to date.
57 Run make and make install again.
58- 7. Copy and rename the php.ini-dist file to your bin directory from
59- your PHP 4 source directory: cp php.ini-dist /usr/local/bin/php.ini
60- or (if your don't have a local directory) cp php.ini-dist
61- /usr/bin/php.ini.
62+ 7. Copy and rename the php.ini-development or php.ini-production file to
63+ your bin directory from your PHP 4 source directory:
64+ cp php.ini-development /usr/local/bin/php.ini or (if your don't have a
65+ local directory) cp php.ini-development /usr/bin/php.ini.
66 __________________________________________________________________
67
68 Compiling for MacOS X Client
69@@ -1735,8 +1747,8 @@
70 example, set it with something like:
71 --with-config-file-path=/etc
72
73- And then you would copy php.ini-dist from the distribution to
74- /etc/php.ini and edit it to make any local changes you want.
75+ And then you would copy php.ini-development or php.ini-production from the
76+ distribution to /etc/php.ini and edit it to make any local changes you want.
77 --with-config-file-scan-dir=PATH
78
79 On Windows the default path for the php.ini file is the Windows
80
81=== modified file 'LICENSE'
82--- LICENSE 2010-08-01 11:58:54 +0000
83+++ LICENSE 2011-02-01 10:04:54 +0000
84@@ -1,6 +1,6 @@
85 --------------------------------------------------------------------
86 The PHP License, version 3.01
87-Copyright (c) 1999 - 2009 The PHP Group. All rights reserved.
88+Copyright (c) 1999 - 2010 The PHP Group. All rights reserved.
89 --------------------------------------------------------------------
90
91 Redistribution and use in source and binary forms, with or without
92
93=== modified file 'Makefile.global'
94--- Makefile.global 2010-08-01 11:58:54 +0000
95+++ Makefile.global 2011-02-01 10:04:54 +0000
96@@ -98,6 +98,7 @@
97 TEST_PHP_SRCDIR=$(top_srcdir) \
98 CC="$(CC)" \
99 $(PHP_EXECUTABLE) -n -c $(top_builddir)/tmp-php.ini $(PHP_TEST_SETTINGS) $(top_srcdir)/run-tests.php -n -c $(top_builddir)/tmp-php.ini -d extension_dir=$(top_builddir)/modules/ $(PHP_TEST_SHARED_EXTENSIONS) $(TESTS); \
100+ rm $(top_builddir)/tmp-php.ini; \
101 else \
102 echo "ERROR: Cannot run tests without CLI sapi."; \
103 fi
104
105=== modified file 'NEWS'
106--- NEWS 2010-08-01 11:58:54 +0000
107+++ NEWS 2011-02-01 10:04:54 +0000
108@@ -1,5 +1,361 @@
109-PHP NEWS
110+PHP NEWS
111 |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
112+06 Jan 2011, PHP 5.3.5
113+- Fixed Bug #53632 (infinite loop with x87 fpu). (Scott, Rasmus)
114+
115+09 Dec 2010, PHP 5.3.4
116+- Upgraded bundled Sqlite3 to version 3.7.3. (Ilia)
117+- Upgraded bundled PCRE to version 8.10. (Ilia)
118+
119+- Security enhancements:
120+ . Fixed crash in zip extract method (possible CWE-170).
121+ (Maksymilian Arciemowicz, Pierre)
122+ . Paths with NULL in them (foo\0bar.txt) are now considered as invalid. (Rasmus)
123+ . Fixed a possible double free in imap extension (Identified by Mateusz
124+ Kocielski). (CVE-2010-4150). (Ilia)
125+ . Fixed NULL pointer dereference in ZipArchive::getArchiveComment.
126+ (CVE-2010-3709). (Maksymilian Arciemowicz)
127+ . Fixed possible flaw in open_basedir (CVE-2010-3436). (Pierre)
128+ . Fixed MOPS-2010-24, fix string validation. (CVE-2010-2950). (Pierre)
129+ . Fixed symbolic resolution support when the target is a DFS share. (Pierre)
130+ . Fixed bug #52929 (Segfault in filter_var with FILTER_VALIDATE_EMAIL with
131+ large amount of data) (CVE-2010-3710). (Adam)
132+
133+- General improvements:
134+ . Added stat support for zip stream. (Pierre)
135+ . Added follow_location (enabled by default) option for the http stream
136+ support. (Pierre)
137+ . Improved support for is_link and related functions on Windows. (Pierre)
138+ . Added a 3rd parameter to get_html_translation_table. It now takes a charset
139+ hint, like htmlentities et al. (Gustavo)
140+
141+- Implemented feature requests:
142+ . Implemented FR #52348, added new constant ZEND_MULTIBYTE to detect
143+ zend multibyte at runtime. (Kalle)
144+ . Implemented FR #52173, added functions pcntl_get_last_error() and
145+ pcntl_strerror(). (nick dot telford at gmail dot com, Arnaud)
146+ . Implemented symbolic links support for open_basedir checks. (Pierre)
147+ . Implemented FR #51804, SplFileInfo::getLinkTarget on Windows. (Pierre)
148+ . Implemented FR #50692, not uploaded files don't count towards
149+ max_file_uploads limit. As a side improvement, temporary files are not opened
150+ for empty uploads and, in debug mode, 0-length uploads. (Gustavo)
151+
152+- Improved MySQLnd:
153+ . Added new character sets to mysqlnd, which are available in MySQL 5.5
154+ (Andrey)
155+
156+- Improved PHP-FPM SAPI:
157+ . Added '-p/--prefix' to php-fpm to use a custom prefix and run multiple
158+ instances. (fat)
159+ . Added custom process title for FPM. (fat)
160+ . Added '-t/--test' to php-fpm to check and validate FPM conf file. (fat)
161+ . Added statistics about listening socket queue length for FPM.
162+ (andrei dot nigmatulin at gmail dot com, fat)
163+
164+- Core:
165+ . Fixed extract() to do not overwrite $GLOBALS and $this when using
166+ EXTR_OVERWRITE. (jorto at redhat dot com)
167+ . Fixed bug in the Windows implementation of dns_get_record, where the two
168+ last parameters wouldn't be filled unless the type were DNS_ANY (Gustavo).
169+ . Changed the $context parameter on copy() to actually have an effect. (Kalle)
170+ . Fixed htmlentities/htmlspecialchars accepting certain ill-formed UTF-8
171+ sequences. (Gustavo)
172+ . Fixed bug #53409 (sleep() returns NULL on Windows). (Pierre)
173+ . Fixed bug #53319 (strip_tags() may strip '<br />' incorrectly). (Felipe)
174+ . Fixed bug #53304 (quot_print_decode does not handle lower-case hex digits).
175+ (Ilia, daniel dot mueller at inexio dot net)
176+ . Fixed bug #53248 (rawurlencode RFC 3986 EBCDIC support misses tilde char).
177+ (Justin Martin)
178+ . Fixed bug #53226 (file_exists fails on big filenames). (Adam)
179+ . Fixed bug #53198 (changing INI setting "from" with ini_set did not have any
180+ effect). (Gustavo)
181+ . Fixed bug #53180 (post_max_size=0 not disabling the limit when the content
182+ type is application/x-www-form-urlencoded or is not registered with PHP).
183+ (gm at tlink dot de, Gustavo)
184+ . Fixed bug #53141 (autoload misbehaves if called from closing session).
185+ (ladislav at marek dot su)
186+ . Fixed bug #53021 (In html_entity_decode, failure to convert numeric entities
187+ with ENT_NOQUOTES and ISO-8859-1). Fixed and extended the fix of ENT_NOQUOTES
188+ in html_entity_decode that had introduced the bug (rev #185591) to other
189+ encodings. Additionaly, html_entity_decode() now doesn't decode &#34; if
190+ ENT_NOQUOTES is given. (Gustavo)
191+ . Fixed bug #52931 (strripos not overloaded with function overloading enabled).
192+ (Felipe)
193+ . Fixed bug #52772 (var_dump() doesn't check for the existence of
194+ get_class_name before calling it). (Kalle, Gustavo)
195+ . Fixed bug #52534 (var_export array with negative key). (Felipe)
196+ . Fixed bug #52327 (base64_decode() improper handling of leading padding in
197+ strict mode). (Ilia)
198+ . Fixed bug #52260 (dns_get_record fails with non-existing domain on Windows).
199+ (a_jelly_doughnut at phpbb dot com, Pierre)
200+ . Fixed bug #50953 (socket will not connect to IPv4 address when the host has
201+ both IPv4 and IPv6 addresses, on Windows). (Gustavo, Pierre)
202+ . Fixed bug #50524 (proc_open on Windows does not respect cwd as it does on
203+ other platforms). (Pierre)
204+ . Fixed bug #49687 (utf8_decode vulnerabilities and deficiencies in the number
205+ of reported malformed sequences). (CVE-2010-3870) (Gustavo)
206+ . Fixed bug #49407 (get_html_translation_table doesn't handle UTF-8). (Gustavo)
207+ . Fixed bug #48831 (php -i has different output to php --ini). (Richard,
208+ Pierre)
209+ . Fixed bug #47643 (array_diff() takes over 3000 times longer than php 5.2.4).
210+ (Felipe)
211+ . Fixed bug #47168 (printf of floating point variable prints maximum of 40
212+ decimal places). (Ilia)
213+ . Fixed bug #46587 (mt_rand() does not check that max is greater than min).
214+ (Ilia)
215+ . Fixed bug #29085 (bad default include_path on Windows). (Pierre)
216+ . Fixed bug #25927 (get_html_translation_table calls the ' &#39; instead of
217+ &#039;). (Gustavo)
218+
219+- Zend engine:
220+ . Reverted fix for bug #51176 (Static calling in non-static method behaves
221+ like $this->). (Felipe)
222+ . Changed deprecated ini options on startup from E_WARNING to E_DEPRECATED.
223+ (Kalle)
224+ . Fixed NULL dereference in lex_scan on zend multibyte builds where the script
225+ had a flex incompatible encoding and there was no converter. (Gustavo)
226+ . Fixed covariance of return-by-ref constraints. (Etienne)
227+ . Fixed bug #53305 (E_NOTICE when defining a constant starts with
228+ __COMPILER_HALT_OFFSET__). (Felipe)
229+ . Fixed bug #52939 (zend_call_function does not respect ZEND_SEND_PREFER_REF).
230+ (Dmitry)
231+ . Fixed bug #52879 (Objects unreferenced in __get, __set, __isset or __unset
232+ can be freed too early). (mail_ben_schmidt at yahoo dot com dot au, Dmitry)
233+ . Fixed bug #52786 (PHP should reset section to [PHP] after ini sections).
234+ (Fedora at famillecollet dot com)
235+ . Fixed bug #52508 (newline problem with parse_ini_file+INI_SCANNER_RAW).
236+ (Felipe)
237+ . Fixed bug #52484 (__set() ignores setting properties with empty names).
238+ (Felipe)
239+ . Fixed bug #52361 (Throwing an exception in a destructor causes invalid
240+ catching). (Dmitry)
241+ . Fixed bug #51008 (Zend/tests/bug45877.phpt fails). (Dmitry)
242+
243+- Build issues:
244+ . Fixed bug #52436 (Compile error if systems do not have stdint.h)
245+ (Sriram Natarajan)
246+ . Fixed bug #50345 (nanosleep not detected properly on some solaris versions).
247+ (Ulf, Tony)
248+ . Fixed bug #49215 (make fails on glob_wrapper). (Felipe)
249+
250+- Calendar extension:
251+ . Fixed bug #52744 (cal_days_in_month incorrect for December 1 BCE).
252+ (gpap at internet dot gr, Adam)
253+
254+- cURL extension:
255+ . Fixed bug #52828 (curl_setopt does not accept persistent streams).
256+ (Gustavo, Ilia)
257+ . Fixed bug #52827 (cURL leaks handle and causes assertion error
258+ (CURLOPT_STDERR)). (Gustavo)
259+ . Fixed bug #52202 (CURLOPT_PRIVATE gets corrupted). (Ilia)
260+ . Fixed bug #50410 (curl extension slows down PHP on Windows). (Pierre)
261+
262+- DateTime extension:
263+ . Fixed bug #53297 (gettimeofday implementation in php/win32/time.c can return
264+ 1 million microsecs). (ped at 7gods dot org)
265+ . Fixed bug #52668 (Iterating over a dateperiod twice is broken). (Derick)
266+ . Fixed bug #52454 (Relative dates and getTimestamp increments by one day).
267+ (Derick)
268+ . Fixed bug #52430 (date_parse parse 24:xx:xx as valid time). (Derick)
269+ . Added support for the ( and ) delimiters/separators to
270+ DateTime::createFromFormat(). (Derick)
271+
272+- DBA extension:
273+ . Added Berkeley DB 5.1 support to the DBA extension. (Oracle Corp.)
274+
275+- DOM extension:
276+ . Fixed bug #52656 (DOMCdataSection does not work with splitText). (Ilia)
277+
278+- Filter extension:
279+ . Fixed the filter extension accepting IPv4 octets with a leading 0 as that
280+ belongs to the unsupported "dotted octal" representation. (Gustavo)
281+ . Fixed bug #53236 (problems in the validation of IPv6 addresses with leading
282+ and trailing :: in the filter extension). (Gustavo)
283+ . Fixed bug #50117 (problems in the validation of IPv6 addresses with IPv4
284+ addresses and ::). (Gustavo)
285+
286+- GD extension:
287+ . Fixed bug #53492 (fix crash if anti-aliasing steps are invalid). (Pierre)
288+
289+- GMP extension:
290+ . Fixed bug #52906 (gmp_mod returns negative result when non-negative is
291+ expected). (Stas)
292+ . Fixed bug #52849 (GNU MP invalid version match). (Adam)
293+
294+- Hash extension:
295+ . Fixed bug #51003 (unaligned memory access in ext/hash/hash_tiger.c).
296+ (Mike, Ilia)
297+
298+- Iconv extension:
299+ . Fixed bug #52941 (The 'iconv_mime_decode_headers' function is skipping
300+ headers). (Adam)
301+ . Fixed bug #52599 (iconv output handler outputs incorrect content type
302+ when flags are used). (Ilia)
303+ . Fixed bug #51250 (iconv_mime_decode() does not ignore malformed Q-encoded
304+ words). (Ilia)
305+
306+- Intl extension:
307+ . Fixed crashes on invalid parameters in intl extension. (CVE-2010-4409). (Stas, Maksymilian
308+ Arciemowicz)
309+ . Added support for formatting the timestamp stored in a DateTime object.
310+ (Stas)
311+ . Fixed bug #50590 (IntlDateFormatter::parse result is limited to the integer
312+ range). (Stas)
313+
314+- Mbstring extension:
315+ . Fixed bug #53273 (mb_strcut() returns garbage with the excessive length
316+ parameter). (CVE-2010-4156) (Mateusz Kocielski, Pierre, Moriyoshi)
317+ . Fixed bug #52981 (Unicode casing table was out-of-date. Updated with
318+ UnicodeData-6.0.0d7.txt and included the source of the generator program with
319+ the distribution) (Gustavo).
320+ . Fixed bug #52681 (mb_send_mail() appends an extra MIME-Version header).
321+ (Adam)
322+
323+- MSSQL extension:
324+ . Fixed possible crash in mssql_fetch_batch(). (Kalle)
325+ . Fixed bug #52843 (Segfault when optional parameters are not passed in to
326+ mssql_connect). (Felipe)
327+
328+- MySQL extension:
329+ . Fixed bug #52636 (php_mysql_fetch_hash writes long value into int).
330+ (Kalle, rein at basefarm dot no)
331+
332+- MySQLi extension:
333+ . Fixed bug #52891 (Wrong data inserted with mysqli/mysqlnd when using
334+ mysqli_stmt_bind_param and value> PHP_INT_MAX). (Andrey)
335+ . Fixed bug #52686 (mysql_stmt_attr_[gs]et argument points to incorrect type).
336+ (rein at basefarm dot no)
337+ . Fixed bug #52654 (mysqli doesn't install headers with structures it uses).
338+ (Andrey)
339+ . Fixed bug #52433 (Call to undefined method mysqli::poll() - must be static).
340+ (Andrey)
341+ . Fixed bug #52417 (MySQLi build failure with mysqlnd on MacOS X). (Andrey)
342+ . Fixed bug #52413 (MySQLi/libmysql build failure on OS X, FreeBSD). (Andrey)
343+ . Fixed bug #52390 (mysqli_report() should be per-request setting). (Kalle)
344+ . Fixed bug #52302 (mysqli_fetch_all does not work with MYSQLI_USE_RESULT).
345+ (Andrey)
346+ . Fixed bug #52221 (Misbehaviour of magic_quotes_runtime (get/set)). (Andrey)
347+ . Fixed bug #45921 (Can't initialize character set hebrew). (Andrey)
348+
349+- MySQLnd:
350+ . Fixed bug #52613 (crash in mysqlnd after hitting memory limit). (Andrey)
351+
352+- ODBC extension:
353+ - Fixed bug #52512 (Broken error handling in odbc_execute).
354+ (mkoegler at auto dot tuwien dot ac dot at)
355+
356+- Openssl extension:
357+ . Fixed possible blocking behavior in openssl_random_pseudo_bytes on Windows.
358+ (Pierre)
359+ . Fixed bug #53136 (Invalid read on openssl_csr_new()). (Felipe)
360+ . Fixed bug #52947 (segfault when ssl stream option capture_peer_cert_chain
361+ used). (Felipe)
362+
363+- Oracle Database extension (OCI8):
364+ . Fixed bug #53284 (Valgrind warnings in oci_set_* functions) (Oracle Corp.)
365+ . Fixed bug #51610 (Using oci_connect causes PHP to take a long time to
366+ exit). Requires Oracle 11.2.0.2 client libraries (or Oracle bug fix
367+ 9891199) for this patch to have an effect. (Oracle Corp.)
368+
369+- PCNTL extension:
370+ . Fixed bug #52784 (Race condition when handling many concurrent signals).
371+ (nick dot telford at gmail dot com, Arnaud)
372+
373+- PCRE extension:
374+ . Fixed bug #52971 (PCRE-Meta-Characters not working with utf-8). (Felipe)
375+ . Fixed bug #52732 (Docs say preg_match() returns FALSE on error, but it
376+ returns int(0)). (slugonamission at gmail dot com)
377+
378+- PHAR extension:
379+ . Fixed bug #50987 (unaligned memory access in phar.c).
380+ (geissert at debian dot org, Ilia)
381+
382+- PHP-FPM SAPI:
383+ . Fixed bug #53412 (segfault when using -y). (fat)
384+ . Fixed inconsistent backlog default value (-1) in FPM on many systems. (fat)
385+ . Fixed bug #52501 (libevent made FPM crashed when forking -- libevent has
386+ been removed). (fat)
387+ . Fixed bug #52725 (gcc builtin atomic functions were sometimes used when they
388+ were not available). (fat)
389+ . Fixed bug #52693 (configuration file errors are not logged to stderr). (fat)
390+ . Fixed bug #52674 (FPM Status page returns inconsistent Content-Type headers).
391+ (fat)
392+ . Fixed bug #52498 (libevent was not only linked to php-fpm). (fat)
393+
394+- PDO:
395+ . Fixed bug #52699 (PDO bindValue writes long int 32bit enum).
396+ (rein at basefarm dot no)
397+ . Fixed bug #52487 (PDO::FETCH_INTO leaks memory). (Felipe)
398+
399+- PDO DBLib driver:
400+ . Fixed bug #52546 (pdo_dblib segmentation fault when iterating MONEY values).
401+ (Felipe)
402+
403+- PDO Firebird driver:
404+ . Restored firebird support (VC9 builds only). (Pierre)
405+ . Fixed bug #53335 (pdo_firebird did not implement rowCount()).
406+ (preeves at ibphoenix dot com)
407+ . Fixed bug #53323 (pdo_firebird getAttribute() crash).
408+ (preeves at ibphoenix dot com)
409+
410+- PDO MySQL driver:
411+ . Fixed bug #52745 (Binding params doesn't work when selecting a date inside a
412+ CASE-WHEN). (Andrey)
413+
414+- PostgreSQL extension:
415+ . Fixed bug #47199 (pg_delete() fails on NULL). (ewgraf at gmail dot com)
416+
417+- Reflection extension:
418+ . Fixed ReflectionProperty::isDefault() giving a wrong result for properties
419+ obtained with ReflectionClass::getProperties(). (Gustavo)
420+- Reflection extension:
421+ . Fixed bug #53366 (Reflection doesnt get dynamic property value from
422+ getProperty()). (Felipe)
423+ . Fixed bug #52854 (ReflectionClass::newInstanceArgs does not work for classes
424+ without constructors). (Johannes)
425+
426+- SOAP extension:
427+ . Fixed bug #44248 (RFC2616 transgression while HTTPS request through proxy
428+ with SoapClient object). (Dmitry)
429+
430+- SPL extension:
431+ . Fixed bug #53362 (Segmentation fault when extending SplFixedArray). (Felipe)
432+ . Fixed bug #53279 (SplFileObject doesn't initialise default CSV escape
433+ character). (Adam)
434+ . Fixed bug #53144 (Segfault in SplObjectStorage::removeAll()). (Felipe)
435+ . Fixed bug #53071 (SPLObjectStorage defeats gc_collect_cycles). (Gustavo)
436+ . Fixed bug #52573 (SplFileObject::fscanf Segmentation fault). (Felipe)
437+ . Fixed bug #51763 (SplFileInfo::getType() does not work symbolic link
438+ and directory). (Pierre)
439+ . Fixed bug #50481 (Storing many SPLFixedArray in an array crashes). (Felipe)
440+ . Fixed bug #50579 (RegexIterator::REPLACE doesn't work). (Felipe)
441+
442+- SQLite3 extension:
443+ . Fixed bug #53463 (sqlite3 columnName() segfaults on bad column_number).
444+ (Felipe)
445+
446+- Streams:
447+ . Fixed forward stream seeking emulation in streams that don't support seeking
448+ in situations where the read operation gives back less data than requested
449+ and when there was data in the buffer before the emulation started. Also made
450+ more consistent its behavior -- should return failure every time less data
451+ than was requested was skipped. (Gustavo)
452+ . Fixed bug #53241 (stream casting that relies on fdopen/fopencookie fails
453+ with streams opened with, inter alia, the 'xb' mode). (Gustavo)
454+ . Fixed bug #53006 (stream_get_contents has an unpredictable behavior when the
455+ underlying stream does not support seeking). (Gustavo)
456+ . Fixed bug #52944 (Invalid write on second and subsequent reads with an
457+ inflate filter fed invalid data). (Gustavo)
458+ . Fixed bug #52820 (writes to fopencookie FILE* not commited when seeking the
459+ stream). (Gustavo)
460+
461+- WDDX extension:
462+ . Fixed bug #52468 (wddx_deserialize corrupts integer field value when left
463+ empty). (Felipe)
464+
465+- Zlib extension:
466+ . Fixed bug #52926 (zlib fopen wrapper does not use context). (Gustavo)
467+
468 22 Jul 2010, PHP 5.3.3
469 - Upgraded bundled sqlite to version 3.6.23.1. (Ilia)
470 - Upgraded bundled PCRE to version 8.02. (Ilia)
471@@ -234,8 +590,6 @@
472 com, Pierre)
473 - Fixed bug #50578 (incorrect shebang in phar.phar). (Fedora at FamilleCollet
474 dot com)
475-- Fixed bug #50555 (DateTime::sub() allows 'relative' time modifications).
476- (Derick)
477 - Fixed bug #50392 (date_create_from_format enforces 6 digits for 'u' format
478 character). (Derick)
479 - Fixed bug #50383 (Exceptions thrown in __call / __callStatic do not include
480@@ -243,6 +597,8 @@
481 - Fixed bug #50358 (Compile failure compiling ext/phar/util.lo). (Felipe)
482 - Fixed bug #50101 (name clash between global and local variable).
483 (patch by yoarvi at gmail dot com)
484+- Fixed bug #50055 (DateTime::sub() allows 'relative' time modifications).
485+ (Derick)
486 - Fixed bug #51002 (fix possible memory corruption with very long names).
487 (Pierre)
488 - Fixed bug #49893 (Crash while creating an instance of Zend_Mail_Storage_Pop3).
489
490=== modified file 'TSRM/tsrm_virtual_cwd.c'
491--- TSRM/tsrm_virtual_cwd.c 2010-08-01 11:58:54 +0000
492+++ TSRM/tsrm_virtual_cwd.c 2011-02-01 10:04:54 +0000
493@@ -14,10 +14,11 @@
494 +----------------------------------------------------------------------+
495 | Authors: Andi Gutmans <andi@zend.com> |
496 | Sascha Schumann <sascha@schumann.cx> |
497+ | Pierre Joye <pierre@php.net> |
498 +----------------------------------------------------------------------+
499 */
500
501-/* $Id: tsrm_virtual_cwd.c 300276 2010-06-08 13:27:30Z tony2001 $ */
502+/* $Id: tsrm_virtual_cwd.c 305070 2010-11-04 01:16:20Z pajoye $ */
503
504 #include <sys/types.h>
505 #include <sys/stat.h>
506@@ -38,6 +39,18 @@
507 # ifndef IO_REPARSE_TAG_SYMLINK
508 # define IO_REPARSE_TAG_SYMLINK 0xA000000C
509 # endif
510+
511+# ifndef VOLUME_NAME_NT
512+# define VOLUME_NAME_NT 0x2
513+# endif
514+
515+# ifndef VOLUME_NAME_DOS
516+# define VOLUME_NAME_DOS 0x0
517+# endif
518+#endif
519+
520+#ifndef S_IFLNK
521+# define S_IFLNK 0120000
522 #endif
523
524 #ifdef NETWARE
525@@ -83,14 +96,14 @@
526 #include <tchar.h>
527 #define tsrm_strtok_r(a,b,c) _tcstok((a),(b))
528 #define TOKENIZER_STRING "/\\"
529-
530-static int php_check_dots(const char *element, int n)
531+
532+static int php_check_dots(const char *element, int n)
533 {
534 while (n-- > 0) if (element[n] != '.') break;
535
536 return (n != -1);
537 }
538-
539+
540 #define IS_DIRECTORY_UP(element, len) \
541 (len >= 2 && !php_check_dots(element, len))
542
543@@ -124,7 +137,7 @@
544
545 /* define this to check semantics */
546 #define IS_DIR_OK(s) (1)
547-
548+
549 #ifndef IS_DIR_OK
550 #define IS_DIR_OK(state) (php_is_dir_ok(state) == 0)
551 #endif
552@@ -137,7 +150,7 @@
553
554 #define CWD_STATE_FREE(s) \
555 free((s)->cwd);
556-
557+
558 #ifdef TSRM_WIN32
559
560 #ifdef CTL_CODE
561@@ -202,21 +215,98 @@
562 return (time_t)UnixTime;
563 }
564
565+CWD_API int php_sys_readlink(const char *link, char *target, size_t target_len){ /* {{{ */
566+ HINSTANCE kernel32;
567+ HANDLE hFile;
568+ DWORD dwRet;
569+
570+ typedef BOOL (WINAPI *gfpnh_func)(HANDLE, LPTSTR, DWORD, DWORD);
571+ gfpnh_func pGetFinalPathNameByHandle;
572+
573+ kernel32 = LoadLibrary("kernel32.dll");
574+
575+ if (kernel32) {
576+ pGetFinalPathNameByHandle = (gfpnh_func)GetProcAddress(kernel32, "GetFinalPathNameByHandleA");
577+ if (pGetFinalPathNameByHandle == NULL) {
578+ return -1;
579+ }
580+ } else {
581+ return -1;
582+ }
583+
584+ hFile = CreateFile(link, // file to open
585+ GENERIC_READ, // open for reading
586+ FILE_SHARE_READ, // share for reading
587+ NULL, // default security
588+ OPEN_EXISTING, // existing file only
589+ FILE_FLAG_BACKUP_SEMANTICS, // normal file
590+ NULL); // no attr. template
591+
592+ if( hFile == INVALID_HANDLE_VALUE) {
593+ return -1;
594+ }
595+
596+ dwRet = pGetFinalPathNameByHandle(hFile, target, MAXPATHLEN, VOLUME_NAME_DOS);
597+ if(dwRet >= MAXPATHLEN) {
598+ return -1;
599+ }
600+
601+ CloseHandle(hFile);
602+
603+ if(dwRet > 4) {
604+ /* Skip first 4 characters if they are "\??\" */
605+ if(target[0] == '\\' && target[1] == '\\' && target[2] == '?' && target[3] == '\\') {
606+ char tmp[MAXPATHLEN];
607+ unsigned int offset = 4;
608+ dwRet -= 4;
609+
610+ /* \??\UNC\ */
611+ if (dwRet > 7 && target[4] == 'U' && target[5] == 'N' && target[6] == 'C') {
612+ offset += 2;
613+ dwRet -= 2;
614+ target[offset] = '\\';
615+ }
616+
617+ memcpy(tmp, target + offset, dwRet);
618+ memcpy(target, tmp, dwRet);
619+ }
620+ }
621+
622+ target[dwRet] = '\0';
623+ return dwRet;
624+}
625+/* }}} */
626+
627 CWD_API int php_sys_stat(const char *path, struct stat *buf) /* {{{ */
628 {
629+ return php_sys_stat_ex(path, buf, 0);
630+}
631+/* }}} */
632+
633+CWD_API int php_sys_lstat(const char *path, struct stat *buf) /* {{{ */
634+{
635+ return php_sys_stat_ex(path, buf, 1);
636+}
637+/* }}} */
638+
639+CWD_API int php_sys_stat_ex(const char *path, struct stat *buf, int lstat) /* {{{ */
640+{
641 WIN32_FILE_ATTRIBUTE_DATA data;
642 __int64 t;
643+ const size_t path_len = strlen(path);
644
645 if (!GetFileAttributesEx(path, GetFileExInfoStandard, &data)) {
646 return stat(path, buf);
647 }
648
649- if (path[1] == ':') {
650+ if (path_len >= 1 && path[1] == ':') {
651 if (path[0] >= 'A' && path[0] <= 'Z') {
652 buf->st_dev = buf->st_rdev = path[0] - 'A';
653 } else {
654 buf->st_dev = buf->st_rdev = path[0] - 'a';
655 }
656+ } else if (IS_UNC_PATH(path, path_len)) {
657+ buf->st_dev = buf->st_rdev = 0;
658 } else {
659 char cur_path[MAXPATHLEN+1];
660 DWORD len = sizeof(cur_path);
661@@ -245,19 +335,56 @@
662 }
663 if (tmp != cur_path) {
664 free(tmp);
665- }
666+ }
667 }
668+
669 buf->st_uid = buf->st_gid = buf->st_ino = 0;
670- buf->st_mode = (data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) ? (S_IFDIR|S_IEXEC|(S_IEXEC>>3)|(S_IEXEC>>6)) : S_IFREG;
671- buf->st_mode |= (data.dwFileAttributes & FILE_ATTRIBUTE_READONLY) ? (S_IREAD|(S_IREAD>>3)|(S_IREAD>>6)) : (S_IREAD|(S_IREAD>>3)|(S_IREAD>>6)|S_IWRITE|(S_IWRITE>>3)|(S_IWRITE>>6));
672+
673+ if (lstat && data.dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT) {
674+ /* File is a reparse point. Get the target */
675+ HANDLE hLink = NULL;
676+ REPARSE_DATA_BUFFER * pbuffer;
677+ unsigned int retlength = 0;
678+ TSRM_ALLOCA_FLAG(use_heap_large);
679+
680+ hLink = CreateFile(path, GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_FLAG_OPEN_REPARSE_POINT|FILE_FLAG_BACKUP_SEMANTICS, NULL);
681+ if(hLink == INVALID_HANDLE_VALUE) {
682+ return -1;
683+ }
684+
685+ pbuffer = (REPARSE_DATA_BUFFER *)tsrm_do_alloca(MAXIMUM_REPARSE_DATA_BUFFER_SIZE, use_heap_large);
686+ if(!DeviceIoControl(hLink, FSCTL_GET_REPARSE_POINT, NULL, 0, pbuffer, MAXIMUM_REPARSE_DATA_BUFFER_SIZE, &retlength, NULL)) {
687+ tsrm_free_alloca(pbuffer, use_heap_large);
688+ CloseHandle(hLink);
689+ return -1;
690+ }
691+
692+ CloseHandle(hLink);
693+
694+ if(pbuffer->ReparseTag == IO_REPARSE_TAG_SYMLINK) {
695+ buf->st_mode = S_IFLNK;
696+ buf->st_mode |= (data.dwFileAttributes & FILE_ATTRIBUTE_READONLY) ? (S_IREAD|(S_IREAD>>3)|(S_IREAD>>6)) : (S_IREAD|(S_IREAD>>3)|(S_IREAD>>6)|S_IWRITE|(S_IWRITE>>3)|(S_IWRITE>>6));
697+ }
698+
699+#if 0 /* Not used yet */
700+ else if(pbuffer->ReparseTag == IO_REPARSE_TAG_MOUNT_POINT) {
701+ buf->st_mode |=;
702+ }
703+#endif
704+ tsrm_free_alloca(pbuffer, use_heap_large);
705+ } else {
706+ buf->st_mode = (data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) ? (S_IFDIR|S_IEXEC|(S_IEXEC>>3)|(S_IEXEC>>6)) : S_IFREG;
707+ buf->st_mode |= (data.dwFileAttributes & FILE_ATTRIBUTE_READONLY) ? (S_IREAD|(S_IREAD>>3)|(S_IREAD>>6)) : (S_IREAD|(S_IREAD>>3)|(S_IREAD>>6)|S_IWRITE|(S_IWRITE>>3)|(S_IWRITE>>6));
708+ }
709+
710 if ((data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == 0) {
711 int len = strlen(path);
712
713 if (path[len-4] == '.') {
714 if (_memicmp(path+len-3, "exe", 3) == 0 ||
715- _memicmp(path+len-3, "com", 3) == 0 ||
716- _memicmp(path+len-3, "bat", 3) == 0 ||
717- _memicmp(path+len-3, "cmd", 3) == 0) {
718+ _memicmp(path+len-3, "com", 3) == 0 ||
719+ _memicmp(path+len-3, "bat", 3) == 0 ||
720+ _memicmp(path+len-3, "cmd", 3) == 0) {
721 buf->st_mode |= (S_IEXEC|(S_IEXEC>>3)|(S_IEXEC>>6));
722 }
723 }
724@@ -332,7 +459,7 @@
725 }
726 }
727 #else
728- result = getcwd(cwd, sizeof(cwd));
729+ result = getcwd(cwd, sizeof(cwd));
730 #endif
731 if (!result) {
732 cwd[0] = '\0';
733@@ -383,7 +510,7 @@
734 *length = 1;
735 retval = (char *) malloc(2);
736 retval[0] = DEFAULT_SLASH;
737- retval[1] = '\0';
738+ retval[1] = '\0';
739 return retval;
740 }
741
742@@ -493,7 +620,7 @@
743
744 while (*bucket != NULL) {
745 if (key == (*bucket)->key && path_len == (*bucket)->path_len &&
746- memcmp(path, (*bucket)->path, path_len) == 0) {
747+ memcmp(path, (*bucket)->path, path_len) == 0) {
748 realpath_cache_bucket *r = *bucket;
749 *bucket = (*bucket)->next;
750 CWDG(realpath_cache_size) -= sizeof(realpath_cache_bucket) + r->path_len + 1 + r->realpath_len + 1;
751@@ -510,9 +637,9 @@
752 {
753 long size = sizeof(realpath_cache_bucket) + path_len + 1;
754 int same = 1;
755-
756+
757 if (realpath_len != path_len ||
758- memcmp(path, realpath, path_len) != 0) {
759+ memcmp(path, realpath, path_len) != 0) {
760 size += realpath_len + 1;
761 same = 0;
762 }
763@@ -570,7 +697,7 @@
764 CWDG(realpath_cache_size) -= sizeof(realpath_cache_bucket) + r->path_len + 1 + r->realpath_len + 1;
765 free(r);
766 } else if (key == (*bucket)->key && path_len == (*bucket)->path_len &&
767- memcmp(path, (*bucket)->path, path_len) == 0) {
768+ memcmp(path, (*bucket)->path, path_len) == 0) {
769 return *bucket;
770 } else {
771 bucket = &(*bucket)->next;
772@@ -582,21 +709,21 @@
773
774 CWD_API realpath_cache_bucket* realpath_cache_lookup(const char *path, int path_len, time_t t TSRMLS_DC) /* {{{ */
775 {
776- return realpath_cache_find(path, path_len, t TSRMLS_CC);
777+ return realpath_cache_find(path, path_len, t TSRMLS_CC);
778 }
779 /* }}} */
780
781-CWD_API int realpath_cache_size(TSRMLS_D)
782+CWD_API int realpath_cache_size(TSRMLS_D)
783 {
784 return CWDG(realpath_cache_size);
785 }
786
787-CWD_API int realpath_cache_max_buckets(TSRMLS_D)
788+CWD_API int realpath_cache_max_buckets(TSRMLS_D)
789 {
790 return (sizeof(CWDG(realpath_cache)) / sizeof(CWDG(realpath_cache)[0]));
791 }
792
793-CWD_API realpath_cache_bucket** realpath_cache_get_buckets(TSRMLS_D)
794+CWD_API realpath_cache_bucket** realpath_cache_get_buckets(TSRMLS_D)
795 {
796 return CWDG(realpath_cache);
797 }
798@@ -650,14 +777,14 @@
799 if (!start) {
800 /* leading '..' must not be removed in case of relative path */
801 if (j == 0 && path[0] == '.' && path[1] == '.' &&
802- IS_SLASH(path[2])) {
803+ IS_SLASH(path[2])) {
804 path[3] = '.';
805 path[4] = '.';
806 path[5] = DEFAULT_SLASH;
807 j = 5;
808- } else if (j > 0 &&
809- path[j+1] == '.' && path[j+2] == '.' &&
810- IS_SLASH(path[j+3])) {
811+ } else if (j > 0 &&
812+ path[j+1] == '.' && path[j+2] == '.' &&
813+ IS_SLASH(path[j+3])) {
814 j += 4;
815 path[j++] = '.';
816 path[j++] = '.';
817@@ -673,7 +800,7 @@
818 }
819 return j;
820 }
821-
822+
823 path[len] = 0;
824
825 save = (use_realpath != CWD_EXPAND);
826@@ -683,18 +810,18 @@
827 if (!*t) {
828 *t = time(0);
829 }
830- if ((bucket = realpath_cache_find(path, len, *t TSRMLS_CC)) != NULL) {
831- if (is_dir && !bucket->is_dir) {
832+ if ((bucket = realpath_cache_find(path, len, *t TSRMLS_CC)) != NULL) {
833+ if (is_dir && !bucket->is_dir) {
834 /* not a directory */
835 return -1;
836- } else {
837- if (link_is_dir) {
838- *link_is_dir = bucket->is_dir;
839- }
840+ } else {
841+ if (link_is_dir) {
842+ *link_is_dir = bucket->is_dir;
843+ }
844 memcpy(path, bucket->realpath, bucket->realpath_len + 1);
845- return bucket->realpath_len;
846+ return bucket->realpath_len;
847 }
848- }
849+ }
850 }
851
852 #ifdef TSRM_WIN32
853@@ -706,7 +833,7 @@
854 /* continue resolution anyway but don't save result in the cache */
855 save = 0;
856 }
857-
858+
859 if (save) {
860 FindClose(hFind);
861 }
862@@ -714,9 +841,9 @@
863 tmp = tsrm_do_alloca(len+1, use_heap);
864 memcpy(tmp, path, len+1);
865
866- if(save &&
867- !(IS_UNC_PATH(path, len) && len >= 3 && path[2] != '?') &&
868- (data.dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT)) {
869+ if(save &&
870+ !(IS_UNC_PATH(path, len) && len >= 3 && path[2] != '?') &&
871+ (data.dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT)) {
872 /* File is a reparse point. Get the target */
873 HANDLE hLink = NULL;
874 REPARSE_DATA_BUFFER * pbuffer;
875@@ -751,7 +878,7 @@
876 reparsetarget = pbuffer->SymbolicLinkReparseBuffer.ReparseTarget;
877 printname_len = pbuffer->MountPointReparseBuffer.PrintNameLength / sizeof(WCHAR);
878 isabsolute = (pbuffer->SymbolicLinkReparseBuffer.Flags == 0) ? 1 : 0;
879- if (!WideCharToMultiByte(CP_THREAD_ACP, 0,
880+ if (!WideCharToMultiByte(CP_THREAD_ACP, 0,
881 reparsetarget + pbuffer->MountPointReparseBuffer.PrintNameOffset / sizeof(WCHAR),
882 printname_len + 1,
883 printname, MAX_PATH, NULL, NULL
884@@ -763,7 +890,7 @@
885 printname[printname_len] = 0;
886
887 substitutename_len = pbuffer->MountPointReparseBuffer.SubstituteNameLength / sizeof(WCHAR);
888- if (!WideCharToMultiByte(CP_THREAD_ACP, 0,
889+ if (!WideCharToMultiByte(CP_THREAD_ACP, 0,
890 reparsetarget + pbuffer->MountPointReparseBuffer.SubstituteNameOffset / sizeof(WCHAR),
891 substitutename_len + 1,
892 substitutename, MAX_PATH, NULL, NULL
893@@ -777,7 +904,7 @@
894 isabsolute = 1;
895 reparsetarget = pbuffer->MountPointReparseBuffer.ReparseTarget;
896 printname_len = pbuffer->MountPointReparseBuffer.PrintNameLength / sizeof(WCHAR);
897- if (!WideCharToMultiByte(CP_THREAD_ACP, 0,
898+ if (!WideCharToMultiByte(CP_THREAD_ACP, 0,
899 reparsetarget + pbuffer->MountPointReparseBuffer.PrintNameOffset / sizeof(WCHAR),
900 printname_len + 1,
901 printname, MAX_PATH, NULL, NULL
902@@ -788,7 +915,7 @@
903 printname[pbuffer->MountPointReparseBuffer.PrintNameLength / sizeof(WCHAR)] = 0;
904
905 substitutename_len = pbuffer->MountPointReparseBuffer.SubstituteNameLength / sizeof(WCHAR);
906- if (!WideCharToMultiByte(CP_THREAD_ACP, 0,
907+ if (!WideCharToMultiByte(CP_THREAD_ACP, 0,
908 reparsetarget + pbuffer->MountPointReparseBuffer.SubstituteNameOffset / sizeof(WCHAR),
909 substitutename_len + 1,
910 substitutename, MAX_PATH, NULL, NULL
911@@ -803,20 +930,22 @@
912 }
913
914 if(isabsolute && substitutename_len > 4) {
915- /* Do not resolve volumes (for now). A mounted point can
916+ /* Do not resolve volumes (for now). A mounted point can
917 target a volume without a drive, it is not certain that
918- all IO functions we use in php and its deps support
919+ all IO functions we use in php and its deps support
920 path with volume GUID instead of the DOS way, like:
921 d:\test\mnt\foo
922 \\?\Volume{62d1c3f8-83b9-11de-b108-806e6f6e6963}\foo
923 */
924- if (strncmp(substitutename, "\\??\\Volume{",11) == 0
925- || strncmp(substitutename, "\\\\?\\Volume{",11) == 0) {
926- isVolume = TRUE;
927+ if (strncmp(substitutename, "\\??\\Volume{",11) == 0
928+ || strncmp(substitutename, "\\\\?\\Volume{",11) == 0
929+ || strncmp(substitutename, "\\??\\UNC\\", 8) == 0
930+ ) {
931+ isVolume = TRUE;
932 substitutename_off = 0;
933 } else
934 /* do not use the \??\ and \\?\ prefix*/
935- if (strncmp(substitutename, "\\??\\", 4) == 0
936+ if (strncmp(substitutename, "\\??\\", 4) == 0
937 || strncmp(substitutename, "\\\\?\\", 4) == 0) {
938 substitutename_off = 4;
939 }
940@@ -887,7 +1016,7 @@
941 tmp = tsrm_do_alloca(len+1, use_heap);
942 memcpy(tmp, path, len+1);
943 #else
944- if (save && lstat(path, &st) < 0) {
945+ if (save && php_sys_lstat(path, &st) < 0) {
946 if (use_realpath == CWD_REALPATH) {
947 /* file not found */
948 return -1;
949@@ -900,8 +1029,8 @@
950 memcpy(tmp, path, len+1);
951
952 if (save && S_ISLNK(st.st_mode)) {
953- if (++(*ll) > LINK_MAX || (j = readlink(tmp, path, MAXPATHLEN)) < 0) {
954- /* too many links or broken symlinks */
955+ if (++(*ll) > LINK_MAX || (j = php_sys_readlink(tmp, path, MAXPATHLEN)) < 0) {
956+ /* too many links or broken symlinks */
957 tsrm_free_alloca(tmp, use_heap);
958 return -1;
959 }
960@@ -913,10 +1042,10 @@
961 return -1;
962 }
963 } else {
964- if (i + j >= MAXPATHLEN-1) {
965+ if (i + j >= MAXPATHLEN-1) {
966 tsrm_free_alloca(tmp, use_heap);
967 return -1; /* buffer overflow */
968- }
969+ }
970 memmove(path+i, path, j+1);
971 memcpy(path, tmp, i-1);
972 path[i-1] = DEFAULT_SLASH;
973@@ -1038,18 +1167,18 @@
974 state_cwd_length = 2;
975 while (IS_SLASH(state->cwd[state_cwd_length])) {
976 state_cwd_length++;
977- }
978+ }
979 while (state->cwd[state_cwd_length] &&
980- !IS_SLASH(state->cwd[state_cwd_length])) {
981+ !IS_SLASH(state->cwd[state_cwd_length])) {
982 state_cwd_length++;
983- }
984+ }
985 while (IS_SLASH(state->cwd[state_cwd_length])) {
986 state_cwd_length++;
987- }
988+ }
989 while (state->cwd[state_cwd_length] &&
990- !IS_SLASH(state->cwd[state_cwd_length])) {
991+ !IS_SLASH(state->cwd[state_cwd_length])) {
992 state_cwd_length++;
993- }
994+ }
995 }
996 }
997 #endif
998@@ -1061,7 +1190,7 @@
999 memcpy(resolved_path + state_cwd_length + 1, path, path_length + 1);
1000 path_length += state_cwd_length + 1;
1001 }
1002- } else {
1003+ } else {
1004 #ifdef TSRM_WIN32
1005 if (path_length > 2 && path[1] == ':' && !IS_SLASH(path[2])) {
1006 resolved_path[0] = path[0];
1007@@ -1072,11 +1201,11 @@
1008 } else
1009 #endif
1010 memcpy(resolved_path, path, path_length + 1);
1011- }
1012+ }
1013
1014 #ifdef TSRM_WIN32
1015 if (memchr(resolved_path, '*', path_length) ||
1016- memchr(resolved_path, '?', path_length)) {
1017+ memchr(resolved_path, '?', path_length)) {
1018 return 1;
1019 }
1020 #endif
1021@@ -1126,12 +1255,12 @@
1022 add_slash = (use_realpath != CWD_REALPATH) && path_length > 0 && IS_SLASH(resolved_path[path_length-1]);
1023 t = CWDG(realpath_cache_ttl) ? 0 : -1;
1024 path_length = tsrm_realpath_r(resolved_path, start, path_length, &ll, &t, use_realpath, 0, NULL TSRMLS_CC);
1025-
1026+
1027 if (path_length < 0) {
1028 errno = ENOENT;
1029 return 1;
1030 }
1031-
1032+
1033 if (!start && !path_length) {
1034 resolved_path[path_length++] = '.';
1035 }
1036@@ -1184,7 +1313,7 @@
1037 memcpy(state->cwd, resolved_path, state->cwd_length+1);
1038 ret = 0;
1039 }
1040-
1041+
1042 #if VIRTUAL_CWD_DEBUG
1043 fprintf (stderr, "virtual_file_ex() = %s\n",state->cwd);
1044 #endif
1045@@ -1207,7 +1336,7 @@
1046
1047 if (length == 0) {
1048 return 1; /* Can't cd to empty string */
1049- }
1050+ }
1051 while(--length >= 0 && !IS_SLASH(path[length])) {
1052 }
1053
1054@@ -1242,16 +1371,16 @@
1055 if (!*path) {
1056 new_state.cwd = (char*)malloc(1);
1057 new_state.cwd[0] = '\0';
1058- new_state.cwd_length = 0;
1059- if (VCWD_GETCWD(cwd, MAXPATHLEN)) {
1060- path = cwd;
1061+ new_state.cwd_length = 0;
1062+ if (VCWD_GETCWD(cwd, MAXPATHLEN)) {
1063+ path = cwd;
1064 }
1065 } else if (!IS_ABSOLUTE_PATH(path, strlen(path))) {
1066 CWD_STATE_COPY(&new_state, &CWDG(cwd));
1067 } else {
1068 new_state.cwd = (char*)malloc(1);
1069 new_state.cwd[0] = '\0';
1070- new_state.cwd_length = 0;
1071+ new_state.cwd_length = 0;
1072 }
1073
1074 if (virtual_file_ex(&new_state, path, NULL, CWD_REALPATH)==0) {
1075@@ -1317,7 +1446,7 @@
1076 {
1077 cwd_state new_state;
1078 int ret;
1079-
1080+
1081 CWD_STATE_COPY(&new_state, &CWDG(cwd));
1082 if (virtual_file_ex(&new_state, pathname, NULL, CWD_REALPATH)) {
1083 CWD_STATE_FREE(&new_state);
1084@@ -1329,9 +1458,9 @@
1085 #else
1086 ret = access(new_state.cwd, mode);
1087 #endif
1088-
1089+
1090 CWD_STATE_FREE(&new_state);
1091-
1092+
1093 return ret;
1094 }
1095 /* }}} */
1096@@ -1352,12 +1481,12 @@
1097 TSRM_API int win32_utime(const char *filename, struct utimbuf *buf) /* {{{ */
1098 {
1099 FILETIME mtime, atime;
1100- HANDLE hFile;
1101+ HANDLE hFile;
1102
1103 hFile = CreateFile(filename, GENERIC_WRITE, FILE_SHARE_WRITE|FILE_SHARE_READ, NULL,
1104 OPEN_ALWAYS, FILE_FLAG_BACKUP_SEMANTICS, NULL);
1105
1106- /* OPEN_ALWAYS mode sets the last error to ERROR_ALREADY_EXISTS but
1107+ /* OPEN_ALWAYS mode sets the last error to ERROR_ALREADY_EXISTS but
1108 the CreateFile operation succeeds */
1109 if (GetLastError() == ERROR_ALREADY_EXISTS) {
1110 SetLastError(0);
1111@@ -1477,7 +1606,7 @@
1112 f = open(new_state.cwd, flags, mode);
1113 } else {
1114 f = open(new_state.cwd, flags);
1115- }
1116+ }
1117 CWD_STATE_FREE(&new_state);
1118 return f;
1119 }
1120@@ -1556,7 +1685,6 @@
1121 }
1122 /* }}} */
1123
1124-#if !defined(TSRM_WIN32)
1125 CWD_API int virtual_lstat(const char *path, struct stat *buf TSRMLS_DC) /* {{{ */
1126 {
1127 cwd_state new_state;
1128@@ -1568,13 +1696,12 @@
1129 return -1;
1130 }
1131
1132- retval = lstat(new_state.cwd, buf);
1133+ retval = php_sys_lstat(new_state.cwd, buf);
1134
1135 CWD_STATE_FREE(&new_state);
1136 return retval;
1137 }
1138 /* }}} */
1139-#endif
1140
1141 CWD_API int virtual_unlink(const char *path TSRMLS_DC) /* {{{ */
1142 {
1143@@ -1738,7 +1865,7 @@
1144 }
1145 *ptr++ = '\'';
1146 }
1147-
1148+
1149 *ptr++ = ' ';
1150 *ptr++ = ';';
1151 *ptr++ = ' ';
1152@@ -1761,18 +1888,18 @@
1153 if (!*path) {
1154 new_state.cwd = (char*)malloc(1);
1155 new_state.cwd[0] = '\0';
1156- new_state.cwd_length = 0;
1157- if (VCWD_GETCWD(cwd, MAXPATHLEN)) {
1158- path = cwd;
1159+ new_state.cwd_length = 0;
1160+ if (VCWD_GETCWD(cwd, MAXPATHLEN)) {
1161+ path = cwd;
1162 }
1163 } else if (!IS_ABSOLUTE_PATH(path, strlen(path)) &&
1164- VCWD_GETCWD(cwd, MAXPATHLEN)) {
1165+ VCWD_GETCWD(cwd, MAXPATHLEN)) {
1166 new_state.cwd = strdup(cwd);
1167 new_state.cwd_length = strlen(cwd);
1168 } else {
1169 new_state.cwd = (char*)malloc(1);
1170 new_state.cwd[0] = '\0';
1171- new_state.cwd_length = 0;
1172+ new_state.cwd_length = 0;
1173 }
1174
1175 if (virtual_file_ex(&new_state, path, NULL, CWD_REALPATH)) {
1176
1177=== modified file 'TSRM/tsrm_virtual_cwd.h'
1178--- TSRM/tsrm_virtual_cwd.h 2010-03-16 09:09:50 +0000
1179+++ TSRM/tsrm_virtual_cwd.h 2011-02-01 10:04:54 +0000
1180@@ -14,10 +14,11 @@
1181 +----------------------------------------------------------------------+
1182 | Authors: Andi Gutmans <andi@zend.com> |
1183 | Sascha Schumann <sascha@schumann.cx> |
1184+ | Pierre Joye <pierre@php.net> |
1185 +----------------------------------------------------------------------+
1186 */
1187
1188-/* $Id: tsrm_virtual_cwd.h 293036 2010-01-03 09:23:27Z sebastian $ */
1189+/* $Id: tsrm_virtual_cwd.h 305070 2010-11-04 01:16:20Z pajoye $ */
1190
1191 #ifndef VIRTUAL_CWD_H
1192 #define VIRTUAL_CWD_H
1193@@ -107,7 +108,7 @@
1194 #define COPY_WHEN_ABSOLUTE(path) 0
1195 #endif
1196
1197-#ifndef IS_ABSOLUTE_PATH
1198+#ifndef IS_ABSOLUTE_PATH
1199 #define IS_ABSOLUTE_PATH(path, len) \
1200 (IS_SLASH(path[0]))
1201 #endif
1202@@ -129,9 +130,16 @@
1203 #endif
1204
1205 #ifdef TSRM_WIN32
1206+CWD_API int php_sys_stat_ex(const char *path, struct stat *buf, int lstat);
1207 CWD_API int php_sys_stat(const char *path, struct stat *buf);
1208+CWD_API int php_sys_lstat(const char *path, struct stat *buf);
1209+CWD_API int php_sys_readlink(const char *link, char *target, size_t target_len);
1210 #else
1211 # define php_sys_stat stat
1212+# define php_sys_lstat lstat
1213+# ifdef HAVE_SYMLINK
1214+# define php_sys_readlink(link, target, target_len) readlink(link, target, target_len)
1215+# endif
1216 #endif
1217
1218 typedef struct _cwd_state {
1219@@ -155,9 +163,7 @@
1220 CWD_API int virtual_creat(const char *path, mode_t mode TSRMLS_DC);
1221 CWD_API int virtual_rename(char *oldname, char *newname TSRMLS_DC);
1222 CWD_API int virtual_stat(const char *path, struct stat *buf TSRMLS_DC);
1223-#if !defined(TSRM_WIN32)
1224 CWD_API int virtual_lstat(const char *path, struct stat *buf TSRMLS_DC);
1225-#endif
1226 CWD_API int virtual_unlink(const char *path TSRMLS_DC);
1227 CWD_API int virtual_mkdir(const char *pathname, mode_t mode TSRMLS_DC);
1228 CWD_API int virtual_rmdir(const char *pathname TSRMLS_DC);
1229@@ -188,7 +194,7 @@
1230 CWD_API int virtual_chown(const char *filename, uid_t owner, gid_t group, int link TSRMLS_DC);
1231 #endif
1232
1233-/* One of the following constants must be used as the last argument
1234+/* One of the following constants must be used as the last argument
1235 in virtual_file_ex() call. */
1236
1237 #define CWD_EXPAND 0 /* expand "." and ".." but dont resolve symlinks */
1238@@ -216,7 +222,7 @@
1239 unsigned char is_wvalid;
1240 unsigned char is_writable;
1241 #endif
1242- struct _realpath_cache_bucket *next;
1243+ struct _realpath_cache_bucket *next;
1244 } realpath_cache_bucket;
1245
1246 typedef struct _virtual_cwd_globals {
1247@@ -244,7 +250,7 @@
1248
1249 /* The actual macros to be used in programs using TSRM
1250 * If the program defines VIRTUAL_DIR it will use the
1251- * virtual_* functions
1252+ * virtual_* functions
1253 */
1254
1255 #ifdef VIRTUAL_DIR
1256@@ -261,9 +267,7 @@
1257 #define VCWD_REALPATH(path, real_path) virtual_realpath(path, real_path TSRMLS_CC)
1258 #define VCWD_RENAME(oldname, newname) virtual_rename(oldname, newname TSRMLS_CC)
1259 #define VCWD_STAT(path, buff) virtual_stat(path, buff TSRMLS_CC)
1260-#if !defined(TSRM_WIN32)
1261-# define VCWD_LSTAT(path, buff) virtual_lstat(path, buff TSRMLS_CC)
1262-#endif
1263+#define VCWD_LSTAT(path, buff) virtual_lstat(path, buff TSRMLS_CC)
1264 #define VCWD_UNLINK(path) virtual_unlink(path TSRMLS_CC)
1265 #define VCWD_MKDIR(pathname, mode) virtual_mkdir(pathname, mode TSRMLS_CC)
1266 #define VCWD_RMDIR(pathname) virtual_rmdir(pathname TSRMLS_CC)
1267
1268=== modified file 'UPGRADING'
1269--- UPGRADING 2010-08-01 11:58:54 +0000
1270+++ UPGRADING 2011-02-01 10:04:54 +0000
1271@@ -1,4 +1,4 @@
1272-$Id: UPGRADING 282950 2009-06-28 16:14:30Z johannes $
1273+$Id: UPGRADING 306076 2010-12-08 09:38:47Z pajoye $
1274
1275 UPGRADE NOTES - PHP 5.3
1276
1277@@ -40,6 +40,9 @@
1278 2. Changes made to existing functions
1279 =====================================
1280
1281+- Paths containing NULL (like /some/path\0foo.txt) are now considered invalid.
1282+ See http://news.php.net/php.internals/50191
1283+
1284 - The HTTP stream wrapper now considers all status codes from 200 to 399 to be
1285 successful.
1286
1287@@ -273,6 +276,8 @@
1288 - MySQLi: Now supports persistent connections by prepending the hostname
1289 with "p:".
1290
1291+ - imagepstext now rejects invalid antialiasing steps and raises a warning.
1292+
1293 d. no longer possible to disable
1294
1295 - PCRE
1296@@ -457,6 +462,14 @@
1297 - Firebird and SNMP support are no longer available on Windows. Firebird support
1298 may be reintroduced in the future.
1299
1300+=====================
1301+11.1 New in PHP 5.3.4
1302+=====================
1303+
1304+- open_basedir supports now symbolic links (checks the target).
1305+- is_link and SplFileInfo symbolic links related method are now fully supported
1306+ (on Windows Vista or later).
1307+
1308 ===================
1309 12. New in PHP 5.3:
1310 ===================
1311
1312=== added file 'UPGRADING.INTERNALS'
1313--- UPGRADING.INTERNALS 1970-01-01 00:00:00 +0000
1314+++ UPGRADING.INTERNALS 2011-02-01 10:04:54 +0000
1315@@ -0,0 +1,23 @@
1316+$Id$
1317+
1318+UPGRADE NOTES - PHP 5.3.4
1319+
1320+1. Internal API changes
1321+
1322+========================
1323+1. Internal API changes
1324+========================
1325+
1326+ a. stat/lstat support
1327+
1328+lstat is now available on all platforms. On unix-like platform
1329+php_sys_lstat is an alias to lstat (when avaible). On Windows it is now
1330+available using php_sys_lstat. php_sys_stat and php_sys_lstat usage is recommended
1331+instead of calling lstat directly, to ensure portability.
1332+
1333+ b. readlink support
1334+
1335+readlink is now available on all platforms. On unix-like platform
1336+php_sys_readlink is an alias to readlink (when avaible). On Windows it is now
1337+available using php_sys_readlink. php_sys_readlink usage is recommended
1338+instead of calling readlink directly, to ensure portability.
1339
1340=== modified file 'Zend/acinclude.m4'
1341--- Zend/acinclude.m4 2010-08-01 11:58:54 +0000
1342+++ Zend/acinclude.m4 2011-02-01 10:04:54 +0000
1343@@ -1,10 +1,10 @@
1344-dnl $Id: acinclude.m4 298893 2010-05-03 09:05:30Z pajoye $
1345+dnl $Id: acinclude.m4 304193 2010-10-07 21:44:41Z felipe $
1346 dnl
1347 dnl This file contains local autoconf functions.
1348
1349 AC_DEFUN([LIBZEND_BISON_CHECK],[
1350 # we only support certain bison versions
1351- bison_version_list="1.28 1.35 1.75 1.875 2.0 2.1 2.2 2.3 2.4 2.4.1 2.4.2"
1352+ bison_version_list="1.28 1.35 1.75 1.875 2.0 2.1 2.2 2.3 2.4 2.4.1 2.4.2 2.4.3"
1353
1354 # for standalone build of Zend Engine
1355 test -z "$SED" && SED=sed
1356
1357=== modified file 'Zend/tests/bug45180.phpt'
1358--- Zend/tests/bug45180.phpt 2010-07-31 15:53:12 +0000
1359+++ Zend/tests/bug45180.phpt 2011-02-01 10:04:54 +0000
1360@@ -43,11 +43,11 @@
1361 string(3) "ABC"
1362 __call:
1363 string(3) "ABC"
1364-__callstatic:
1365+__call:
1366 string(3) "XYZ"
1367-__callstatic:
1368+__call:
1369 string(3) "WWW"
1370-__callstatic:
1371+__call:
1372 string(3) "ABC"
1373 __callstatic:
1374 string(1) "A"
1375@@ -58,4 +58,4 @@
1376 __callstatic:
1377 string(3) "FOO"
1378 __callstatic:
1379-string(3) "FOO"
1380+string(3) "FOO"
1381\ No newline at end of file
1382
1383=== modified file 'Zend/tests/bug45186.phpt'
1384--- Zend/tests/bug45186.phpt 2010-07-31 15:53:12 +0000
1385+++ Zend/tests/bug45186.phpt 2011-02-01 10:04:54 +0000
1386@@ -35,17 +35,17 @@
1387
1388 ?>
1389 --EXPECTF--
1390-__callstatic:
1391+__call:
1392 string(3) "ABC"
1393-__callstatic:
1394+__call:
1395 string(3) "ABC"
1396 __call:
1397 string(3) "xyz"
1398-__callstatic:
1399+__call:
1400 string(3) "www"
1401 __call:
1402 string(1) "y"
1403-__callstatic:
1404+__call:
1405 string(1) "y"
1406 ok
1407 __callstatic:
1408
1409=== modified file 'Zend/tests/bug51176.phpt'
1410--- Zend/tests/bug51176.phpt 2010-07-31 15:53:12 +0000
1411+++ Zend/tests/bug51176.phpt 2011-02-01 10:04:54 +0000
1412@@ -27,6 +27,6 @@
1413
1414 ?>
1415 --EXPECT--
1416-static
1417-static
1418-static
1419+instance
1420+instance
1421+instance
1422\ No newline at end of file
1423
1424=== added file 'Zend/tests/bug52361.phpt'
1425--- Zend/tests/bug52361.phpt 1970-01-01 00:00:00 +0000
1426+++ Zend/tests/bug52361.phpt 2011-02-01 10:04:54 +0000
1427@@ -0,0 +1,35 @@
1428+--TEST--
1429+Bug #52361 (Throwing an exception in a destructor causes invalid catching)
1430+--FILE--
1431+<?php
1432+class aaa {
1433+ public function __destruct() {
1434+ try {
1435+ throw new Exception(__CLASS__);
1436+ } catch(Exception $ex) {
1437+ echo "1. $ex\n";
1438+ }
1439+ }
1440+}
1441+function bbb() {
1442+ $a = new aaa();
1443+ throw new Exception(__FUNCTION__);
1444+}
1445+try {
1446+ bbb();
1447+ echo "must be skipped !!!";
1448+} catch(Exception $ex) {
1449+ echo "2. $ex\n";
1450+}
1451+?>
1452+--EXPECTF--
1453+1. exception 'Exception' with message 'aaa' in %sbug52361.php:5
1454+Stack trace:
1455+#0 %sbug52361.php(16): aaa->__destruct()
1456+#1 %sbug52361.php(16): bbb()
1457+#2 {main}
1458+2. exception 'Exception' with message 'bbb' in %sbug52361.php:13
1459+Stack trace:
1460+#0 %sbug52361.php(16): bbb()
1461+#1 {main}
1462+
1463
1464=== added file 'Zend/tests/bug52484.phpt'
1465--- Zend/tests/bug52484.phpt 1970-01-01 00:00:00 +0000
1466+++ Zend/tests/bug52484.phpt 2011-02-01 10:04:54 +0000
1467@@ -0,0 +1,19 @@
1468+--TEST--
1469+Bug #52484 (__set() ignores setting properties with empty names)
1470+--FILE--
1471+<?php
1472+
1473+class A {
1474+ function __unset($prop) {
1475+ unset($this->$prop);
1476+ }
1477+}
1478+
1479+$a = new A();
1480+$prop = null;
1481+
1482+unset($a->$prop);
1483+
1484+?>
1485+--EXPECTF--
1486+Fatal error: Cannot access empty property in %s on line %d
1487
1488=== added file 'Zend/tests/bug52484_2.phpt'
1489--- Zend/tests/bug52484_2.phpt 1970-01-01 00:00:00 +0000
1490+++ Zend/tests/bug52484_2.phpt 2011-02-01 10:04:54 +0000
1491@@ -0,0 +1,19 @@
1492+--TEST--
1493+Bug #52484.2 (__set() ignores setting properties with empty names)
1494+--FILE--
1495+<?php
1496+
1497+class A {
1498+ function __set($prop, $val) {
1499+ $this->$prop = $val;
1500+ }
1501+}
1502+
1503+$a = new A();
1504+$prop = null;
1505+
1506+$a->$prop = 2;
1507+
1508+?>
1509+--EXPECTF--
1510+Fatal error: Cannot access empty property in %s on line %d
1511
1512=== added file 'Zend/tests/bug52484_3.phpt'
1513--- Zend/tests/bug52484_3.phpt 1970-01-01 00:00:00 +0000
1514+++ Zend/tests/bug52484_3.phpt 2011-02-01 10:04:54 +0000
1515@@ -0,0 +1,19 @@
1516+--TEST--
1517+Bug #52484.3 (__set() ignores setting properties with empty names)
1518+--FILE--
1519+<?php
1520+
1521+class A {
1522+ function __get($prop) {
1523+ var_dump($this->$prop);
1524+ }
1525+}
1526+
1527+$a = new A();
1528+$prop = null;
1529+
1530+var_dump($a->$prop);
1531+
1532+?>
1533+--EXPECTF--
1534+Fatal error: Cannot access empty property in %s on line %d
1535
1536=== added file 'Zend/tests/bug52508.phpt'
1537--- Zend/tests/bug52508.phpt 1970-01-01 00:00:00 +0000
1538+++ Zend/tests/bug52508.phpt 2011-02-01 10:04:54 +0000
1539@@ -0,0 +1,20 @@
1540+--TEST--
1541+Bug #52508 (newline problem with parse_ini_file+INI_SCANNER_RAW)
1542+--FILE--
1543+<?php
1544+
1545+$file = dirname(__FILE__) .'/bug52508.ini';
1546+
1547+file_put_contents($file, "a = 1");
1548+
1549+$ini_array = parse_ini_file($file, true, INI_SCANNER_RAW);
1550+var_dump($ini_array);
1551+
1552+unlink($file);
1553+
1554+?>
1555+--EXPECT--
1556+array(1) {
1557+ ["a"]=>
1558+ string(1) "1"
1559+}
1560
1561=== added file 'Zend/tests/bug52879.phpt'
1562--- Zend/tests/bug52879.phpt 1970-01-01 00:00:00 +0000
1563+++ Zend/tests/bug52879.phpt 2011-02-01 10:04:54 +0000
1564@@ -0,0 +1,16 @@
1565+--TEST--
1566+Bug #52879 (Objects unreferenced in __get, __set, __isset or __unset can be freed too early)
1567+--FILE--
1568+<?php
1569+class MyClass {
1570+ public $myRef;
1571+ public function __set($property,$value) {
1572+ $this->myRef = $value;
1573+ }
1574+}
1575+$myGlobal=new MyClass($myGlobal);
1576+$myGlobal->myRef=&$myGlobal;
1577+$myGlobal->myNonExistentProperty="ok\n";
1578+echo $myGlobal;
1579+--EXPECT--
1580+ok
1581
1582=== added file 'Zend/tests/bug52939.phpt'
1583--- Zend/tests/bug52939.phpt 1970-01-01 00:00:00 +0000
1584+++ Zend/tests/bug52939.phpt 2011-02-01 10:04:54 +0000
1585@@ -0,0 +1,40 @@
1586+--TEST--
1587+Bug #52939 (zend_call_function_array does not respect ZEND_SEND_PREFER_REF)
1588+--FILE--
1589+<?php
1590+$ar1 = array("row1" => 2, "row2" => 1);
1591+var_dump(array_multisort($ar1));
1592+var_dump($ar1);
1593+
1594+$ar1 = array("row1" => 2, "row2" => 1);
1595+$args = array(&$ar1);
1596+var_dump(call_user_func_array("array_multisort", $args));
1597+var_dump($ar1);
1598+
1599+$ar1 = array("row1" => 2, "row2" => 1);
1600+$args = array($ar1);
1601+var_dump(call_user_func_array("array_multisort", $args));
1602+var_dump($ar1);
1603+?>
1604+--EXPECT--
1605+bool(true)
1606+array(2) {
1607+ ["row2"]=>
1608+ int(1)
1609+ ["row1"]=>
1610+ int(2)
1611+}
1612+bool(true)
1613+array(2) {
1614+ ["row2"]=>
1615+ int(1)
1616+ ["row1"]=>
1617+ int(2)
1618+}
1619+bool(true)
1620+array(2) {
1621+ ["row1"]=>
1622+ int(2)
1623+ ["row2"]=>
1624+ int(1)
1625+}
1626
1627=== added file 'Zend/tests/bug53305.phpt'
1628--- Zend/tests/bug53305.phpt 1970-01-01 00:00:00 +0000
1629+++ Zend/tests/bug53305.phpt 2011-02-01 10:04:54 +0000
1630@@ -0,0 +1,19 @@
1631+--TEST--
1632+Bug #53305 (E_NOTICE when defining a constant starts with __COMPILER_HALT_OFFSET__)
1633+--FILE--
1634+<?php
1635+error_reporting(E_ALL);
1636+
1637+define('__COMPILER_HALT_OFFSET__1', 1);
1638+define('__COMPILER_HALT_OFFSET__2', 2);
1639+define('__COMPILER_HALT_OFFSET__', 3);
1640+define('__COMPILER_HALT_OFFSET__1'.chr(0), 4);
1641+
1642+var_dump(__COMPILER_HALT_OFFSET__1);
1643+var_dump(constant('__COMPILER_HALT_OFFSET__1'.chr(0)));
1644+
1645+?>
1646+--EXPECTF--
1647+Notice: Constant __COMPILER_HALT_OFFSET__ already defined in %s on line %d
1648+int(1)
1649+int(4)
1650
1651=== added file 'Zend/tests/bug53632.phpt'
1652--- Zend/tests/bug53632.phpt 1970-01-01 00:00:00 +0000
1653+++ Zend/tests/bug53632.phpt 2011-02-01 10:04:54 +0000
1654@@ -0,0 +1,10 @@
1655+--TEST--
1656+zend_strtod() hangs with 2.2250738585072011e-308
1657+--FILE--
1658+<?php
1659+$d = 2.2250738585072011e-308;
1660+
1661+echo "Done\n";
1662+?>
1663+--EXPECTF--
1664+Done
1665
1666=== modified file 'Zend/tests/call_static_003.phpt'
1667--- Zend/tests/call_static_003.phpt 2010-07-31 15:53:12 +0000
1668+++ Zend/tests/call_static_003.phpt 2011-02-01 10:04:54 +0000
1669@@ -28,9 +28,9 @@
1670 --EXPECT--
1671 nonstatic
1672 string(6) "fOoBaR"
1673-static
1674+nonstatic
1675 string(6) "foOBAr"
1676-static
1677+nonstatic
1678 string(6) "fOOBAr"
1679 static
1680 string(3) "bAr"
1681
1682=== modified file 'Zend/tests/call_static_007.phpt'
1683--- Zend/tests/call_static_007.phpt 2010-07-31 15:53:12 +0000
1684+++ Zend/tests/call_static_007.phpt 2011-02-01 10:04:54 +0000
1685@@ -30,5 +30,5 @@
1686 --EXPECT--
1687 __callstatic: Test
1688 __call: Test
1689-__callstatic: Bar
1690+__call: Bar
1691 __callstatic: Foo
1692
1693=== modified file 'Zend/tests/declare_001.phpt'
1694--- Zend/tests/declare_001.phpt 2010-03-16 09:09:50 +0000
1695+++ Zend/tests/declare_001.phpt 2011-02-01 10:04:54 +0000
1696@@ -1,5 +1,11 @@
1697 --TEST--
1698 Testing declare statement with several type values
1699+--SKIPIF--
1700+<?php
1701+if (in_array("detect_unicode", array_keys(ini_get_all()))) {
1702+ die("skip");
1703+}
1704+?>
1705 --FILE--
1706 <?php
1707
1708
1709=== added file 'Zend/tests/gc_032.phpt'
1710--- Zend/tests/gc_032.phpt 1970-01-01 00:00:00 +0000
1711+++ Zend/tests/gc_032.phpt 2011-02-01 10:04:54 +0000
1712@@ -0,0 +1,40 @@
1713+--TEST--
1714+GC 032: Crash in GC because of invalid reference counting
1715+--FILE--
1716+<?php
1717+$a = array();
1718+$b =& $a;
1719+$a[0] = $a;
1720+debug_zval_dump($a);
1721+$a = array(array());
1722+$b =& $a;
1723+$a[0][0] = $a;
1724+debug_zval_dump($a);
1725+?>
1726+--EXPECT--
1727+array(1) refcount(1){
1728+ [0]=>
1729+ array(1) refcount(3){
1730+ [0]=>
1731+ array(1) refcount(3){
1732+ [0]=>
1733+ *RECURSION*
1734+ }
1735+ }
1736+}
1737+array(1) refcount(1){
1738+ [0]=>
1739+ array(1) refcount(3){
1740+ [0]=>
1741+ array(1) refcount(1){
1742+ [0]=>
1743+ array(1) refcount(3){
1744+ [0]=>
1745+ array(1) refcount(1){
1746+ [0]=>
1747+ *RECURSION*
1748+ }
1749+ }
1750+ }
1751+ }
1752+}
1753
1754=== added file 'Zend/tests/multibyte/multibyte_encoding_006.phpt'
1755Binary files Zend/tests/multibyte/multibyte_encoding_006.phpt 1970-01-01 00:00:00 +0000 and Zend/tests/multibyte/multibyte_encoding_006.phpt 2011-02-01 10:04:54 +0000 differ
1756=== added file 'Zend/tests/objects_032.phpt'
1757--- Zend/tests/objects_032.phpt 1970-01-01 00:00:00 +0000
1758+++ Zend/tests/objects_032.phpt 2011-02-01 10:04:54 +0000
1759@@ -0,0 +1,40 @@
1760+--TEST--
1761+Covariant return-by-ref constraints
1762+--FILE--
1763+<?php
1764+
1765+class A implements ArrayAccess {
1766+ public $foo = array();
1767+
1768+ public function &offsetGet($n) {
1769+ return $this->foo[$n];
1770+ }
1771+
1772+ public function offsetSet($n, $v) {
1773+ }
1774+ public function offsetUnset($n) {
1775+ }
1776+ public function offsetExists($n) {
1777+ }
1778+}
1779+
1780+$a = new A;
1781+
1782+$a['foo']['bar'] = 2;
1783+
1784+var_dump($a);
1785+
1786+?>
1787+==DONE==
1788+--EXPECTF--
1789+object(A)#1 (1) {
1790+ ["foo"]=>
1791+ array(1) {
1792+ ["foo"]=>
1793+ array(1) {
1794+ ["bar"]=>
1795+ int(2)
1796+ }
1797+ }
1798+}
1799+==DONE==
1800
1801=== modified file 'Zend/tests/unset_cv05.phpt'
1802--- Zend/tests/unset_cv05.phpt 2010-03-16 09:09:50 +0000
1803+++ Zend/tests/unset_cv05.phpt 2011-02-01 10:04:54 +0000
1804@@ -19,7 +19,7 @@
1805 echo "\nok\n";
1806 ?>
1807 --EXPECTF--
1808-Warning: Directive 'register_long_arrays' is deprecated in PHP %d.%d and greater in Unknown on line 0
1809+Deprecated: Directive 'register_long_arrays' is deprecated in PHP %d.%d and greater in Unknown on line 0
1810 ok
1811
1812 Warning: session_start(): Cannot send session cookie - headers already sent by (output started at %sunset_cv05.php on line %d
1813
1814=== modified file 'Zend/tests/unset_cv06.phpt'
1815--- Zend/tests/unset_cv06.phpt 2010-03-16 09:09:50 +0000
1816+++ Zend/tests/unset_cv06.phpt 2011-02-01 10:04:54 +0000
1817@@ -19,7 +19,7 @@
1818 echo "ok\n";
1819 ?>
1820 --EXPECTF--
1821-Warning: Directive 'register_globals' is deprecated in PHP %d.%d and greater in Unknown on line 0
1822+Deprecated: Directive 'register_globals' is deprecated in PHP %d.%d and greater in Unknown on line 0
1823 1
1824
1825 Deprecated: Function session_register() is deprecated in %s on line %d
1826
1827=== modified file 'Zend/zend_API.c'
1828--- Zend/zend_API.c 2010-08-01 11:58:54 +0000
1829+++ Zend/zend_API.c 2011-02-01 10:04:54 +0000
1830@@ -18,7 +18,7 @@
1831 +----------------------------------------------------------------------+
1832 */
1833
1834-/* $Id: zend_API.c 299395 2010-05-14 23:48:03Z felipe $ */
1835+/* $Id: zend_API.c 302137 2010-08-12 07:58:14Z sas $ */
1836
1837 #include "zend.h"
1838 #include "zend_execute.h"
1839@@ -1082,7 +1082,7 @@
1840 } else {
1841 ALLOC_HASHTABLE_REL(object->properties);
1842 zend_hash_init(object->properties, zend_hash_num_elements(&class_type->default_properties), NULL, ZVAL_PTR_DTOR, 0);
1843- zend_hash_copy(object->properties, &class_type->default_properties, (copy_ctor_func_t) zval_add_ref, (void *) &tmp, sizeof(zval *));
1844+ zend_hash_copy(object->properties, &class_type->default_properties, zval_copy_property_ctor(class_type), (void *) &tmp, sizeof(zval *));
1845 }
1846 } else {
1847 Z_OBJVAL_P(arg) = class_type->create_object(class_type TSRMLS_CC);
1848
1849=== modified file 'Zend/zend_compile.c'
1850--- Zend/zend_compile.c 2010-08-01 11:58:54 +0000
1851+++ Zend/zend_compile.c 2011-02-01 10:04:54 +0000
1852@@ -17,7 +17,7 @@
1853 +----------------------------------------------------------------------+
1854 */
1855
1856-/* $Id: zend_compile.c 300817 2010-06-28 16:37:57Z felipe $ */
1857+/* $Id: zend_compile.c 305057 2010-11-03 15:40:24Z colder $ */
1858
1859 #include <zend_language_parser.h>
1860 #include "zend.h"
1861@@ -2551,12 +2551,14 @@
1862 return 0;
1863 }
1864
1865- if (proto->common.pass_rest_by_reference
1866+ if (fe->common.type != ZEND_USER_FUNCTION
1867+ && proto->common.pass_rest_by_reference
1868 && !fe->common.pass_rest_by_reference) {
1869 return 0;
1870 }
1871
1872- if (fe->common.return_reference != proto->common.return_reference) {
1873+ /* by-ref constraints on return values are covariant */
1874+ if (proto->common.return_reference && !fe->common.return_reference) {
1875 return 0;
1876 }
1877
1878@@ -2580,6 +2582,8 @@
1879 /* Only one has an array type hint and the other one doesn't */
1880 return 0;
1881 }
1882+
1883+ /* by-ref constraints on arguments are invariant */
1884 if (fe->common.arg_info[i].pass_by_reference != proto->common.arg_info[i].pass_by_reference) {
1885 return 0;
1886 }
1887@@ -2817,6 +2821,9 @@
1888 }
1889 /* }}} */
1890
1891+#define zval_property_ctor(parent_ce, ce) \
1892+ ((copy_ctor_func_t) (((parent_ce)->type != (ce)->type) ? zval_shared_property_ctor : zval_add_ref))
1893+
1894 ZEND_API void zend_do_inheritance(zend_class_entry *ce, zend_class_entry *parent_ce TSRMLS_DC) /* {{{ */
1895 {
1896 if ((ce->ce_flags & ZEND_ACC_INTERFACE)
1897@@ -2840,7 +2847,7 @@
1898 zend_do_inherit_interfaces(ce, parent_ce TSRMLS_CC);
1899
1900 /* Inherit properties */
1901- zend_hash_merge(&ce->default_properties, &parent_ce->default_properties, (void (*)(void *)) zval_add_ref, NULL, sizeof(zval *), 0);
1902+ zend_hash_merge(&ce->default_properties, &parent_ce->default_properties, zval_property_ctor(parent_ce, ce), NULL, sizeof(zval *), 0);
1903 if (parent_ce->type != ce->type) {
1904 /* User class extends internal class */
1905 zend_update_class_constants(parent_ce TSRMLS_CC);
1906@@ -2850,7 +2857,7 @@
1907 }
1908 zend_hash_merge_ex(&ce->properties_info, &parent_ce->properties_info, (copy_ctor_func_t) (ce->type & ZEND_INTERNAL_CLASS ? zend_duplicate_property_info_internal : zend_duplicate_property_info), sizeof(zend_property_info), (merge_checker_func_t) do_inherit_property_access_check, ce);
1909
1910- zend_hash_merge(&ce->constants_table, &parent_ce->constants_table, (void (*)(void *)) zval_add_ref, NULL, sizeof(zval *), 0);
1911+ zend_hash_merge(&ce->constants_table, &parent_ce->constants_table, zval_property_ctor(parent_ce, ce), NULL, sizeof(zval *), 0);
1912 zend_hash_merge_ex(&ce->function_table, &parent_ce->function_table, (copy_ctor_func_t) do_inherit_method, sizeof(zend_function), (merge_checker_func_t) do_inherit_method_check, ce);
1913 do_inherit_parent_constructor(ce);
1914
1915
1916=== modified file 'Zend/zend_constants.c'
1917--- Zend/zend_constants.c 2010-03-16 09:09:50 +0000
1918+++ Zend/zend_constants.c 2011-02-01 10:04:54 +0000
1919@@ -17,7 +17,7 @@
1920 +----------------------------------------------------------------------+
1921 */
1922
1923-/* $Id: zend_constants.c 293155 2010-01-05 20:46:53Z sebastian $ */
1924+/* $Id: zend_constants.c 305332 2010-11-14 01:38:52Z felipe $ */
1925
1926 #include "zend.h"
1927 #include "zend_constants.h"
1928@@ -434,8 +434,16 @@
1929 }
1930 }
1931
1932- if ((strncmp(name, "__COMPILER_HALT_OFFSET__", sizeof("__COMPILER_HALT_OFFSET__") - 1) == 0) ||
1933- zend_hash_add(EG(zend_constants), name, c->name_len, (void *) c, sizeof(zend_constant), NULL)==FAILURE) {
1934+ /* Check if the user is trying to define the internal pseudo constant name __COMPILER_HALT_OFFSET__ */
1935+ if ((c->name_len == sizeof("__COMPILER_HALT_OFFSET__")
1936+ && !memcmp(name, "__COMPILER_HALT_OFFSET__", sizeof("__COMPILER_HALT_OFFSET__")-1))
1937+ || zend_hash_add(EG(zend_constants), name, c->name_len, (void *) c, sizeof(zend_constant), NULL)==FAILURE) {
1938+
1939+ /* The internal __COMPILER_HALT_OFFSET__ is prefixed by NULL byte */
1940+ if (c->name[0] == '\0' && c->name_len > sizeof("\0__COMPILER_HALT_OFFSET__")
1941+ && memcmp(name, "\0__COMPILER_HALT_OFFSET__", sizeof("\0__COMPILER_HALT_OFFSET__")) == 0) {
1942+ name++;
1943+ }
1944 zend_error(E_NOTICE,"Constant %s already defined", name);
1945 free(c->name);
1946 if (!(c->flags & CONST_PERSISTENT)) {
1947
1948=== modified file 'Zend/zend_exceptions.c'
1949--- Zend/zend_exceptions.c 2010-03-16 09:09:50 +0000
1950+++ Zend/zend_exceptions.c 2011-02-01 10:04:54 +0000
1951@@ -19,7 +19,7 @@
1952 +----------------------------------------------------------------------+
1953 */
1954
1955-/* $Id: zend_exceptions.c 293155 2010-01-05 20:46:53Z sebastian $ */
1956+/* $Id: zend_exceptions.c 302311 2010-08-16 08:11:08Z dmitry $ */
1957
1958 #include "zend.h"
1959 #include "zend_API.h"
1960@@ -137,7 +137,7 @@
1961
1962 ALLOC_HASHTABLE(object->properties);
1963 zend_hash_init(object->properties, 0, NULL, ZVAL_PTR_DTOR, 0);
1964- zend_hash_copy(object->properties, &class_type->default_properties, (copy_ctor_func_t) zval_add_ref, (void *) &tmp, sizeof(zval *));
1965+ zend_hash_copy(object->properties, &class_type->default_properties, zval_copy_property_ctor(class_type), (void *) &tmp, sizeof(zval *));
1966
1967 ALLOC_ZVAL(trace);
1968 Z_UNSET_ISREF_P(trace);
1969@@ -572,6 +572,7 @@
1970 zend_call_function(&fci, NULL TSRMLS_CC);
1971
1972 if (Z_TYPE_P(trace) != IS_STRING) {
1973+ zval_ptr_dtor(&trace);
1974 trace = NULL;
1975 }
1976
1977@@ -592,6 +593,10 @@
1978 zval_dtor(&line);
1979
1980 exception = zend_read_property(default_exception_ce, exception, "previous", sizeof("previous")-1, 0 TSRMLS_CC);
1981+
1982+ if (trace) {
1983+ zval_ptr_dtor(&trace);
1984+ }
1985 }
1986 zval_dtor(&fname);
1987
1988@@ -599,10 +604,6 @@
1989 * the result in uncaught exception handlers without memleaks. */
1990 zend_update_property_string(default_exception_ce, getThis(), "string", sizeof("string")-1, str TSRMLS_CC);
1991
1992- if (trace) {
1993- zval_ptr_dtor(&trace);
1994- }
1995-
1996 RETURN_STRINGL(str, len, 0);
1997 }
1998 /* }}} */
1999
2000=== modified file 'Zend/zend_execute.c'
2001--- Zend/zend_execute.c 2010-08-01 11:58:54 +0000
2002+++ Zend/zend_execute.c 2011-02-01 10:04:54 +0000
2003@@ -17,7 +17,7 @@
2004 +----------------------------------------------------------------------+
2005 */
2006
2007-/* $Id: zend_execute.c 298213 2010-04-20 12:30:35Z dmitry $ */
2008+/* $Id: zend_execute.c 303895 2010-09-30 14:11:51Z dmitry $ */
2009
2010 #define ZEND_INTENSIVE_DEBUGGING 0
2011
2012@@ -714,8 +714,8 @@
2013 ALLOC_ZVAL(variable_ptr);
2014 *variable_ptr_ptr = variable_ptr;
2015 *variable_ptr = *value;
2016- zval_copy_ctor(variable_ptr);
2017 Z_SET_REFCOUNT_P(variable_ptr, 1);
2018+ zval_copy_ctor(variable_ptr);
2019 } else {
2020 *variable_ptr_ptr = value;
2021 Z_ADDREF_P(value);
2022
2023=== modified file 'Zend/zend_execute_API.c'
2024--- Zend/zend_execute_API.c 2010-08-01 11:58:54 +0000
2025+++ Zend/zend_execute_API.c 2011-02-01 10:04:54 +0000
2026@@ -17,7 +17,7 @@
2027 +----------------------------------------------------------------------+
2028 */
2029
2030-/* $Id: zend_execute_API.c 299766 2010-05-26 00:00:58Z felipe $ */
2031+/* $Id: zend_execute_API.c 304364 2010-10-13 08:51:39Z dmitry $ */
2032
2033 #include <stdio.h>
2034 #include <signal.h>
2035@@ -870,7 +870,8 @@
2036 if (Z_REFCOUNT_PP(fci->params[i]) > 1) {
2037 zval *new_zval;
2038
2039- if (fci->no_separation) {
2040+ if (fci->no_separation &&
2041+ !ARG_MAY_BE_SENT_BY_REF(EX(function_state).function, i + 1)) {
2042 if(i) {
2043 /* hack to clean up the stack */
2044 zend_vm_stack_push_nocheck((void *) (zend_uintptr_t)i TSRMLS_CC);
2045
2046=== modified file 'Zend/zend_gc.c'
2047--- Zend/zend_gc.c 2010-07-31 15:53:12 +0000
2048+++ Zend/zend_gc.c 2011-02-01 10:04:54 +0000
2049@@ -17,7 +17,7 @@
2050 +----------------------------------------------------------------------+
2051 */
2052
2053-/* $Id: zend_gc.c 297307 2010-04-01 22:54:03Z stas $ */
2054+/* $Id: zend_gc.c 303016 2010-09-03 09:27:47Z dmitry $ */
2055
2056 #include "zend.h"
2057 #include "zend_API.h"
2058@@ -414,19 +414,21 @@
2059 gc_root_buffer *current = GC_G(roots).next;
2060
2061 while (current != &GC_G(roots)) {
2062- if (current->handle && EG(objects_store).object_buckets) {
2063- struct _store_object *obj = &EG(objects_store).object_buckets[current->handle].bucket.obj;
2064-
2065- if (GC_GET_COLOR(obj->buffered) == GC_PURPLE) {
2066- zval z;
2067-
2068- INIT_PZVAL(&z);
2069- Z_OBJ_HANDLE(z) = current->handle;
2070- Z_OBJ_HT(z) = current->u.handlers;
2071- zobj_mark_grey(obj, &z TSRMLS_CC);
2072- } else {
2073- GC_SET_ADDRESS(obj->buffered, NULL);
2074- GC_REMOVE_FROM_BUFFER(current);
2075+ if (current->handle) {
2076+ if (EG(objects_store).object_buckets) {
2077+ struct _store_object *obj = &EG(objects_store).object_buckets[current->handle].bucket.obj;
2078+
2079+ if (GC_GET_COLOR(obj->buffered) == GC_PURPLE) {
2080+ zval z;
2081+
2082+ INIT_PZVAL(&z);
2083+ Z_OBJ_HANDLE(z) = current->handle;
2084+ Z_OBJ_HT(z) = current->u.handlers;
2085+ zobj_mark_grey(obj, &z TSRMLS_CC);
2086+ } else {
2087+ GC_SET_ADDRESS(obj->buffered, NULL);
2088+ GC_REMOVE_FROM_BUFFER(current);
2089+ }
2090 }
2091 } else {
2092 if (GC_ZVAL_GET_COLOR(current->u.pz) == GC_PURPLE) {
2093@@ -623,15 +625,17 @@
2094 gc_root_buffer *current = GC_G(roots).next;
2095
2096 while (current != &GC_G(roots)) {
2097- if (current->handle && EG(objects_store).object_buckets) {
2098- struct _store_object *obj = &EG(objects_store).object_buckets[current->handle].bucket.obj;
2099- zval z;
2100+ if (current->handle) {
2101+ if (EG(objects_store).object_buckets) {
2102+ struct _store_object *obj = &EG(objects_store).object_buckets[current->handle].bucket.obj;
2103+ zval z;
2104
2105- GC_SET_ADDRESS(obj->buffered, NULL);
2106- INIT_PZVAL(&z);
2107- Z_OBJ_HANDLE(z) = current->handle;
2108- Z_OBJ_HT(z) = current->u.handlers;
2109- zobj_collect_white(&z TSRMLS_CC);
2110+ GC_SET_ADDRESS(obj->buffered, NULL);
2111+ INIT_PZVAL(&z);
2112+ Z_OBJ_HANDLE(z) = current->handle;
2113+ Z_OBJ_HT(z) = current->u.handlers;
2114+ zobj_collect_white(&z TSRMLS_CC);
2115+ }
2116 } else {
2117 GC_ZVAL_SET_ADDRESS(current->u.pz, NULL);
2118 zval_collect_white(current->u.pz TSRMLS_CC);
2119
2120=== modified file 'Zend/zend_hash.c'
2121--- Zend/zend_hash.c 2010-08-01 11:58:54 +0000
2122+++ Zend/zend_hash.c 2011-02-01 10:04:54 +0000
2123@@ -17,7 +17,7 @@
2124 +----------------------------------------------------------------------+
2125 */
2126
2127-/* $Id: zend_hash.c 298914 2010-05-03 16:36:04Z felipe $ */
2128+/* $Id: zend_hash.c 303364 2010-09-14 14:26:37Z johannes $ */
2129
2130 #include "zend.h"
2131
2132@@ -63,6 +63,9 @@
2133 case HT_CLEANING:
2134 zend_output_debug_string(1, "%s(%d) : ht=%p is being cleaned", file, line, ht);
2135 break;
2136+ default:
2137+ zend_output_debug_string(1, "%s(%d) : ht=%p is inconsistent", file, line, ht);
2138+ break;
2139 }
2140 zend_bailout();
2141 }
2142
2143=== modified file 'Zend/zend_hash.h'
2144--- Zend/zend_hash.h 2010-03-16 09:09:50 +0000
2145+++ Zend/zend_hash.h 2011-02-01 10:04:54 +0000
2146@@ -17,7 +17,7 @@
2147 +----------------------------------------------------------------------+
2148 */
2149
2150-/* $Id: zend_hash.h 293155 2010-01-05 20:46:53Z sebastian $ */
2151+/* $Id: zend_hash.h 304083 2010-10-05 11:28:56Z dmitry $ */
2152
2153 #ifndef ZEND_HASH_H
2154 #define ZEND_HASH_H
2155@@ -312,7 +312,7 @@
2156 } \
2157 if (*tmp >= '0' && *tmp <= '9') { /* possibly a numeric index */ \
2158 const char *end = key + length - 1; \
2159- long idx; \
2160+ ulong idx; \
2161 \
2162 if ((*end != '\0') /* not a null terminated string */ \
2163 || (*tmp == '0' && length > 2) /* numbers with leading zeros */ \
2164@@ -328,11 +328,11 @@
2165 } \
2166 if (tmp == end) { \
2167 if (*key == '-') { \
2168- idx = -idx; \
2169- if (idx > 0) { /* overflow */ \
2170+ if (idx-1 > LONG_MAX) { /* overflow */ \
2171 break; \
2172 } \
2173- } else if (idx < 0) { /* overflow */ \
2174+ idx = (ulong)(-(long)idx); \
2175+ } else if (idx > LONG_MAX) { /* overflow */ \
2176 break; \
2177 } \
2178 return func; \
2179
2180=== modified file 'Zend/zend_ini_scanner.c'
2181--- Zend/zend_ini_scanner.c 2010-08-01 11:58:54 +0000
2182+++ Zend/zend_ini_scanner.c 2011-02-01 10:04:54 +0000
2183@@ -1,4 +1,4 @@
2184-/* Generated by re2c 0.13.5 on Tue May 25 22:53:58 2010 */
2185+/* Generated by re2c 0.13.5 on Sun Aug 1 12:07:43 2010 */
2186 #line 1 "Zend/zend_ini_scanner.l"
2187 /*
2188 +----------------------------------------------------------------------+
2189@@ -22,7 +22,7 @@
2190 +----------------------------------------------------------------------+
2191 */
2192
2193-/* $Id: zend_ini_scanner.c 299767 2010-05-26 02:18:17Z felipe $ */
2194+/* $Id: zend_ini_scanner.c 301758 2010-08-01 15:26:54Z felipe $ */
2195
2196 #include <errno.h>
2197 #include "zend.h"
2198@@ -1826,7 +1826,7 @@
2199 yyc_ST_RAW:
2200 {
2201 static const unsigned char yybm[] = {
2202- 160, 160, 160, 160, 160, 160, 160, 160,
2203+ 32, 160, 160, 160, 160, 160, 160, 160,
2204 160, 224, 0, 160, 160, 0, 160, 160,
2205 160, 160, 160, 160, 160, 160, 160, 160,
2206 160, 160, 160, 160, 160, 160, 160, 160,
2207@@ -1862,150 +1862,158 @@
2208 YYDEBUG(135, *YYCURSOR);
2209 YYFILL(3);
2210 yych = *YYCURSOR;
2211- if (yych <= '\r') {
2212- if (yych <= '\t') {
2213- if (yych >= '\t') goto yy139;
2214+ if (yych <= '\f') {
2215+ if (yych <= 0x08) {
2216+ if (yych >= 0x01) goto yy139;
2217 } else {
2218- if (yych <= '\n') goto yy140;
2219- if (yych >= '\r') goto yy142;
2220+ if (yych <= '\t') goto yy141;
2221+ if (yych <= '\n') goto yy142;
2222+ goto yy139;
2223 }
2224 } else {
2225 if (yych <= ' ') {
2226- if (yych >= ' ') goto yy139;
2227+ if (yych <= '\r') goto yy144;
2228+ if (yych <= 0x1F) goto yy139;
2229+ goto yy141;
2230 } else {
2231- if (yych == ';') goto yy143;
2232+ if (yych == ';') goto yy145;
2233+ goto yy139;
2234 }
2235 }
2236 YYDEBUG(137, *YYCURSOR);
2237 ++YYCURSOR;
2238- yych = *YYCURSOR;
2239- goto yy155;
2240-yy138:
2241 YYDEBUG(138, *YYCURSOR);
2242 yyleng = YYCURSOR - SCNG(yy_text);
2243-#line 445 "Zend/zend_ini_scanner.l"
2244- { /* Raw value, only used when SCNG(scanner_mode) == ZEND_INI_SCANNER_RAW. */
2245- /* Eat leading and trailing double quotes */
2246- if (yytext[0] == '"' && yytext[yyleng - 1] == '"') {
2247- SCNG(yy_text)++;
2248- yyleng = yyleng - 2;
2249- }
2250- RETURN_TOKEN(TC_RAW, yytext, yyleng);
2251+#line 567 "Zend/zend_ini_scanner.l"
2252+ { /* End of option value (if EOF is reached before EOL */
2253+ BEGIN(INITIAL);
2254+ return END_OF_LINE;
2255 }
2256-#line 1896 "Zend/zend_ini_scanner.c"
2257+#line 1893 "Zend/zend_ini_scanner.c"
2258 yy139:
2259 YYDEBUG(139, *YYCURSOR);
2260- yyaccept = 0;
2261- yych = *(YYMARKER = ++YYCURSOR);
2262- if (yybm[0+yych] & 64) {
2263- goto yy151;
2264- }
2265- if (yych <= '\f') {
2266- if (yych == '\n') goto yy150;
2267- goto yy154;
2268- } else {
2269- if (yych <= '\r') goto yy153;
2270- if (yych == ';') goto yy145;
2271- goto yy154;
2272- }
2273+ ++YYCURSOR;
2274+ yych = *YYCURSOR;
2275+ goto yy156;
2276 yy140:
2277 YYDEBUG(140, *YYCURSOR);
2278- ++YYCURSOR;
2279+ yyleng = YYCURSOR - SCNG(yy_text);
2280+#line 445 "Zend/zend_ini_scanner.l"
2281+ { /* Raw value, only used when SCNG(scanner_mode) == ZEND_INI_SCANNER_RAW. */
2282+ /* Eat leading and trailing double quotes */
2283+ if (yytext[0] == '"' && yytext[yyleng - 1] == '"') {
2284+ SCNG(yy_text)++;
2285+ yyleng = yyleng - 2;
2286+ }
2287+ RETURN_TOKEN(TC_RAW, yytext, yyleng);
2288+}
2289+#line 1911 "Zend/zend_ini_scanner.c"
2290 yy141:
2291 YYDEBUG(141, *YYCURSOR);
2292- yyleng = YYCURSOR - SCNG(yy_text);
2293-#line 458 "Zend/zend_ini_scanner.l"
2294- { /* End of option value */
2295- BEGIN(INITIAL);
2296- SCNG(lineno)++;
2297- return END_OF_LINE;
2298-}
2299-#line 1924 "Zend/zend_ini_scanner.c"
2300+ yyaccept = 0;
2301+ yych = *(YYMARKER = ++YYCURSOR);
2302+ if (yybm[0+yych] & 64) {
2303+ goto yy152;
2304+ }
2305+ if (yych <= '\f') {
2306+ if (yych == '\n') goto yy151;
2307+ goto yy156;
2308+ } else {
2309+ if (yych <= '\r') goto yy154;
2310+ if (yych == ';') goto yy146;
2311+ goto yy156;
2312+ }
2313 yy142:
2314 YYDEBUG(142, *YYCURSOR);
2315- yych = *++YYCURSOR;
2316- if (yych == '\n') goto yy150;
2317- goto yy141;
2318+ ++YYCURSOR;
2319 yy143:
2320 YYDEBUG(143, *YYCURSOR);
2321- yyaccept = 1;
2322- yych = *(YYMARKER = ++YYCURSOR);
2323- goto yy146;
2324+ yyleng = YYCURSOR - SCNG(yy_text);
2325+#line 458 "Zend/zend_ini_scanner.l"
2326+ { /* End of option value */
2327+ BEGIN(INITIAL);
2328+ SCNG(lineno)++;
2329+ return END_OF_LINE;
2330+}
2331+#line 1939 "Zend/zend_ini_scanner.c"
2332+yy144:
2333 YYDEBUG(144, *YYCURSOR);
2334- yyleng = YYCURSOR - SCNG(yy_text);
2335-#line 567 "Zend/zend_ini_scanner.l"
2336- { /* End of option value (if EOF is reached before EOL */
2337- BEGIN(INITIAL);
2338- return END_OF_LINE;
2339-}
2340-#line 1942 "Zend/zend_ini_scanner.c"
2341+ yych = *++YYCURSOR;
2342+ if (yych == '\n') goto yy151;
2343+ goto yy143;
2344 yy145:
2345 YYDEBUG(145, *YYCURSOR);
2346- ++YYCURSOR;
2347- YYFILL(2);
2348- yych = *YYCURSOR;
2349+ yyaccept = 1;
2350+ yych = *(YYMARKER = ++YYCURSOR);
2351+ goto yy147;
2352 yy146:
2353 YYDEBUG(146, *YYCURSOR);
2354- if (yybm[0+yych] & 32) {
2355- goto yy145;
2356- }
2357- if (yych >= '\r') goto yy149;
2358+ ++YYCURSOR;
2359+ YYFILL(2);
2360+ yych = *YYCURSOR;
2361 yy147:
2362 YYDEBUG(147, *YYCURSOR);
2363- ++YYCURSOR;
2364+ if (yybm[0+yych] & 32) {
2365+ goto yy146;
2366+ }
2367+ if (yych >= '\r') goto yy150;
2368 yy148:
2369 YYDEBUG(148, *YYCURSOR);
2370- yyleng = YYCURSOR - SCNG(yy_text);
2371-#line 554 "Zend/zend_ini_scanner.l"
2372- { /* Comment */
2373- BEGIN(INITIAL);
2374- SCNG(lineno)++;
2375- return END_OF_LINE;
2376-}
2377-#line 1966 "Zend/zend_ini_scanner.c"
2378+ ++YYCURSOR;
2379 yy149:
2380 YYDEBUG(149, *YYCURSOR);
2381- yych = *++YYCURSOR;
2382- if (yych == '\n') goto yy147;
2383- goto yy148;
2384+ yyleng = YYCURSOR - SCNG(yy_text);
2385+#line 554 "Zend/zend_ini_scanner.l"
2386+ { /* Comment */
2387+ BEGIN(INITIAL);
2388+ SCNG(lineno)++;
2389+ return END_OF_LINE;
2390+}
2391+#line 1973 "Zend/zend_ini_scanner.c"
2392 yy150:
2393 YYDEBUG(150, *YYCURSOR);
2394 yych = *++YYCURSOR;
2395- goto yy141;
2396+ if (yych == '\n') goto yy148;
2397+ goto yy149;
2398 yy151:
2399 YYDEBUG(151, *YYCURSOR);
2400- yyaccept = 0;
2401- YYMARKER = ++YYCURSOR;
2402- YYFILL(2);
2403- yych = *YYCURSOR;
2404+ yych = *++YYCURSOR;
2405+ goto yy143;
2406+yy152:
2407 YYDEBUG(152, *YYCURSOR);
2408- if (yybm[0+yych] & 64) {
2409- goto yy151;
2410- }
2411- if (yych <= '\f') {
2412- if (yych == '\n') goto yy150;
2413- goto yy154;
2414- } else {
2415- if (yych <= '\r') goto yy153;
2416- if (yych == ';') goto yy145;
2417- goto yy154;
2418- }
2419-yy153:
2420+ yyaccept = 0;
2421+ YYMARKER = ++YYCURSOR;
2422+ YYFILL(2);
2423+ yych = *YYCURSOR;
2424 YYDEBUG(153, *YYCURSOR);
2425- yych = *++YYCURSOR;
2426- if (yych == '\n') goto yy150;
2427- goto yy141;
2428+ if (yybm[0+yych] & 64) {
2429+ goto yy152;
2430+ }
2431+ if (yych <= '\f') {
2432+ if (yych <= 0x00) goto yy140;
2433+ if (yych == '\n') goto yy151;
2434+ goto yy155;
2435+ } else {
2436+ if (yych <= '\r') goto yy154;
2437+ if (yych == ';') goto yy146;
2438+ goto yy155;
2439+ }
2440 yy154:
2441 YYDEBUG(154, *YYCURSOR);
2442- ++YYCURSOR;
2443- YYFILL(1);
2444- yych = *YYCURSOR;
2445+ yych = *++YYCURSOR;
2446+ if (yych == '\n') goto yy151;
2447+ goto yy143;
2448 yy155:
2449 YYDEBUG(155, *YYCURSOR);
2450+ ++YYCURSOR;
2451+ YYFILL(1);
2452+ yych = *YYCURSOR;
2453+yy156:
2454+ YYDEBUG(156, *YYCURSOR);
2455 if (yybm[0+yych] & 128) {
2456- goto yy154;
2457+ goto yy155;
2458 }
2459- goto yy138;
2460+ goto yy140;
2461 }
2462 /* *********************************** */
2463 yyc_ST_SECTION_RAW:
2464@@ -2044,85 +2052,85 @@
2465 128, 128, 128, 128, 128, 128, 128, 128,
2466 128, 128, 128, 128, 128, 128, 128, 128,
2467 };
2468- YYDEBUG(156, *YYCURSOR);
2469+ YYDEBUG(157, *YYCURSOR);
2470 YYFILL(3);
2471 yych = *YYCURSOR;
2472 if (yych <= '\f') {
2473- if (yych == '\n') goto yy160;
2474+ if (yych == '\n') goto yy161;
2475 } else {
2476- if (yych <= '\r') goto yy160;
2477- if (yych == ']') goto yy162;
2478+ if (yych <= '\r') goto yy161;
2479+ if (yych == ']') goto yy163;
2480 }
2481- YYDEBUG(158, *YYCURSOR);
2482- ++YYCURSOR;
2483- yych = *YYCURSOR;
2484- goto yy169;
2485-yy159:
2486 YYDEBUG(159, *YYCURSOR);
2487- yyleng = YYCURSOR - SCNG(yy_text);
2488-#line 454 "Zend/zend_ini_scanner.l"
2489- { /* Raw value, only used when SCNG(scanner_mode) == ZEND_INI_SCANNER_RAW. */
2490- RETURN_TOKEN(TC_RAW, yytext, yyleng);
2491-}
2492-#line 2068 "Zend/zend_ini_scanner.c"
2493+ ++YYCURSOR;
2494+ yych = *YYCURSOR;
2495+ goto yy170;
2496 yy160:
2497 YYDEBUG(160, *YYCURSOR);
2498- ++YYCURSOR;
2499+ yyleng = YYCURSOR - SCNG(yy_text);
2500+#line 454 "Zend/zend_ini_scanner.l"
2501+ { /* Raw value, only used when SCNG(scanner_mode) == ZEND_INI_SCANNER_RAW. */
2502+ RETURN_TOKEN(TC_RAW, yytext, yyleng);
2503+}
2504+#line 2076 "Zend/zend_ini_scanner.c"
2505+yy161:
2506 YYDEBUG(161, *YYCURSOR);
2507- yyleng = YYCURSOR - SCNG(yy_text);
2508-#line 572 "Zend/zend_ini_scanner.l"
2509- {
2510- return 0;
2511-}
2512-#line 2078 "Zend/zend_ini_scanner.c"
2513-yy162:
2514+ ++YYCURSOR;
2515 YYDEBUG(162, *YYCURSOR);
2516- ++YYCURSOR;
2517- yych = *YYCURSOR;
2518- goto yy165;
2519+ yyleng = YYCURSOR - SCNG(yy_text);
2520+#line 572 "Zend/zend_ini_scanner.l"
2521+ {
2522+ return 0;
2523+}
2524+#line 2086 "Zend/zend_ini_scanner.c"
2525 yy163:
2526 YYDEBUG(163, *YYCURSOR);
2527- yyleng = YYCURSOR - SCNG(yy_text);
2528-#line 374 "Zend/zend_ini_scanner.l"
2529- { /* End of section */
2530- BEGIN(INITIAL);
2531- SCNG(lineno)++;
2532- return ']';
2533-}
2534-#line 2093 "Zend/zend_ini_scanner.c"
2535+ ++YYCURSOR;
2536+ yych = *YYCURSOR;
2537+ goto yy166;
2538 yy164:
2539 YYDEBUG(164, *YYCURSOR);
2540- ++YYCURSOR;
2541- YYFILL(2);
2542- yych = *YYCURSOR;
2543+ yyleng = YYCURSOR - SCNG(yy_text);
2544+#line 374 "Zend/zend_ini_scanner.l"
2545+ { /* End of section */
2546+ BEGIN(INITIAL);
2547+ SCNG(lineno)++;
2548+ return ']';
2549+}
2550+#line 2101 "Zend/zend_ini_scanner.c"
2551 yy165:
2552 YYDEBUG(165, *YYCURSOR);
2553- if (yybm[0+yych] & 64) {
2554- goto yy164;
2555- }
2556- if (yych == '\n') goto yy166;
2557- if (yych == '\r') goto yy167;
2558- goto yy163;
2559+ ++YYCURSOR;
2560+ YYFILL(2);
2561+ yych = *YYCURSOR;
2562 yy166:
2563 YYDEBUG(166, *YYCURSOR);
2564- yych = *++YYCURSOR;
2565- goto yy163;
2566+ if (yybm[0+yych] & 64) {
2567+ goto yy165;
2568+ }
2569+ if (yych == '\n') goto yy167;
2570+ if (yych == '\r') goto yy168;
2571+ goto yy164;
2572 yy167:
2573 YYDEBUG(167, *YYCURSOR);
2574 yych = *++YYCURSOR;
2575- if (yych == '\n') goto yy166;
2576- goto yy163;
2577+ goto yy164;
2578 yy168:
2579 YYDEBUG(168, *YYCURSOR);
2580- ++YYCURSOR;
2581- YYFILL(1);
2582- yych = *YYCURSOR;
2583+ yych = *++YYCURSOR;
2584+ if (yych == '\n') goto yy167;
2585+ goto yy164;
2586 yy169:
2587 YYDEBUG(169, *YYCURSOR);
2588+ ++YYCURSOR;
2589+ YYFILL(1);
2590+ yych = *YYCURSOR;
2591+yy170:
2592+ YYDEBUG(170, *YYCURSOR);
2593 if (yybm[0+yych] & 128) {
2594- goto yy168;
2595+ goto yy169;
2596 }
2597- goto yy159;
2598+ goto yy160;
2599 }
2600 /* *********************************** */
2601 yyc_ST_SECTION_VALUE:
2602@@ -2161,590 +2169,590 @@
2603 132, 132, 132, 132, 132, 132, 132, 132,
2604 132, 132, 132, 132, 132, 132, 132, 132,
2605 };
2606- YYDEBUG(170, *YYCURSOR);
2607+ YYDEBUG(171, *YYCURSOR);
2608 YYFILL(3);
2609 yych = *YYCURSOR;
2610 if (yych <= '-') {
2611 if (yych <= ' ') {
2612 if (yych <= '\n') {
2613- if (yych <= 0x08) goto yy172;
2614- if (yych <= '\t') goto yy174;
2615- goto yy175;
2616+ if (yych <= 0x08) goto yy173;
2617+ if (yych <= '\t') goto yy175;
2618+ goto yy176;
2619 } else {
2620- if (yych == '\r') goto yy175;
2621- if (yych >= ' ') goto yy174;
2622+ if (yych == '\r') goto yy176;
2623+ if (yych >= ' ') goto yy175;
2624 }
2625 } else {
2626 if (yych <= '$') {
2627- if (yych == '"') goto yy177;
2628- if (yych >= '$') goto yy179;
2629+ if (yych == '"') goto yy178;
2630+ if (yych >= '$') goto yy180;
2631 } else {
2632- if (yych == '\'') goto yy180;
2633- if (yych >= '-') goto yy181;
2634+ if (yych == '\'') goto yy181;
2635+ if (yych >= '-') goto yy182;
2636 }
2637 }
2638 } else {
2639 if (yych <= 'Z') {
2640 if (yych <= '9') {
2641- if (yych <= '.') goto yy182;
2642- if (yych >= '0') goto yy183;
2643+ if (yych <= '.') goto yy183;
2644+ if (yych >= '0') goto yy184;
2645 } else {
2646- if (yych == ';') goto yy175;
2647- if (yych >= 'A') goto yy185;
2648+ if (yych == ';') goto yy176;
2649+ if (yych >= 'A') goto yy186;
2650 }
2651 } else {
2652 if (yych <= '^') {
2653- if (yych <= '[') goto yy172;
2654- if (yych <= '\\') goto yy187;
2655- if (yych <= ']') goto yy188;
2656+ if (yych <= '[') goto yy173;
2657+ if (yych <= '\\') goto yy188;
2658+ if (yych <= ']') goto yy189;
2659 } else {
2660- if (yych == '`') goto yy172;
2661- if (yych <= 'z') goto yy185;
2662+ if (yych == '`') goto yy173;
2663+ if (yych <= 'z') goto yy186;
2664 }
2665 }
2666 }
2667-yy172:
2668- YYDEBUG(172, *YYCURSOR);
2669- yyaccept = 0;
2670- yych = *(YYMARKER = ++YYCURSOR);
2671- goto yy195;
2672 yy173:
2673 YYDEBUG(173, *YYCURSOR);
2674- yyleng = YYCURSOR - SCNG(yy_text);
2675-#line 490 "Zend/zend_ini_scanner.l"
2676- { /* Get rest as section/offset value */
2677- RETURN_TOKEN(TC_STRING, yytext, yyleng);
2678-}
2679-#line 2219 "Zend/zend_ini_scanner.c"
2680+ yyaccept = 0;
2681+ yych = *(YYMARKER = ++YYCURSOR);
2682+ goto yy196;
2683 yy174:
2684 YYDEBUG(174, *YYCURSOR);
2685- yyaccept = 0;
2686- yych = *(YYMARKER = ++YYCURSOR);
2687- if (yych <= 0x1F) {
2688- if (yych == '\t') goto yy221;
2689- goto yy195;
2690- } else {
2691- if (yych <= ' ') goto yy221;
2692- if (yych == '"') goto yy223;
2693- goto yy195;
2694- }
2695+ yyleng = YYCURSOR - SCNG(yy_text);
2696+#line 490 "Zend/zend_ini_scanner.l"
2697+ { /* Get rest as section/offset value */
2698+ RETURN_TOKEN(TC_STRING, yytext, yyleng);
2699+}
2700+#line 2227 "Zend/zend_ini_scanner.c"
2701 yy175:
2702 YYDEBUG(175, *YYCURSOR);
2703- ++YYCURSOR;
2704+ yyaccept = 0;
2705+ yych = *(YYMARKER = ++YYCURSOR);
2706+ if (yych <= 0x1F) {
2707+ if (yych == '\t') goto yy222;
2708+ goto yy196;
2709+ } else {
2710+ if (yych <= ' ') goto yy222;
2711+ if (yych == '"') goto yy224;
2712+ goto yy196;
2713+ }
2714 yy176:
2715 YYDEBUG(176, *YYCURSOR);
2716- yyleng = YYCURSOR - SCNG(yy_text);
2717-#line 572 "Zend/zend_ini_scanner.l"
2718- {
2719- return 0;
2720-}
2721-#line 2242 "Zend/zend_ini_scanner.c"
2722+ ++YYCURSOR;
2723 yy177:
2724 YYDEBUG(177, *YYCURSOR);
2725- ++YYCURSOR;
2726+ yyleng = YYCURSOR - SCNG(yy_text);
2727+#line 572 "Zend/zend_ini_scanner.l"
2728+ {
2729+ return 0;
2730+}
2731+#line 2250 "Zend/zend_ini_scanner.c"
2732 yy178:
2733 YYDEBUG(178, *YYCURSOR);
2734- yyleng = YYCURSOR - SCNG(yy_text);
2735-#line 494 "Zend/zend_ini_scanner.l"
2736- { /* Double quoted '"' string start */
2737- yy_push_state(ST_DOUBLE_QUOTES TSRMLS_CC);
2738- return '"';
2739-}
2740-#line 2254 "Zend/zend_ini_scanner.c"
2741+ ++YYCURSOR;
2742 yy179:
2743 YYDEBUG(179, *YYCURSOR);
2744- yych = *++YYCURSOR;
2745- if (yych <= '\\') {
2746- if (yych <= 0x00) goto yy176;
2747- if (yych <= '[') goto yy194;
2748- goto yy199;
2749- } else {
2750- if (yych == '{') goto yy219;
2751- goto yy194;
2752- }
2753+ yyleng = YYCURSOR - SCNG(yy_text);
2754+#line 494 "Zend/zend_ini_scanner.l"
2755+ { /* Double quoted '"' string start */
2756+ yy_push_state(ST_DOUBLE_QUOTES TSRMLS_CC);
2757+ return '"';
2758+}
2759+#line 2262 "Zend/zend_ini_scanner.c"
2760 yy180:
2761 YYDEBUG(180, *YYCURSOR);
2762- yyaccept = 1;
2763- yych = *(YYMARKER = ++YYCURSOR);
2764- if (yybm[0+yych] & 128) {
2765- goto yy215;
2766+ yych = *++YYCURSOR;
2767+ if (yych <= '\\') {
2768+ if (yych <= 0x00) goto yy177;
2769+ if (yych <= '[') goto yy195;
2770+ goto yy200;
2771+ } else {
2772+ if (yych == '{') goto yy220;
2773+ goto yy195;
2774 }
2775- goto yy176;
2776 yy181:
2777 YYDEBUG(181, *YYCURSOR);
2778- yyaccept = 0;
2779+ yyaccept = 1;
2780 yych = *(YYMARKER = ++YYCURSOR);
2781- if (yych <= '/') goto yy195;
2782- if (yych <= '9') goto yy213;
2783- goto yy195;
2784+ if (yybm[0+yych] & 128) {
2785+ goto yy216;
2786+ }
2787+ goto yy177;
2788 yy182:
2789 YYDEBUG(182, *YYCURSOR);
2790 yyaccept = 0;
2791 yych = *(YYMARKER = ++YYCURSOR);
2792- if (yych <= '/') goto yy195;
2793- if (yych <= '9') goto yy211;
2794- goto yy195;
2795+ if (yych <= '/') goto yy196;
2796+ if (yych <= '9') goto yy214;
2797+ goto yy196;
2798 yy183:
2799 YYDEBUG(183, *YYCURSOR);
2800- yyaccept = 2;
2801+ yyaccept = 0;
2802 yych = *(YYMARKER = ++YYCURSOR);
2803- if (yych <= '\'') {
2804- if (yych <= '\r') {
2805- if (yych == '\n') goto yy184;
2806- if (yych <= '\f') goto yy195;
2807- } else {
2808- if (yych == '"') goto yy184;
2809- if (yych <= '&') goto yy195;
2810- }
2811- } else {
2812- if (yych <= '9') {
2813- if (yych == '.') goto yy207;
2814- if (yych <= '/') goto yy195;
2815- goto yy209;
2816- } else {
2817- if (yych <= ';') {
2818- if (yych <= ':') goto yy195;
2819- } else {
2820- if (yych != ']') goto yy195;
2821- }
2822- }
2823- }
2824+ if (yych <= '/') goto yy196;
2825+ if (yych <= '9') goto yy212;
2826+ goto yy196;
2827 yy184:
2828 YYDEBUG(184, *YYCURSOR);
2829- yyleng = YYCURSOR - SCNG(yy_text);
2830-#line 468 "Zend/zend_ini_scanner.l"
2831- { /* Get number option value as string */
2832- RETURN_TOKEN(TC_NUMBER, yytext, yyleng);
2833-}
2834-#line 2320 "Zend/zend_ini_scanner.c"
2835+ yyaccept = 2;
2836+ yych = *(YYMARKER = ++YYCURSOR);
2837+ if (yych <= '\'') {
2838+ if (yych <= '\r') {
2839+ if (yych == '\n') goto yy185;
2840+ if (yych <= '\f') goto yy196;
2841+ } else {
2842+ if (yych == '"') goto yy185;
2843+ if (yych <= '&') goto yy196;
2844+ }
2845+ } else {
2846+ if (yych <= '9') {
2847+ if (yych == '.') goto yy208;
2848+ if (yych <= '/') goto yy196;
2849+ goto yy210;
2850+ } else {
2851+ if (yych <= ';') {
2852+ if (yych <= ':') goto yy196;
2853+ } else {
2854+ if (yych != ']') goto yy196;
2855+ }
2856+ }
2857+ }
2858 yy185:
2859 YYDEBUG(185, *YYCURSOR);
2860- yyaccept = 3;
2861- yych = *(YYMARKER = ++YYCURSOR);
2862- if (yybm[0+yych] & 32) {
2863- goto yy205;
2864- }
2865- if (yych <= '"') {
2866- if (yych <= '\f') {
2867- if (yych != '\n') goto yy195;
2868- } else {
2869- if (yych <= '\r') goto yy186;
2870- if (yych <= '!') goto yy195;
2871- }
2872- } else {
2873- if (yych <= ':') {
2874- if (yych != '\'') goto yy195;
2875- } else {
2876- if (yych <= ';') goto yy186;
2877- if (yych != ']') goto yy195;
2878- }
2879- }
2880+ yyleng = YYCURSOR - SCNG(yy_text);
2881+#line 468 "Zend/zend_ini_scanner.l"
2882+ { /* Get number option value as string */
2883+ RETURN_TOKEN(TC_NUMBER, yytext, yyleng);
2884+}
2885+#line 2328 "Zend/zend_ini_scanner.c"
2886 yy186:
2887 YYDEBUG(186, *YYCURSOR);
2888- yyleng = YYCURSOR - SCNG(yy_text);
2889-#line 464 "Zend/zend_ini_scanner.l"
2890- { /* Get constant option value */
2891- RETURN_TOKEN(TC_CONSTANT, yytext, yyleng);
2892-}
2893-#line 2350 "Zend/zend_ini_scanner.c"
2894+ yyaccept = 3;
2895+ yych = *(YYMARKER = ++YYCURSOR);
2896+ if (yybm[0+yych] & 32) {
2897+ goto yy206;
2898+ }
2899+ if (yych <= '"') {
2900+ if (yych <= '\f') {
2901+ if (yych != '\n') goto yy196;
2902+ } else {
2903+ if (yych <= '\r') goto yy187;
2904+ if (yych <= '!') goto yy196;
2905+ }
2906+ } else {
2907+ if (yych <= ':') {
2908+ if (yych != '\'') goto yy196;
2909+ } else {
2910+ if (yych <= ';') goto yy187;
2911+ if (yych != ']') goto yy196;
2912+ }
2913+ }
2914 yy187:
2915 YYDEBUG(187, *YYCURSOR);
2916- yych = *++YYCURSOR;
2917- goto yy194;
2918+ yyleng = YYCURSOR - SCNG(yy_text);
2919+#line 464 "Zend/zend_ini_scanner.l"
2920+ { /* Get constant option value */
2921+ RETURN_TOKEN(TC_CONSTANT, yytext, yyleng);
2922+}
2923+#line 2358 "Zend/zend_ini_scanner.c"
2924 yy188:
2925 YYDEBUG(188, *YYCURSOR);
2926- ++YYCURSOR;
2927- yych = *YYCURSOR;
2928- goto yy191;
2929+ yych = *++YYCURSOR;
2930+ goto yy195;
2931 yy189:
2932 YYDEBUG(189, *YYCURSOR);
2933- yyleng = YYCURSOR - SCNG(yy_text);
2934-#line 374 "Zend/zend_ini_scanner.l"
2935- { /* End of section */
2936- BEGIN(INITIAL);
2937- SCNG(lineno)++;
2938- return ']';
2939-}
2940-#line 2369 "Zend/zend_ini_scanner.c"
2941+ ++YYCURSOR;
2942+ yych = *YYCURSOR;
2943+ goto yy192;
2944 yy190:
2945 YYDEBUG(190, *YYCURSOR);
2946- ++YYCURSOR;
2947- YYFILL(2);
2948- yych = *YYCURSOR;
2949+ yyleng = YYCURSOR - SCNG(yy_text);
2950+#line 374 "Zend/zend_ini_scanner.l"
2951+ { /* End of section */
2952+ BEGIN(INITIAL);
2953+ SCNG(lineno)++;
2954+ return ']';
2955+}
2956+#line 2377 "Zend/zend_ini_scanner.c"
2957 yy191:
2958 YYDEBUG(191, *YYCURSOR);
2959- if (yybm[0+yych] & 2) {
2960- goto yy190;
2961- }
2962- if (yych == '\n') goto yy192;
2963- if (yych == '\r') goto yy193;
2964- goto yy189;
2965+ ++YYCURSOR;
2966+ YYFILL(2);
2967+ yych = *YYCURSOR;
2968 yy192:
2969 YYDEBUG(192, *YYCURSOR);
2970- yych = *++YYCURSOR;
2971- goto yy189;
2972+ if (yybm[0+yych] & 2) {
2973+ goto yy191;
2974+ }
2975+ if (yych == '\n') goto yy193;
2976+ if (yych == '\r') goto yy194;
2977+ goto yy190;
2978 yy193:
2979 YYDEBUG(193, *YYCURSOR);
2980 yych = *++YYCURSOR;
2981- if (yych == '\n') goto yy192;
2982- goto yy189;
2983+ goto yy190;
2984 yy194:
2985 YYDEBUG(194, *YYCURSOR);
2986- yyaccept = 0;
2987- YYMARKER = ++YYCURSOR;
2988- YYFILL(1);
2989- yych = *YYCURSOR;
2990+ yych = *++YYCURSOR;
2991+ if (yych == '\n') goto yy193;
2992+ goto yy190;
2993 yy195:
2994 YYDEBUG(195, *YYCURSOR);
2995- if (yybm[0+yych] & 4) {
2996- goto yy194;
2997- }
2998- if (yych == '$') goto yy197;
2999- if (yych != '\\') goto yy173;
3000+ yyaccept = 0;
3001+ YYMARKER = ++YYCURSOR;
3002+ YYFILL(1);
3003+ yych = *YYCURSOR;
3004 yy196:
3005 YYDEBUG(196, *YYCURSOR);
3006- ++YYCURSOR;
3007- YYFILL(1);
3008- yych = *YYCURSOR;
3009- goto yy194;
3010+ if (yybm[0+yych] & 4) {
3011+ goto yy195;
3012+ }
3013+ if (yych == '$') goto yy198;
3014+ if (yych != '\\') goto yy174;
3015 yy197:
3016 YYDEBUG(197, *YYCURSOR);
3017 ++YYCURSOR;
3018 YYFILL(1);
3019 yych = *YYCURSOR;
3020- if (yych <= '\\') {
3021- if (yych <= 0x00) goto yy198;
3022- if (yych <= '[') goto yy194;
3023- goto yy199;
3024- } else {
3025- if (yych != '{') goto yy194;
3026- }
3027+ goto yy195;
3028 yy198:
3029 YYDEBUG(198, *YYCURSOR);
3030- YYCURSOR = YYMARKER;
3031- if (yyaccept <= 1) {
3032- if (yyaccept <= 0) {
3033- goto yy173;
3034- } else {
3035- goto yy176;
3036- }
3037+ ++YYCURSOR;
3038+ YYFILL(1);
3039+ yych = *YYCURSOR;
3040+ if (yych <= '\\') {
3041+ if (yych <= 0x00) goto yy199;
3042+ if (yych <= '[') goto yy195;
3043+ goto yy200;
3044 } else {
3045- if (yyaccept <= 2) {
3046- goto yy184;
3047- } else {
3048- goto yy186;
3049- }
3050+ if (yych != '{') goto yy195;
3051 }
3052 yy199:
3053 YYDEBUG(199, *YYCURSOR);
3054- ++YYCURSOR;
3055- YYFILL(1);
3056- yych = *YYCURSOR;
3057- if (yybm[0+yych] & 8) {
3058- goto yy200;
3059+ YYCURSOR = YYMARKER;
3060+ if (yyaccept <= 1) {
3061+ if (yyaccept <= 0) {
3062+ goto yy174;
3063+ } else {
3064+ goto yy177;
3065+ }
3066+ } else {
3067+ if (yyaccept <= 2) {
3068+ goto yy185;
3069+ } else {
3070+ goto yy187;
3071+ }
3072 }
3073- if (yych == '\\') goto yy202;
3074- goto yy194;
3075 yy200:
3076 YYDEBUG(200, *YYCURSOR);
3077 ++YYCURSOR;
3078 YYFILL(1);
3079 yych = *YYCURSOR;
3080+ if (yybm[0+yych] & 8) {
3081+ goto yy201;
3082+ }
3083+ if (yych == '\\') goto yy203;
3084+ goto yy195;
3085+yy201:
3086 YYDEBUG(201, *YYCURSOR);
3087- if (yybm[0+yych] & 8) {
3088- goto yy200;
3089- }
3090- if (yych == '\\') goto yy204;
3091- goto yy194;
3092-yy202:
3093+ ++YYCURSOR;
3094+ YYFILL(1);
3095+ yych = *YYCURSOR;
3096 YYDEBUG(202, *YYCURSOR);
3097- ++YYCURSOR;
3098- YYFILL(1);
3099- yych = *YYCURSOR;
3100+ if (yybm[0+yych] & 8) {
3101+ goto yy201;
3102+ }
3103+ if (yych == '\\') goto yy205;
3104+ goto yy195;
3105+yy203:
3106 YYDEBUG(203, *YYCURSOR);
3107- if (yybm[0+yych] & 8) {
3108- goto yy200;
3109- }
3110- if (yych == '\\') goto yy202;
3111- goto yy194;
3112-yy204:
3113+ ++YYCURSOR;
3114+ YYFILL(1);
3115+ yych = *YYCURSOR;
3116 YYDEBUG(204, *YYCURSOR);
3117- ++YYCURSOR;
3118- YYFILL(1);
3119- yych = *YYCURSOR;
3120 if (yybm[0+yych] & 8) {
3121- goto yy200;
3122+ goto yy201;
3123 }
3124- if (yych == '\\') goto yy202;
3125- goto yy194;
3126+ if (yych == '\\') goto yy203;
3127+ goto yy195;
3128 yy205:
3129 YYDEBUG(205, *YYCURSOR);
3130- yyaccept = 3;
3131- YYMARKER = ++YYCURSOR;
3132+ ++YYCURSOR;
3133 YYFILL(1);
3134 yych = *YYCURSOR;
3135+ if (yybm[0+yych] & 8) {
3136+ goto yy201;
3137+ }
3138+ if (yych == '\\') goto yy203;
3139+ goto yy195;
3140+yy206:
3141 YYDEBUG(206, *YYCURSOR);
3142- if (yybm[0+yych] & 32) {
3143- goto yy205;
3144- }
3145- if (yych <= '$') {
3146- if (yych <= '\r') {
3147- if (yych == '\n') goto yy186;
3148- if (yych <= '\f') goto yy194;
3149- goto yy186;
3150- } else {
3151- if (yych == '"') goto yy186;
3152- if (yych <= '#') goto yy194;
3153- goto yy197;
3154- }
3155- } else {
3156- if (yych <= ';') {
3157- if (yych == '\'') goto yy186;
3158- if (yych <= ':') goto yy194;
3159- goto yy186;
3160- } else {
3161- if (yych <= '[') goto yy194;
3162- if (yych <= '\\') goto yy196;
3163- if (yych <= ']') goto yy186;
3164- goto yy194;
3165- }
3166- }
3167-yy207:
3168+ yyaccept = 3;
3169+ YYMARKER = ++YYCURSOR;
3170+ YYFILL(1);
3171+ yych = *YYCURSOR;
3172 YYDEBUG(207, *YYCURSOR);
3173- yyaccept = 2;
3174- YYMARKER = ++YYCURSOR;
3175- YYFILL(1);
3176- yych = *YYCURSOR;
3177+ if (yybm[0+yych] & 32) {
3178+ goto yy206;
3179+ }
3180+ if (yych <= '$') {
3181+ if (yych <= '\r') {
3182+ if (yych == '\n') goto yy187;
3183+ if (yych <= '\f') goto yy195;
3184+ goto yy187;
3185+ } else {
3186+ if (yych == '"') goto yy187;
3187+ if (yych <= '#') goto yy195;
3188+ goto yy198;
3189+ }
3190+ } else {
3191+ if (yych <= ';') {
3192+ if (yych == '\'') goto yy187;
3193+ if (yych <= ':') goto yy195;
3194+ goto yy187;
3195+ } else {
3196+ if (yych <= '[') goto yy195;
3197+ if (yych <= '\\') goto yy197;
3198+ if (yych <= ']') goto yy187;
3199+ goto yy195;
3200+ }
3201+ }
3202+yy208:
3203 YYDEBUG(208, *YYCURSOR);
3204- if (yybm[0+yych] & 64) {
3205- goto yy207;
3206- }
3207- if (yych <= '$') {
3208- if (yych <= '\r') {
3209- if (yych == '\n') goto yy184;
3210- if (yych <= '\f') goto yy194;
3211- goto yy184;
3212- } else {
3213- if (yych == '"') goto yy184;
3214- if (yych <= '#') goto yy194;
3215- goto yy197;
3216- }
3217- } else {
3218- if (yych <= ';') {
3219- if (yych == '\'') goto yy184;
3220- if (yych <= ':') goto yy194;
3221- goto yy184;
3222- } else {
3223- if (yych <= '[') goto yy194;
3224- if (yych <= '\\') goto yy196;
3225- if (yych <= ']') goto yy184;
3226- goto yy194;
3227- }
3228- }
3229-yy209:
3230+ yyaccept = 2;
3231+ YYMARKER = ++YYCURSOR;
3232+ YYFILL(1);
3233+ yych = *YYCURSOR;
3234 YYDEBUG(209, *YYCURSOR);
3235- yyaccept = 2;
3236- YYMARKER = ++YYCURSOR;
3237- YYFILL(1);
3238- yych = *YYCURSOR;
3239+ if (yybm[0+yych] & 64) {
3240+ goto yy208;
3241+ }
3242+ if (yych <= '$') {
3243+ if (yych <= '\r') {
3244+ if (yych == '\n') goto yy185;
3245+ if (yych <= '\f') goto yy195;
3246+ goto yy185;
3247+ } else {
3248+ if (yych == '"') goto yy185;
3249+ if (yych <= '#') goto yy195;
3250+ goto yy198;
3251+ }
3252+ } else {
3253+ if (yych <= ';') {
3254+ if (yych == '\'') goto yy185;
3255+ if (yych <= ':') goto yy195;
3256+ goto yy185;
3257+ } else {
3258+ if (yych <= '[') goto yy195;
3259+ if (yych <= '\\') goto yy197;
3260+ if (yych <= ']') goto yy185;
3261+ goto yy195;
3262+ }
3263+ }
3264+yy210:
3265 YYDEBUG(210, *YYCURSOR);
3266- if (yych <= '\'') {
3267- if (yych <= '!') {
3268- if (yych <= '\n') {
3269- if (yych <= '\t') goto yy194;
3270- goto yy184;
3271- } else {
3272- if (yych == '\r') goto yy184;
3273- goto yy194;
3274- }
3275- } else {
3276- if (yych <= '#') {
3277- if (yych <= '"') goto yy184;
3278- goto yy194;
3279- } else {
3280- if (yych <= '$') goto yy197;
3281- if (yych <= '&') goto yy194;
3282- goto yy184;
3283- }
3284- }
3285- } else {
3286- if (yych <= ':') {
3287- if (yych <= '.') {
3288- if (yych <= '-') goto yy194;
3289- goto yy207;
3290- } else {
3291- if (yych <= '/') goto yy194;
3292- if (yych <= '9') goto yy209;
3293- goto yy194;
3294- }
3295- } else {
3296- if (yych <= '[') {
3297- if (yych <= ';') goto yy184;
3298- goto yy194;
3299- } else {
3300- if (yych <= '\\') goto yy196;
3301- if (yych <= ']') goto yy184;
3302- goto yy194;
3303- }
3304- }
3305- }
3306-yy211:
3307+ yyaccept = 2;
3308+ YYMARKER = ++YYCURSOR;
3309+ YYFILL(1);
3310+ yych = *YYCURSOR;
3311 YYDEBUG(211, *YYCURSOR);
3312- yyaccept = 2;
3313- YYMARKER = ++YYCURSOR;
3314- YYFILL(1);
3315- yych = *YYCURSOR;
3316+ if (yych <= '\'') {
3317+ if (yych <= '!') {
3318+ if (yych <= '\n') {
3319+ if (yych <= '\t') goto yy195;
3320+ goto yy185;
3321+ } else {
3322+ if (yych == '\r') goto yy185;
3323+ goto yy195;
3324+ }
3325+ } else {
3326+ if (yych <= '#') {
3327+ if (yych <= '"') goto yy185;
3328+ goto yy195;
3329+ } else {
3330+ if (yych <= '$') goto yy198;
3331+ if (yych <= '&') goto yy195;
3332+ goto yy185;
3333+ }
3334+ }
3335+ } else {
3336+ if (yych <= ':') {
3337+ if (yych <= '.') {
3338+ if (yych <= '-') goto yy195;
3339+ goto yy208;
3340+ } else {
3341+ if (yych <= '/') goto yy195;
3342+ if (yych <= '9') goto yy210;
3343+ goto yy195;
3344+ }
3345+ } else {
3346+ if (yych <= '[') {
3347+ if (yych <= ';') goto yy185;
3348+ goto yy195;
3349+ } else {
3350+ if (yych <= '\\') goto yy197;
3351+ if (yych <= ']') goto yy185;
3352+ goto yy195;
3353+ }
3354+ }
3355+ }
3356+yy212:
3357 YYDEBUG(212, *YYCURSOR);
3358- if (yych <= '&') {
3359- if (yych <= '\r') {
3360- if (yych == '\n') goto yy184;
3361- if (yych <= '\f') goto yy194;
3362- goto yy184;
3363- } else {
3364- if (yych <= '"') {
3365- if (yych <= '!') goto yy194;
3366- goto yy184;
3367- } else {
3368- if (yych == '$') goto yy197;
3369- goto yy194;
3370- }
3371- }
3372- } else {
3373- if (yych <= ':') {
3374- if (yych <= '\'') goto yy184;
3375- if (yych <= '/') goto yy194;
3376- if (yych <= '9') goto yy211;
3377- goto yy194;
3378- } else {
3379- if (yych <= '[') {
3380- if (yych <= ';') goto yy184;
3381- goto yy194;
3382- } else {
3383- if (yych <= '\\') goto yy196;
3384- if (yych <= ']') goto yy184;
3385- goto yy194;
3386- }
3387- }
3388- }
3389-yy213:
3390+ yyaccept = 2;
3391+ YYMARKER = ++YYCURSOR;
3392+ YYFILL(1);
3393+ yych = *YYCURSOR;
3394 YYDEBUG(213, *YYCURSOR);
3395- yyaccept = 2;
3396- YYMARKER = ++YYCURSOR;
3397- YYFILL(1);
3398- yych = *YYCURSOR;
3399+ if (yych <= '&') {
3400+ if (yych <= '\r') {
3401+ if (yych == '\n') goto yy185;
3402+ if (yych <= '\f') goto yy195;
3403+ goto yy185;
3404+ } else {
3405+ if (yych <= '"') {
3406+ if (yych <= '!') goto yy195;
3407+ goto yy185;
3408+ } else {
3409+ if (yych == '$') goto yy198;
3410+ goto yy195;
3411+ }
3412+ }
3413+ } else {
3414+ if (yych <= ':') {
3415+ if (yych <= '\'') goto yy185;
3416+ if (yych <= '/') goto yy195;
3417+ if (yych <= '9') goto yy212;
3418+ goto yy195;
3419+ } else {
3420+ if (yych <= '[') {
3421+ if (yych <= ';') goto yy185;
3422+ goto yy195;
3423+ } else {
3424+ if (yych <= '\\') goto yy197;
3425+ if (yych <= ']') goto yy185;
3426+ goto yy195;
3427+ }
3428+ }
3429+ }
3430+yy214:
3431 YYDEBUG(214, *YYCURSOR);
3432- if (yych <= '&') {
3433- if (yych <= '\r') {
3434- if (yych == '\n') goto yy184;
3435- if (yych <= '\f') goto yy194;
3436- goto yy184;
3437- } else {
3438- if (yych <= '"') {
3439- if (yych <= '!') goto yy194;
3440- goto yy184;
3441- } else {
3442- if (yych == '$') goto yy197;
3443- goto yy194;
3444- }
3445- }
3446- } else {
3447- if (yych <= ':') {
3448- if (yych <= '\'') goto yy184;
3449- if (yych <= '/') goto yy194;
3450- if (yych <= '9') goto yy213;
3451- goto yy194;
3452- } else {
3453- if (yych <= '[') {
3454- if (yych <= ';') goto yy184;
3455- goto yy194;
3456- } else {
3457- if (yych <= '\\') goto yy196;
3458- if (yych <= ']') goto yy184;
3459- goto yy194;
3460- }
3461- }
3462- }
3463-yy215:
3464+ yyaccept = 2;
3465+ YYMARKER = ++YYCURSOR;
3466+ YYFILL(1);
3467+ yych = *YYCURSOR;
3468 YYDEBUG(215, *YYCURSOR);
3469- ++YYCURSOR;
3470- YYFILL(1);
3471- yych = *YYCURSOR;
3472+ if (yych <= '&') {
3473+ if (yych <= '\r') {
3474+ if (yych == '\n') goto yy185;
3475+ if (yych <= '\f') goto yy195;
3476+ goto yy185;
3477+ } else {
3478+ if (yych <= '"') {
3479+ if (yych <= '!') goto yy195;
3480+ goto yy185;
3481+ } else {
3482+ if (yych == '$') goto yy198;
3483+ goto yy195;
3484+ }
3485+ }
3486+ } else {
3487+ if (yych <= ':') {
3488+ if (yych <= '\'') goto yy185;
3489+ if (yych <= '/') goto yy195;
3490+ if (yych <= '9') goto yy214;
3491+ goto yy195;
3492+ } else {
3493+ if (yych <= '[') {
3494+ if (yych <= ';') goto yy185;
3495+ goto yy195;
3496+ } else {
3497+ if (yych <= '\\') goto yy197;
3498+ if (yych <= ']') goto yy185;
3499+ goto yy195;
3500+ }
3501+ }
3502+ }
3503+yy216:
3504 YYDEBUG(216, *YYCURSOR);
3505- if (yybm[0+yych] & 128) {
3506- goto yy215;
3507- }
3508+ ++YYCURSOR;
3509+ YYFILL(1);
3510+ yych = *YYCURSOR;
3511 YYDEBUG(217, *YYCURSOR);
3512- ++YYCURSOR;
3513+ if (yybm[0+yych] & 128) {
3514+ goto yy216;
3515+ }
3516 YYDEBUG(218, *YYCURSOR);
3517- yyleng = YYCURSOR - SCNG(yy_text);
3518-#line 365 "Zend/zend_ini_scanner.l"
3519- { /* Raw string */
3520- /* Eat leading and trailing single quotes */
3521- if (yytext[0] == '\'' && yytext[yyleng - 1] == '\'') {
3522- SCNG(yy_text)++;
3523- yyleng = yyleng - 2;
3524- }
3525- RETURN_TOKEN(TC_RAW, yytext, yyleng);
3526-}
3527-#line 2690 "Zend/zend_ini_scanner.c"
3528-yy219:
3529+ ++YYCURSOR;
3530 YYDEBUG(219, *YYCURSOR);
3531- ++YYCURSOR;
3532+ yyleng = YYCURSOR - SCNG(yy_text);
3533+#line 365 "Zend/zend_ini_scanner.l"
3534+ { /* Raw string */
3535+ /* Eat leading and trailing single quotes */
3536+ if (yytext[0] == '\'' && yytext[yyleng - 1] == '\'') {
3537+ SCNG(yy_text)++;
3538+ yyleng = yyleng - 2;
3539+ }
3540+ RETURN_TOKEN(TC_RAW, yytext, yyleng);
3541+}
3542+#line 2698 "Zend/zend_ini_scanner.c"
3543+yy220:
3544 YYDEBUG(220, *YYCURSOR);
3545- yyleng = YYCURSOR - SCNG(yy_text);
3546-#line 398 "Zend/zend_ini_scanner.l"
3547- { /* Variable start */
3548- yy_push_state(ST_VARNAME TSRMLS_CC);
3549- return TC_DOLLAR_CURLY;
3550-}
3551-#line 2701 "Zend/zend_ini_scanner.c"
3552-yy221:
3553+ ++YYCURSOR;
3554 YYDEBUG(221, *YYCURSOR);
3555- yyaccept = 0;
3556- YYMARKER = ++YYCURSOR;
3557- YYFILL(1);
3558- yych = *YYCURSOR;
3559+ yyleng = YYCURSOR - SCNG(yy_text);
3560+#line 398 "Zend/zend_ini_scanner.l"
3561+ { /* Variable start */
3562+ yy_push_state(ST_VARNAME TSRMLS_CC);
3563+ return TC_DOLLAR_CURLY;
3564+}
3565+#line 2709 "Zend/zend_ini_scanner.c"
3566+yy222:
3567 YYDEBUG(222, *YYCURSOR);
3568- if (yych <= '"') {
3569- if (yych <= '\f') {
3570- if (yych <= 0x08) goto yy194;
3571- if (yych <= '\t') goto yy221;
3572- if (yych <= '\n') goto yy173;
3573- goto yy194;
3574- } else {
3575- if (yych <= 0x1F) {
3576- if (yych <= '\r') goto yy173;
3577- goto yy194;
3578- } else {
3579- if (yych <= ' ') goto yy221;
3580- if (yych <= '!') goto yy194;
3581- }
3582- }
3583- } else {
3584- if (yych <= ':') {
3585- if (yych <= '$') {
3586- if (yych <= '#') goto yy194;
3587- goto yy197;
3588- } else {
3589- if (yych == '\'') goto yy173;
3590- goto yy194;
3591- }
3592- } else {
3593- if (yych <= '[') {
3594- if (yych <= ';') goto yy173;
3595- goto yy194;
3596- } else {
3597- if (yych <= '\\') goto yy196;
3598- if (yych <= ']') goto yy173;
3599- goto yy194;
3600- }
3601- }
3602- }
3603-yy223:
3604+ yyaccept = 0;
3605+ YYMARKER = ++YYCURSOR;
3606+ YYFILL(1);
3607+ yych = *YYCURSOR;
3608 YYDEBUG(223, *YYCURSOR);
3609+ if (yych <= '"') {
3610+ if (yych <= '\f') {
3611+ if (yych <= 0x08) goto yy195;
3612+ if (yych <= '\t') goto yy222;
3613+ if (yych <= '\n') goto yy174;
3614+ goto yy195;
3615+ } else {
3616+ if (yych <= 0x1F) {
3617+ if (yych <= '\r') goto yy174;
3618+ goto yy195;
3619+ } else {
3620+ if (yych <= ' ') goto yy222;
3621+ if (yych <= '!') goto yy195;
3622+ }
3623+ }
3624+ } else {
3625+ if (yych <= ':') {
3626+ if (yych <= '$') {
3627+ if (yych <= '#') goto yy195;
3628+ goto yy198;
3629+ } else {
3630+ if (yych == '\'') goto yy174;
3631+ goto yy195;
3632+ }
3633+ } else {
3634+ if (yych <= '[') {
3635+ if (yych <= ';') goto yy174;
3636+ goto yy195;
3637+ } else {
3638+ if (yych <= '\\') goto yy197;
3639+ if (yych <= ']') goto yy174;
3640+ goto yy195;
3641+ }
3642+ }
3643+ }
3644+yy224:
3645+ YYDEBUG(224, *YYCURSOR);
3646 ++YYCURSOR;
3647 yych = *YYCURSOR;
3648- goto yy178;
3649+ goto yy179;
3650 }
3651 /* *********************************** */
3652 yyc_ST_VALUE:
3653@@ -2783,27 +2791,27 @@
3654 162, 162, 162, 162, 162, 162, 162, 162,
3655 162, 162, 162, 162, 162, 162, 162, 162,
3656 };
3657- YYDEBUG(224, *YYCURSOR);
3658+ YYDEBUG(225, *YYCURSOR);
3659 YYFILL(6);
3660 yych = *YYCURSOR;
3661 YYDEBUG(-1, yych);
3662 switch (yych) {
3663- case 0x00: goto yy226;
3664+ case 0x00: goto yy227;
3665 case '\t':
3666- case ' ': goto yy230;
3667- case '\n': goto yy232;
3668- case '\r': goto yy234;
3669+ case ' ': goto yy231;
3670+ case '\n': goto yy233;
3671+ case '\r': goto yy235;
3672 case '!':
3673 case '&':
3674 case '(':
3675 case ')':
3676 case '|':
3677- case '~': goto yy235;
3678- case '"': goto yy237;
3679- case '$': goto yy239;
3680- case '\'': goto yy240;
3681- case '-': goto yy241;
3682- case '.': goto yy242;
3683+ case '~': goto yy236;
3684+ case '"': goto yy238;
3685+ case '$': goto yy240;
3686+ case '\'': goto yy241;
3687+ case '-': goto yy242;
3688+ case '.': goto yy243;
3689 case '0':
3690 case '1':
3691 case '2':
3692@@ -2813,9 +2821,9 @@
3693 case '6':
3694 case '7':
3695 case '8':
3696- case '9': goto yy243;
3697- case ';': goto yy245;
3698- case '=': goto yy246;
3699+ case '9': goto yy244;
3700+ case ';': goto yy246;
3701+ case '=': goto yy247;
3702 case 'A':
3703 case 'B':
3704 case 'C':
3705@@ -2858,189 +2866,189 @@
3706 case 'v':
3707 case 'w':
3708 case 'x':
3709- case 'z': goto yy248;
3710+ case 'z': goto yy249;
3711 case 'F':
3712- case 'f': goto yy250;
3713+ case 'f': goto yy251;
3714 case 'N':
3715- case 'n': goto yy251;
3716+ case 'n': goto yy252;
3717 case 'O':
3718- case 'o': goto yy252;
3719+ case 'o': goto yy253;
3720 case 'T':
3721- case 't': goto yy253;
3722+ case 't': goto yy254;
3723 case 'Y':
3724- case 'y': goto yy254;
3725- default: goto yy228;
3726+ case 'y': goto yy255;
3727+ default: goto yy229;
3728 }
3729-yy226:
3730- YYDEBUG(226, *YYCURSOR);
3731- ++YYCURSOR;
3732 yy227:
3733 YYDEBUG(227, *YYCURSOR);
3734- yyleng = YYCURSOR - SCNG(yy_text);
3735-#line 567 "Zend/zend_ini_scanner.l"
3736- { /* End of option value (if EOF is reached before EOL */
3737- BEGIN(INITIAL);
3738- return END_OF_LINE;
3739-}
3740-#line 2886 "Zend/zend_ini_scanner.c"
3741+ ++YYCURSOR;
3742 yy228:
3743 YYDEBUG(228, *YYCURSOR);
3744- yyaccept = 0;
3745- yych = *(YYMARKER = ++YYCURSOR);
3746- goto yy256;
3747+ yyleng = YYCURSOR - SCNG(yy_text);
3748+#line 567 "Zend/zend_ini_scanner.l"
3749+ { /* End of option value (if EOF is reached before EOL */
3750+ BEGIN(INITIAL);
3751+ return END_OF_LINE;
3752+}
3753+#line 2894 "Zend/zend_ini_scanner.c"
3754 yy229:
3755 YYDEBUG(229, *YYCURSOR);
3756+ yyaccept = 0;
3757+ yych = *(YYMARKER = ++YYCURSOR);
3758+ goto yy257;
3759+yy230:
3760+ YYDEBUG(230, *YYCURSOR);
3761 yyleng = YYCURSOR - SCNG(yy_text);
3762 #line 486 "Zend/zend_ini_scanner.l"
3763 { /* Get everything else as option/offset value */
3764 RETURN_TOKEN(TC_STRING, yytext, yyleng);
3765 }
3766-#line 2899 "Zend/zend_ini_scanner.c"
3767-yy230:
3768- YYDEBUG(230, *YYCURSOR);
3769- yyaccept = 1;
3770- yych = *(YYMARKER = ++YYCURSOR);
3771- goto yy306;
3772+#line 2907 "Zend/zend_ini_scanner.c"
3773 yy231:
3774 YYDEBUG(231, *YYCURSOR);
3775+ yyaccept = 1;
3776+ yych = *(YYMARKER = ++YYCURSOR);
3777+ goto yy307;
3778+yy232:
3779+ YYDEBUG(232, *YYCURSOR);
3780 yyleng = YYCURSOR - SCNG(yy_text);
3781 #line 540 "Zend/zend_ini_scanner.l"
3782 {
3783 RETURN_TOKEN(TC_WHITESPACE, yytext, yyleng);
3784 }
3785-#line 2912 "Zend/zend_ini_scanner.c"
3786-yy232:
3787- YYDEBUG(232, *YYCURSOR);
3788- ++YYCURSOR;
3789+#line 2920 "Zend/zend_ini_scanner.c"
3790 yy233:
3791 YYDEBUG(233, *YYCURSOR);
3792- yyleng = YYCURSOR - SCNG(yy_text);
3793-#line 458 "Zend/zend_ini_scanner.l"
3794- { /* End of option value */
3795- BEGIN(INITIAL);
3796- SCNG(lineno)++;
3797- return END_OF_LINE;
3798-}
3799-#line 2925 "Zend/zend_ini_scanner.c"
3800+ ++YYCURSOR;
3801 yy234:
3802 YYDEBUG(234, *YYCURSOR);
3803- yych = *++YYCURSOR;
3804- if (yych == '\n') goto yy304;
3805- goto yy233;
3806+ yyleng = YYCURSOR - SCNG(yy_text);
3807+#line 458 "Zend/zend_ini_scanner.l"
3808+ { /* End of option value */
3809+ BEGIN(INITIAL);
3810+ SCNG(lineno)++;
3811+ return END_OF_LINE;
3812+}
3813+#line 2933 "Zend/zend_ini_scanner.c"
3814 yy235:
3815 YYDEBUG(235, *YYCURSOR);
3816- ++YYCURSOR;
3817- yych = *YYCURSOR;
3818- goto yy303;
3819+ yych = *++YYCURSOR;
3820+ if (yych == '\n') goto yy305;
3821+ goto yy234;
3822 yy236:
3823 YYDEBUG(236, *YYCURSOR);
3824+ ++YYCURSOR;
3825+ yych = *YYCURSOR;
3826+ goto yy304;
3827+yy237:
3828+ YYDEBUG(237, *YYCURSOR);
3829 yyleng = YYCURSOR - SCNG(yy_text);
3830 #line 476 "Zend/zend_ini_scanner.l"
3831 { /* Boolean operators */
3832 return yytext[0];
3833 }
3834-#line 2943 "Zend/zend_ini_scanner.c"
3835-yy237:
3836- YYDEBUG(237, *YYCURSOR);
3837- ++YYCURSOR;
3838+#line 2951 "Zend/zend_ini_scanner.c"
3839 yy238:
3840 YYDEBUG(238, *YYCURSOR);
3841- yyleng = YYCURSOR - SCNG(yy_text);
3842-#line 494 "Zend/zend_ini_scanner.l"
3843- { /* Double quoted '"' string start */
3844- yy_push_state(ST_DOUBLE_QUOTES TSRMLS_CC);
3845- return '"';
3846-}
3847-#line 2955 "Zend/zend_ini_scanner.c"
3848+ ++YYCURSOR;
3849 yy239:
3850 YYDEBUG(239, *YYCURSOR);
3851- yych = *++YYCURSOR;
3852- if (yych <= '\\') {
3853- if (yych <= 0x00) goto yy227;
3854- if (yych <= '[') goto yy255;
3855- goto yy262;
3856- } else {
3857- if (yych == '{') goto yy300;
3858- goto yy255;
3859- }
3860+ yyleng = YYCURSOR - SCNG(yy_text);
3861+#line 494 "Zend/zend_ini_scanner.l"
3862+ { /* Double quoted '"' string start */
3863+ yy_push_state(ST_DOUBLE_QUOTES TSRMLS_CC);
3864+ return '"';
3865+}
3866+#line 2963 "Zend/zend_ini_scanner.c"
3867 yy240:
3868 YYDEBUG(240, *YYCURSOR);
3869- yyaccept = 2;
3870- yych = *(YYMARKER = ++YYCURSOR);
3871- if (yybm[0+yych] & 128) {
3872- goto yy296;
3873+ yych = *++YYCURSOR;
3874+ if (yych <= '\\') {
3875+ if (yych <= 0x00) goto yy228;
3876+ if (yych <= '[') goto yy256;
3877+ goto yy263;
3878+ } else {
3879+ if (yych == '{') goto yy301;
3880+ goto yy256;
3881 }
3882- goto yy227;
3883 yy241:
3884 YYDEBUG(241, *YYCURSOR);
3885- yyaccept = 0;
3886+ yyaccept = 2;
3887 yych = *(YYMARKER = ++YYCURSOR);
3888- if (yych <= '/') goto yy256;
3889- if (yych <= '9') goto yy294;
3890- goto yy256;
3891+ if (yybm[0+yych] & 128) {
3892+ goto yy297;
3893+ }
3894+ goto yy228;
3895 yy242:
3896 YYDEBUG(242, *YYCURSOR);
3897 yyaccept = 0;
3898 yych = *(YYMARKER = ++YYCURSOR);
3899- if (yych <= '/') goto yy256;
3900- if (yych <= '9') goto yy292;
3901- goto yy256;
3902+ if (yych <= '/') goto yy257;
3903+ if (yych <= '9') goto yy295;
3904+ goto yy257;
3905 yy243:
3906 YYDEBUG(243, *YYCURSOR);
3907+ yyaccept = 0;
3908+ yych = *(YYMARKER = ++YYCURSOR);
3909+ if (yych <= '/') goto yy257;
3910+ if (yych <= '9') goto yy293;
3911+ goto yy257;
3912+yy244:
3913+ YYDEBUG(244, *YYCURSOR);
3914 yyaccept = 3;
3915 yych = *(YYMARKER = ++YYCURSOR);
3916 if (yych <= '.') {
3917 if (yych <= '\r') {
3918 if (yych <= 0x08) {
3919- if (yych >= 0x01) goto yy256;
3920+ if (yych >= 0x01) goto yy257;
3921 } else {
3922- if (yych <= '\n') goto yy244;
3923- if (yych <= '\f') goto yy256;
3924+ if (yych <= '\n') goto yy245;
3925+ if (yych <= '\f') goto yy257;
3926 }
3927 } else {
3928 if (yych <= '%') {
3929- if (yych <= 0x1F) goto yy256;
3930- if (yych >= '#') goto yy256;
3931+ if (yych <= 0x1F) goto yy257;
3932+ if (yych >= '#') goto yy257;
3933 } else {
3934- if (yych <= ')') goto yy244;
3935- if (yych <= '-') goto yy256;
3936- goto yy288;
3937+ if (yych <= ')') goto yy245;
3938+ if (yych <= '-') goto yy257;
3939+ goto yy289;
3940 }
3941 }
3942 } else {
3943 if (yych <= '<') {
3944 if (yych <= '9') {
3945- if (yych <= '/') goto yy256;
3946- goto yy290;
3947+ if (yych <= '/') goto yy257;
3948+ goto yy291;
3949 } else {
3950- if (yych != ';') goto yy256;
3951+ if (yych != ';') goto yy257;
3952 }
3953 } else {
3954 if (yych <= '|') {
3955- if (yych <= '=') goto yy244;
3956- if (yych <= '{') goto yy256;
3957+ if (yych <= '=') goto yy245;
3958+ if (yych <= '{') goto yy257;
3959 } else {
3960- if (yych != '~') goto yy256;
3961+ if (yych != '~') goto yy257;
3962 }
3963 }
3964 }
3965-yy244:
3966- YYDEBUG(244, *YYCURSOR);
3967- yyleng = YYCURSOR - SCNG(yy_text);
3968-#line 468 "Zend/zend_ini_scanner.l"
3969- { /* Get number option value as string */
3970- RETURN_TOKEN(TC_NUMBER, yytext, yyleng);
3971-}
3972-#line 3035 "Zend/zend_ini_scanner.c"
3973 yy245:
3974 YYDEBUG(245, *YYCURSOR);
3975- yyaccept = 2;
3976- yych = *(YYMARKER = ++YYCURSOR);
3977- goto yy284;
3978+ yyleng = YYCURSOR - SCNG(yy_text);
3979+#line 468 "Zend/zend_ini_scanner.l"
3980+ { /* Get number option value as string */
3981+ RETURN_TOKEN(TC_NUMBER, yytext, yyleng);
3982+}
3983+#line 3043 "Zend/zend_ini_scanner.c"
3984 yy246:
3985 YYDEBUG(246, *YYCURSOR);
3986- ++YYCURSOR;
3987+ yyaccept = 2;
3988+ yych = *(YYMARKER = ++YYCURSOR);
3989+ goto yy285;
3990+yy247:
3991 YYDEBUG(247, *YYCURSOR);
3992+ ++YYCURSOR;
3993+ YYDEBUG(248, *YYCURSOR);
3994 yyleng = YYCURSOR - SCNG(yy_text);
3995 #line 480 "Zend/zend_ini_scanner.l"
3996 { /* Make = used in option value to trigger error */
3997@@ -3048,154 +3056,93 @@
3998 BEGIN(INITIAL);
3999 return END_OF_LINE;
4000 }
4001-#line 3052 "Zend/zend_ini_scanner.c"
4002-yy248:
4003- YYDEBUG(248, *YYCURSOR);
4004- yyaccept = 4;
4005- yych = *(YYMARKER = ++YYCURSOR);
4006- if (yybm[0+yych] & 4) {
4007- goto yy257;
4008- }
4009- if (yych <= ')') {
4010- if (yych <= '\f') {
4011- if (yych <= 0x00) goto yy249;
4012- if (yych <= 0x08) goto yy256;
4013- if (yych >= '\v') goto yy256;
4014- } else {
4015- if (yych <= 0x1F) {
4016- if (yych >= 0x0E) goto yy256;
4017- } else {
4018- if (yych <= '"') goto yy249;
4019- if (yych <= '%') goto yy256;
4020- }
4021- }
4022- } else {
4023- if (yych <= '=') {
4024- if (yych == ';') goto yy249;
4025- if (yych <= '<') goto yy256;
4026- } else {
4027- if (yych <= '|') {
4028- if (yych <= '{') goto yy256;
4029- } else {
4030- if (yych != '~') goto yy256;
4031- }
4032- }
4033- }
4034+#line 3060 "Zend/zend_ini_scanner.c"
4035 yy249:
4036 YYDEBUG(249, *YYCURSOR);
4037- yyleng = YYCURSOR - SCNG(yy_text);
4038-#line 464 "Zend/zend_ini_scanner.l"
4039- { /* Get constant option value */
4040- RETURN_TOKEN(TC_CONSTANT, yytext, yyleng);
4041-}
4042-#line 3092 "Zend/zend_ini_scanner.c"
4043+ yyaccept = 4;
4044+ yych = *(YYMARKER = ++YYCURSOR);
4045+ if (yybm[0+yych] & 4) {
4046+ goto yy258;
4047+ }
4048+ if (yych <= ')') {
4049+ if (yych <= '\f') {
4050+ if (yych <= 0x00) goto yy250;
4051+ if (yych <= 0x08) goto yy257;
4052+ if (yych >= '\v') goto yy257;
4053+ } else {
4054+ if (yych <= 0x1F) {
4055+ if (yych >= 0x0E) goto yy257;
4056+ } else {
4057+ if (yych <= '"') goto yy250;
4058+ if (yych <= '%') goto yy257;
4059+ }
4060+ }
4061+ } else {
4062+ if (yych <= '=') {
4063+ if (yych == ';') goto yy250;
4064+ if (yych <= '<') goto yy257;
4065+ } else {
4066+ if (yych <= '|') {
4067+ if (yych <= '{') goto yy257;
4068+ } else {
4069+ if (yych != '~') goto yy257;
4070+ }
4071+ }
4072+ }
4073 yy250:
4074 YYDEBUG(250, *YYCURSOR);
4075- yyaccept = 4;
4076- yych = *(YYMARKER = ++YYCURSOR);
4077- if (yych <= '<') {
4078- if (yych <= '"') {
4079- if (yych <= '\n') {
4080- if (yych <= 0x00) goto yy249;
4081- if (yych <= 0x08) goto yy256;
4082- goto yy249;
4083- } else {
4084- if (yych == '\r') goto yy249;
4085- if (yych <= 0x1F) goto yy256;
4086- goto yy249;
4087- }
4088- } else {
4089- if (yych <= '/') {
4090- if (yych <= '%') goto yy256;
4091- if (yych <= ')') goto yy249;
4092- goto yy256;
4093- } else {
4094- if (yych <= '9') goto yy257;
4095- if (yych == ';') goto yy249;
4096- goto yy256;
4097- }
4098- }
4099- } else {
4100- if (yych <= '`') {
4101- if (yych <= 'A') {
4102- if (yych <= '=') goto yy249;
4103- if (yych <= '@') goto yy256;
4104- goto yy280;
4105- } else {
4106- if (yych <= 'Z') goto yy257;
4107- if (yych == '_') goto yy257;
4108- goto yy256;
4109- }
4110- } else {
4111- if (yych <= '{') {
4112- if (yych <= 'a') goto yy280;
4113- if (yych <= 'z') goto yy257;
4114- goto yy256;
4115- } else {
4116- if (yych == '}') goto yy256;
4117- if (yych <= '~') goto yy249;
4118- goto yy256;
4119- }
4120- }
4121- }
4122+ yyleng = YYCURSOR - SCNG(yy_text);
4123+#line 464 "Zend/zend_ini_scanner.l"
4124+ { /* Get constant option value */
4125+ RETURN_TOKEN(TC_CONSTANT, yytext, yyleng);
4126+}
4127+#line 3100 "Zend/zend_ini_scanner.c"
4128 yy251:
4129 YYDEBUG(251, *YYCURSOR);
4130 yyaccept = 4;
4131 yych = *(YYMARKER = ++YYCURSOR);
4132- if (yych <= 'N') {
4133- if (yych <= '%') {
4134- if (yych <= '\f') {
4135- if (yych <= 0x00) goto yy249;
4136- if (yych <= 0x08) goto yy256;
4137- if (yych <= '\n') goto yy249;
4138- goto yy256;
4139+ if (yych <= '<') {
4140+ if (yych <= '"') {
4141+ if (yych <= '\n') {
4142+ if (yych <= 0x00) goto yy250;
4143+ if (yych <= 0x08) goto yy257;
4144+ goto yy250;
4145 } else {
4146- if (yych <= '\r') goto yy249;
4147- if (yych <= 0x1F) goto yy256;
4148- if (yych <= '"') goto yy249;
4149- goto yy256;
4150+ if (yych == '\r') goto yy250;
4151+ if (yych <= 0x1F) goto yy257;
4152+ goto yy250;
4153 }
4154 } else {
4155- if (yych <= ':') {
4156- if (yych <= ')') goto yy249;
4157- if (yych <= '/') goto yy256;
4158- if (yych <= '9') goto yy257;
4159- goto yy256;
4160+ if (yych <= '/') {
4161+ if (yych <= '%') goto yy257;
4162+ if (yych <= ')') goto yy250;
4163+ goto yy257;
4164 } else {
4165- if (yych <= '<') {
4166- if (yych <= ';') goto yy249;
4167- goto yy256;
4168- } else {
4169- if (yych <= '=') goto yy249;
4170- if (yych <= '@') goto yy256;
4171- goto yy257;
4172- }
4173+ if (yych <= '9') goto yy258;
4174+ if (yych == ';') goto yy250;
4175+ goto yy257;
4176 }
4177 }
4178 } else {
4179- if (yych <= 'n') {
4180- if (yych <= 'Z') {
4181- if (yych <= 'O') goto yy276;
4182- if (yych == 'U') goto yy277;
4183- goto yy257;
4184+ if (yych <= '`') {
4185+ if (yych <= 'A') {
4186+ if (yych <= '=') goto yy250;
4187+ if (yych <= '@') goto yy257;
4188+ goto yy281;
4189 } else {
4190- if (yych == '_') goto yy257;
4191- if (yych <= '`') goto yy256;
4192+ if (yych <= 'Z') goto yy258;
4193+ if (yych == '_') goto yy258;
4194 goto yy257;
4195 }
4196 } else {
4197- if (yych <= 'z') {
4198- if (yych <= 'o') goto yy276;
4199- if (yych == 'u') goto yy277;
4200+ if (yych <= '{') {
4201+ if (yych <= 'a') goto yy281;
4202+ if (yych <= 'z') goto yy258;
4203 goto yy257;
4204 } else {
4205- if (yych <= '|') {
4206- if (yych <= '{') goto yy256;
4207- goto yy249;
4208- } else {
4209- if (yych == '~') goto yy249;
4210- goto yy256;
4211- }
4212+ if (yych == '}') goto yy257;
4213+ if (yych <= '~') goto yy250;
4214+ goto yy257;
4215 }
4216 }
4217 }
4218@@ -3203,113 +3150,124 @@
4219 YYDEBUG(252, *YYCURSOR);
4220 yyaccept = 4;
4221 yych = *(YYMARKER = ++YYCURSOR);
4222+ if (yych <= 'N') {
4223+ if (yych <= '%') {
4224+ if (yych <= '\f') {
4225+ if (yych <= 0x00) goto yy250;
4226+ if (yych <= 0x08) goto yy257;
4227+ if (yych <= '\n') goto yy250;
4228+ goto yy257;
4229+ } else {
4230+ if (yych <= '\r') goto yy250;
4231+ if (yych <= 0x1F) goto yy257;
4232+ if (yych <= '"') goto yy250;
4233+ goto yy257;
4234+ }
4235+ } else {
4236+ if (yych <= ':') {
4237+ if (yych <= ')') goto yy250;
4238+ if (yych <= '/') goto yy257;
4239+ if (yych <= '9') goto yy258;
4240+ goto yy257;
4241+ } else {
4242+ if (yych <= '<') {
4243+ if (yych <= ';') goto yy250;
4244+ goto yy257;
4245+ } else {
4246+ if (yych <= '=') goto yy250;
4247+ if (yych <= '@') goto yy257;
4248+ goto yy258;
4249+ }
4250+ }
4251+ }
4252+ } else {
4253+ if (yych <= 'n') {
4254+ if (yych <= 'Z') {
4255+ if (yych <= 'O') goto yy277;
4256+ if (yych == 'U') goto yy278;
4257+ goto yy258;
4258+ } else {
4259+ if (yych == '_') goto yy258;
4260+ if (yych <= '`') goto yy257;
4261+ goto yy258;
4262+ }
4263+ } else {
4264+ if (yych <= 'z') {
4265+ if (yych <= 'o') goto yy277;
4266+ if (yych == 'u') goto yy278;
4267+ goto yy258;
4268+ } else {
4269+ if (yych <= '|') {
4270+ if (yych <= '{') goto yy257;
4271+ goto yy250;
4272+ } else {
4273+ if (yych == '~') goto yy250;
4274+ goto yy257;
4275+ }
4276+ }
4277+ }
4278+ }
4279+yy253:
4280+ YYDEBUG(253, *YYCURSOR);
4281+ yyaccept = 4;
4282+ yych = *(YYMARKER = ++YYCURSOR);
4283 if (yych <= 'E') {
4284 if (yych <= '%') {
4285 if (yych <= '\f') {
4286- if (yych <= 0x00) goto yy249;
4287- if (yych <= 0x08) goto yy256;
4288- if (yych <= '\n') goto yy249;
4289- goto yy256;
4290+ if (yych <= 0x00) goto yy250;
4291+ if (yych <= 0x08) goto yy257;
4292+ if (yych <= '\n') goto yy250;
4293+ goto yy257;
4294 } else {
4295- if (yych <= '\r') goto yy249;
4296- if (yych <= 0x1F) goto yy256;
4297- if (yych <= '"') goto yy249;
4298- goto yy256;
4299+ if (yych <= '\r') goto yy250;
4300+ if (yych <= 0x1F) goto yy257;
4301+ if (yych <= '"') goto yy250;
4302+ goto yy257;
4303 }
4304 } else {
4305 if (yych <= ':') {
4306- if (yych <= ')') goto yy249;
4307- if (yych <= '/') goto yy256;
4308- if (yych <= '9') goto yy257;
4309- goto yy256;
4310+ if (yych <= ')') goto yy250;
4311+ if (yych <= '/') goto yy257;
4312+ if (yych <= '9') goto yy258;
4313+ goto yy257;
4314 } else {
4315 if (yych <= '<') {
4316- if (yych <= ';') goto yy249;
4317- goto yy256;
4318+ if (yych <= ';') goto yy250;
4319+ goto yy257;
4320 } else {
4321- if (yych <= '=') goto yy249;
4322- if (yych <= '@') goto yy256;
4323- goto yy257;
4324+ if (yych <= '=') goto yy250;
4325+ if (yych <= '@') goto yy257;
4326+ goto yy258;
4327 }
4328 }
4329 }
4330 } else {
4331 if (yych <= 'e') {
4332 if (yych <= 'Z') {
4333- if (yych <= 'F') goto yy271;
4334- if (yych == 'N') goto yy265;
4335- goto yy257;
4336+ if (yych <= 'F') goto yy272;
4337+ if (yych == 'N') goto yy266;
4338+ goto yy258;
4339 } else {
4340- if (yych == '_') goto yy257;
4341- if (yych <= '`') goto yy256;
4342- goto yy257;
4343+ if (yych == '_') goto yy258;
4344+ if (yych <= '`') goto yy257;
4345+ goto yy258;
4346 }
4347 } else {
4348 if (yych <= 'z') {
4349- if (yych <= 'f') goto yy271;
4350- if (yych == 'n') goto yy265;
4351- goto yy257;
4352+ if (yych <= 'f') goto yy272;
4353+ if (yych == 'n') goto yy266;
4354+ goto yy258;
4355 } else {
4356 if (yych <= '|') {
4357- if (yych <= '{') goto yy256;
4358- goto yy249;
4359+ if (yych <= '{') goto yy257;
4360+ goto yy250;
4361 } else {
4362- if (yych == '~') goto yy249;
4363- goto yy256;
4364+ if (yych == '~') goto yy250;
4365+ goto yy257;
4366 }
4367 }
4368 }
4369 }
4370-yy253:
4371- YYDEBUG(253, *YYCURSOR);
4372- yyaccept = 4;
4373- yych = *(YYMARKER = ++YYCURSOR);
4374- if (yych <= '=') {
4375- if (yych <= '"') {
4376- if (yych <= '\n') {
4377- if (yych <= 0x00) goto yy249;
4378- if (yych <= 0x08) goto yy256;
4379- goto yy249;
4380- } else {
4381- if (yych == '\r') goto yy249;
4382- if (yych <= 0x1F) goto yy256;
4383- goto yy249;
4384- }
4385- } else {
4386- if (yych <= '9') {
4387- if (yych <= '%') goto yy256;
4388- if (yych <= ')') goto yy249;
4389- if (yych <= '/') goto yy256;
4390- goto yy257;
4391- } else {
4392- if (yych == ';') goto yy249;
4393- if (yych <= '<') goto yy256;
4394- goto yy249;
4395- }
4396- }
4397- } else {
4398- if (yych <= '`') {
4399- if (yych <= 'R') {
4400- if (yych <= '@') goto yy256;
4401- if (yych <= 'Q') goto yy257;
4402- goto yy269;
4403- } else {
4404- if (yych <= 'Z') goto yy257;
4405- if (yych == '_') goto yy257;
4406- goto yy256;
4407- }
4408- } else {
4409- if (yych <= '{') {
4410- if (yych == 'r') goto yy269;
4411- if (yych <= 'z') goto yy257;
4412- goto yy256;
4413- } else {
4414- if (yych == '}') goto yy256;
4415- if (yych <= '~') goto yy249;
4416- goto yy256;
4417- }
4418- }
4419- }
4420 yy254:
4421 YYDEBUG(254, *YYCURSOR);
4422 yyaccept = 4;
4423@@ -3317,333 +3275,334 @@
4424 if (yych <= '=') {
4425 if (yych <= '"') {
4426 if (yych <= '\n') {
4427- if (yych <= 0x00) goto yy249;
4428- if (yych <= 0x08) goto yy256;
4429- goto yy249;
4430+ if (yych <= 0x00) goto yy250;
4431+ if (yych <= 0x08) goto yy257;
4432+ goto yy250;
4433 } else {
4434- if (yych == '\r') goto yy249;
4435- if (yych <= 0x1F) goto yy256;
4436- goto yy249;
4437+ if (yych == '\r') goto yy250;
4438+ if (yych <= 0x1F) goto yy257;
4439+ goto yy250;
4440 }
4441 } else {
4442 if (yych <= '9') {
4443- if (yych <= '%') goto yy256;
4444- if (yych <= ')') goto yy249;
4445- if (yych <= '/') goto yy256;
4446- goto yy257;
4447+ if (yych <= '%') goto yy257;
4448+ if (yych <= ')') goto yy250;
4449+ if (yych <= '/') goto yy257;
4450+ goto yy258;
4451 } else {
4452- if (yych == ';') goto yy249;
4453- if (yych <= '<') goto yy256;
4454- goto yy249;
4455+ if (yych == ';') goto yy250;
4456+ if (yych <= '<') goto yy257;
4457+ goto yy250;
4458 }
4459 }
4460 } else {
4461 if (yych <= '`') {
4462- if (yych <= 'E') {
4463- if (yych <= '@') goto yy256;
4464- if (yych <= 'D') goto yy257;
4465- goto yy259;
4466+ if (yych <= 'R') {
4467+ if (yych <= '@') goto yy257;
4468+ if (yych <= 'Q') goto yy258;
4469+ goto yy270;
4470 } else {
4471- if (yych <= 'Z') goto yy257;
4472- if (yych == '_') goto yy257;
4473- goto yy256;
4474+ if (yych <= 'Z') goto yy258;
4475+ if (yych == '_') goto yy258;
4476+ goto yy257;
4477 }
4478 } else {
4479 if (yych <= '{') {
4480- if (yych == 'e') goto yy259;
4481- if (yych <= 'z') goto yy257;
4482- goto yy256;
4483+ if (yych == 'r') goto yy270;
4484+ if (yych <= 'z') goto yy258;
4485+ goto yy257;
4486 } else {
4487- if (yych == '}') goto yy256;
4488- if (yych <= '~') goto yy249;
4489- goto yy256;
4490+ if (yych == '}') goto yy257;
4491+ if (yych <= '~') goto yy250;
4492+ goto yy257;
4493 }
4494 }
4495 }
4496 yy255:
4497 YYDEBUG(255, *YYCURSOR);
4498- yyaccept = 0;
4499- YYMARKER = ++YYCURSOR;
4500- YYFILL(1);
4501- yych = *YYCURSOR;
4502+ yyaccept = 4;
4503+ yych = *(YYMARKER = ++YYCURSOR);
4504+ if (yych <= '=') {
4505+ if (yych <= '"') {
4506+ if (yych <= '\n') {
4507+ if (yych <= 0x00) goto yy250;
4508+ if (yych <= 0x08) goto yy257;
4509+ goto yy250;
4510+ } else {
4511+ if (yych == '\r') goto yy250;
4512+ if (yych <= 0x1F) goto yy257;
4513+ goto yy250;
4514+ }
4515+ } else {
4516+ if (yych <= '9') {
4517+ if (yych <= '%') goto yy257;
4518+ if (yych <= ')') goto yy250;
4519+ if (yych <= '/') goto yy257;
4520+ goto yy258;
4521+ } else {
4522+ if (yych == ';') goto yy250;
4523+ if (yych <= '<') goto yy257;
4524+ goto yy250;
4525+ }
4526+ }
4527+ } else {
4528+ if (yych <= '`') {
4529+ if (yych <= 'E') {
4530+ if (yych <= '@') goto yy257;
4531+ if (yych <= 'D') goto yy258;
4532+ goto yy260;
4533+ } else {
4534+ if (yych <= 'Z') goto yy258;
4535+ if (yych == '_') goto yy258;
4536+ goto yy257;
4537+ }
4538+ } else {
4539+ if (yych <= '{') {
4540+ if (yych == 'e') goto yy260;
4541+ if (yych <= 'z') goto yy258;
4542+ goto yy257;
4543+ } else {
4544+ if (yych == '}') goto yy257;
4545+ if (yych <= '~') goto yy250;
4546+ goto yy257;
4547+ }
4548+ }
4549+ }
4550 yy256:
4551 YYDEBUG(256, *YYCURSOR);
4552- if (yybm[0+yych] & 2) {
4553- goto yy255;
4554- }
4555- if (yych == '$') goto yy260;
4556- goto yy229;
4557+ yyaccept = 0;
4558+ YYMARKER = ++YYCURSOR;
4559+ YYFILL(1);
4560+ yych = *YYCURSOR;
4561 yy257:
4562 YYDEBUG(257, *YYCURSOR);
4563- yyaccept = 4;
4564- YYMARKER = ++YYCURSOR;
4565- YYFILL(1);
4566- yych = *YYCURSOR;
4567+ if (yybm[0+yych] & 2) {
4568+ goto yy256;
4569+ }
4570+ if (yych == '$') goto yy261;
4571+ goto yy230;
4572+yy258:
4573 YYDEBUG(258, *YYCURSOR);
4574- if (yybm[0+yych] & 4) {
4575- goto yy257;
4576- }
4577- if (yych <= '%') {
4578- if (yych <= '\r') {
4579- if (yych <= 0x08) {
4580- if (yych <= 0x00) goto yy249;
4581- goto yy255;
4582- } else {
4583- if (yych <= '\n') goto yy249;
4584- if (yych <= '\f') goto yy255;
4585- goto yy249;
4586- }
4587- } else {
4588- if (yych <= '"') {
4589- if (yych <= 0x1F) goto yy255;
4590- goto yy249;
4591- } else {
4592- if (yych == '$') goto yy260;
4593- goto yy255;
4594- }
4595- }
4596- } else {
4597- if (yych <= '=') {
4598- if (yych <= ':') {
4599- if (yych <= ')') goto yy249;
4600- goto yy255;
4601- } else {
4602- if (yych == '<') goto yy255;
4603- goto yy249;
4604- }
4605- } else {
4606- if (yych <= '|') {
4607- if (yych <= '{') goto yy255;
4608- goto yy249;
4609- } else {
4610- if (yych == '~') goto yy249;
4611- goto yy255;
4612- }
4613- }
4614- }
4615-yy259:
4616+ yyaccept = 4;
4617+ YYMARKER = ++YYCURSOR;
4618+ YYFILL(1);
4619+ yych = *YYCURSOR;
4620 YYDEBUG(259, *YYCURSOR);
4621- yyaccept = 4;
4622- yych = *(YYMARKER = ++YYCURSOR);
4623- if (yych <= '=') {
4624- if (yych <= '"') {
4625- if (yych <= '\n') {
4626- if (yych <= 0x00) goto yy249;
4627- if (yych <= 0x08) goto yy256;
4628- goto yy249;
4629+ if (yybm[0+yych] & 4) {
4630+ goto yy258;
4631+ }
4632+ if (yych <= '%') {
4633+ if (yych <= '\r') {
4634+ if (yych <= 0x08) {
4635+ if (yych <= 0x00) goto yy250;
4636+ goto yy256;
4637 } else {
4638- if (yych == '\r') goto yy249;
4639+ if (yych <= '\n') goto yy250;
4640+ if (yych <= '\f') goto yy256;
4641+ goto yy250;
4642+ }
4643+ } else {
4644+ if (yych <= '"') {
4645 if (yych <= 0x1F) goto yy256;
4646- goto yy249;
4647- }
4648- } else {
4649- if (yych <= '9') {
4650- if (yych <= '%') goto yy256;
4651- if (yych <= ')') goto yy249;
4652- if (yych <= '/') goto yy256;
4653- goto yy257;
4654+ goto yy250;
4655 } else {
4656- if (yych == ';') goto yy249;
4657- if (yych <= '<') goto yy256;
4658- goto yy249;
4659+ if (yych == '$') goto yy261;
4660+ goto yy256;
4661 }
4662 }
4663 } else {
4664- if (yych <= '`') {
4665- if (yych <= 'S') {
4666- if (yych <= '@') goto yy256;
4667- if (yych <= 'R') goto yy257;
4668- goto yy265;
4669+ if (yych <= '=') {
4670+ if (yych <= ':') {
4671+ if (yych <= ')') goto yy250;
4672+ goto yy256;
4673 } else {
4674- if (yych <= 'Z') goto yy257;
4675- if (yych == '_') goto yy257;
4676- goto yy256;
4677+ if (yych == '<') goto yy256;
4678+ goto yy250;
4679 }
4680 } else {
4681- if (yych <= '{') {
4682- if (yych == 's') goto yy265;
4683- if (yych <= 'z') goto yy257;
4684- goto yy256;
4685+ if (yych <= '|') {
4686+ if (yych <= '{') goto yy256;
4687+ goto yy250;
4688 } else {
4689- if (yych == '}') goto yy256;
4690- if (yych <= '~') goto yy249;
4691+ if (yych == '~') goto yy250;
4692 goto yy256;
4693 }
4694 }
4695 }
4696 yy260:
4697 YYDEBUG(260, *YYCURSOR);
4698- ++YYCURSOR;
4699- YYFILL(1);
4700- yych = *YYCURSOR;
4701- if (yych <= '\\') {
4702- if (yych <= 0x00) goto yy261;
4703- if (yych <= '[') goto yy255;
4704- goto yy262;
4705+ yyaccept = 4;
4706+ yych = *(YYMARKER = ++YYCURSOR);
4707+ if (yych <= '=') {
4708+ if (yych <= '"') {
4709+ if (yych <= '\n') {
4710+ if (yych <= 0x00) goto yy250;
4711+ if (yych <= 0x08) goto yy257;
4712+ goto yy250;
4713+ } else {
4714+ if (yych == '\r') goto yy250;
4715+ if (yych <= 0x1F) goto yy257;
4716+ goto yy250;
4717+ }
4718+ } else {
4719+ if (yych <= '9') {
4720+ if (yych <= '%') goto yy257;
4721+ if (yych <= ')') goto yy250;
4722+ if (yych <= '/') goto yy257;
4723+ goto yy258;
4724+ } else {
4725+ if (yych == ';') goto yy250;
4726+ if (yych <= '<') goto yy257;
4727+ goto yy250;
4728+ }
4729+ }
4730 } else {
4731- if (yych != '{') goto yy255;
4732+ if (yych <= '`') {
4733+ if (yych <= 'S') {
4734+ if (yych <= '@') goto yy257;
4735+ if (yych <= 'R') goto yy258;
4736+ goto yy266;
4737+ } else {
4738+ if (yych <= 'Z') goto yy258;
4739+ if (yych == '_') goto yy258;
4740+ goto yy257;
4741+ }
4742+ } else {
4743+ if (yych <= '{') {
4744+ if (yych == 's') goto yy266;
4745+ if (yych <= 'z') goto yy258;
4746+ goto yy257;
4747+ } else {
4748+ if (yych == '}') goto yy257;
4749+ if (yych <= '~') goto yy250;
4750+ goto yy257;
4751+ }
4752+ }
4753 }
4754 yy261:
4755 YYDEBUG(261, *YYCURSOR);
4756+ ++YYCURSOR;
4757+ YYFILL(1);
4758+ yych = *YYCURSOR;
4759+ if (yych <= '\\') {
4760+ if (yych <= 0x00) goto yy262;
4761+ if (yych <= '[') goto yy256;
4762+ goto yy263;
4763+ } else {
4764+ if (yych != '{') goto yy256;
4765+ }
4766+yy262:
4767+ YYDEBUG(262, *YYCURSOR);
4768 YYCURSOR = YYMARKER;
4769 if (yyaccept <= 3) {
4770 if (yyaccept <= 1) {
4771 if (yyaccept <= 0) {
4772- goto yy229;
4773+ goto yy230;
4774 } else {
4775- goto yy231;
4776+ goto yy232;
4777 }
4778 } else {
4779 if (yyaccept <= 2) {
4780- goto yy227;
4781+ goto yy228;
4782 } else {
4783- goto yy244;
4784+ goto yy245;
4785 }
4786 }
4787 } else {
4788 if (yyaccept <= 5) {
4789 if (yyaccept <= 4) {
4790- goto yy249;
4791+ goto yy250;
4792 } else {
4793- goto yy266;
4794+ goto yy267;
4795 }
4796 } else {
4797- goto yy273;
4798+ goto yy274;
4799 }
4800 }
4801-yy262:
4802- YYDEBUG(262, *YYCURSOR);
4803- ++YYCURSOR;
4804- YYFILL(1);
4805- yych = *YYCURSOR;
4806- if (yybm[0+yych] & 8) {
4807- goto yy263;
4808- }
4809- goto yy255;
4810 yy263:
4811 YYDEBUG(263, *YYCURSOR);
4812 ++YYCURSOR;
4813 YYFILL(1);
4814 yych = *YYCURSOR;
4815+ if (yybm[0+yych] & 8) {
4816+ goto yy264;
4817+ }
4818+ goto yy256;
4819+yy264:
4820 YYDEBUG(264, *YYCURSOR);
4821- if (yybm[0+yych] & 8) {
4822- goto yy263;
4823- }
4824- if (yych <= 0x00) goto yy229;
4825- if (yych == '\\') goto yy262;
4826- goto yy255;
4827-yy265:
4828+ ++YYCURSOR;
4829+ YYFILL(1);
4830+ yych = *YYCURSOR;
4831 YYDEBUG(265, *YYCURSOR);
4832+ if (yybm[0+yych] & 8) {
4833+ goto yy264;
4834+ }
4835+ if (yych <= 0x00) goto yy230;
4836+ if (yych == '\\') goto yy263;
4837+ goto yy256;
4838+yy266:
4839+ YYDEBUG(266, *YYCURSOR);
4840 yyaccept = 5;
4841 yych = *(YYMARKER = ++YYCURSOR);
4842 if (yybm[0+yych] & 16) {
4843- goto yy267;
4844+ goto yy268;
4845 }
4846 if (yych <= ';') {
4847 if (yych <= ' ') {
4848 if (yych <= '\n') {
4849- if (yych <= 0x00) goto yy266;
4850- if (yych <= '\t') goto yy256;
4851+ if (yych <= 0x00) goto yy267;
4852+ if (yych <= '\t') goto yy257;
4853 } else {
4854- if (yych != '\r') goto yy256;
4855+ if (yych != '\r') goto yy257;
4856 }
4857 } else {
4858 if (yych <= ')') {
4859- if (yych <= '"') goto yy266;
4860- if (yych <= '%') goto yy256;
4861+ if (yych <= '"') goto yy267;
4862+ if (yych <= '%') goto yy257;
4863 } else {
4864- if (yych <= '/') goto yy256;
4865- if (yych <= '9') goto yy257;
4866- if (yych <= ':') goto yy256;
4867+ if (yych <= '/') goto yy257;
4868+ if (yych <= '9') goto yy258;
4869+ if (yych <= ':') goto yy257;
4870 }
4871 }
4872 } else {
4873 if (yych <= '_') {
4874 if (yych <= '@') {
4875- if (yych != '=') goto yy256;
4876+ if (yych != '=') goto yy257;
4877 } else {
4878- if (yych <= 'Z') goto yy257;
4879- if (yych <= '^') goto yy256;
4880- goto yy257;
4881+ if (yych <= 'Z') goto yy258;
4882+ if (yych <= '^') goto yy257;
4883+ goto yy258;
4884 }
4885 } else {
4886 if (yych <= '{') {
4887- if (yych <= '`') goto yy256;
4888- if (yych <= 'z') goto yy257;
4889- goto yy256;
4890+ if (yych <= '`') goto yy257;
4891+ if (yych <= 'z') goto yy258;
4892+ goto yy257;
4893 } else {
4894- if (yych == '}') goto yy256;
4895- if (yych >= 0x7F) goto yy256;
4896+ if (yych == '}') goto yy257;
4897+ if (yych >= 0x7F) goto yy257;
4898 }
4899 }
4900 }
4901-yy266:
4902- YYDEBUG(266, *YYCURSOR);
4903- yyleng = YYCURSOR - SCNG(yy_text);
4904-#line 418 "Zend/zend_ini_scanner.l"
4905- { /* TRUE value (when used outside option value/offset this causes parse error!) */
4906- RETURN_TOKEN(BOOL_TRUE, "1", 1);
4907-}
4908-#line 3588 "Zend/zend_ini_scanner.c"
4909 yy267:
4910 YYDEBUG(267, *YYCURSOR);
4911- ++YYCURSOR;
4912- YYFILL(1);
4913- yych = *YYCURSOR;
4914+ yyleng = YYCURSOR - SCNG(yy_text);
4915+#line 418 "Zend/zend_ini_scanner.l"
4916+ { /* TRUE value (when used outside option value/offset this causes parse error!) */
4917+ RETURN_TOKEN(BOOL_TRUE, "1", 1);
4918+}
4919+#line 3596 "Zend/zend_ini_scanner.c"
4920+yy268:
4921 YYDEBUG(268, *YYCURSOR);
4922- if (yybm[0+yych] & 16) {
4923- goto yy267;
4924- }
4925- goto yy266;
4926-yy269:
4927+ ++YYCURSOR;
4928+ YYFILL(1);
4929+ yych = *YYCURSOR;
4930 YYDEBUG(269, *YYCURSOR);
4931- yyaccept = 4;
4932- yych = *(YYMARKER = ++YYCURSOR);
4933- if (yych <= '=') {
4934- if (yych <= '"') {
4935- if (yych <= '\n') {
4936- if (yych <= 0x00) goto yy249;
4937- if (yych <= 0x08) goto yy256;
4938- goto yy249;
4939- } else {
4940- if (yych == '\r') goto yy249;
4941- if (yych <= 0x1F) goto yy256;
4942- goto yy249;
4943- }
4944- } else {
4945- if (yych <= '9') {
4946- if (yych <= '%') goto yy256;
4947- if (yych <= ')') goto yy249;
4948- if (yych <= '/') goto yy256;
4949- goto yy257;
4950- } else {
4951- if (yych == ';') goto yy249;
4952- if (yych <= '<') goto yy256;
4953- goto yy249;
4954- }
4955- }
4956- } else {
4957- if (yych <= '`') {
4958- if (yych <= 'U') {
4959- if (yych <= '@') goto yy256;
4960- if (yych <= 'T') goto yy257;
4961- } else {
4962- if (yych <= 'Z') goto yy257;
4963- if (yych == '_') goto yy257;
4964- goto yy256;
4965- }
4966- } else {
4967- if (yych <= '{') {
4968- if (yych == 'u') goto yy270;
4969- if (yych <= 'z') goto yy257;
4970- goto yy256;
4971- } else {
4972- if (yych == '}') goto yy256;
4973- if (yych <= '~') goto yy249;
4974- goto yy256;
4975- }
4976- }
4977+ if (yybm[0+yych] & 16) {
4978+ goto yy268;
4979 }
4980+ goto yy267;
4981 yy270:
4982 YYDEBUG(270, *YYCURSOR);
4983 yyaccept = 4;
4984@@ -3651,46 +3610,45 @@
4985 if (yych <= '=') {
4986 if (yych <= '"') {
4987 if (yych <= '\n') {
4988- if (yych <= 0x00) goto yy249;
4989- if (yych <= 0x08) goto yy256;
4990- goto yy249;
4991+ if (yych <= 0x00) goto yy250;
4992+ if (yych <= 0x08) goto yy257;
4993+ goto yy250;
4994 } else {
4995- if (yych == '\r') goto yy249;
4996- if (yych <= 0x1F) goto yy256;
4997- goto yy249;
4998+ if (yych == '\r') goto yy250;
4999+ if (yych <= 0x1F) goto yy257;
5000+ goto yy250;
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches

to all changes: