diff options
33 files changed, 966 insertions, 867 deletions
diff --git a/Makefile.gcov b/Makefile.gcov index e499c833b..946f539d1 100644 --- a/Makefile.gcov +++ b/Makefile.gcov @@ -12,7 +12,8 @@ php_lcov.info: lcov-test @rm -rf lcov_data/ @$(mkinstalldirs) lcov_data/ @echo - -@find . -name \*.gcda -o -name \*.gcno -o -name \*.da -o -name \*.h | sed -e 's/^\.\///' | sed -e 's/\.gcda//g' -e 's/\.gcno//g' -e 's/\.da//g' | uniq | while read x; do \ + -@files=`find . -name \*.gcda -o -name \*.gcno -o -name \*.da -o -name \*.h | sed -e 's/^\.\///' | sed -e 's/\.gcda//g' -e 's/\.gcno//g' -e 's/\.da//g' | uniq` ;\ + for x in $$files; do \ echo -n . ;\ y=`echo $$x | sed -e 's!\.libs/!!'`; \ dir=lcov_data/`dirname $$x`; \ @@ -1,437 +1,7 @@ PHP NEWS ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -15 Feb 2012, PHP 5.4.0 RC 8 -- Core: - . Added ability to reset user opcode handlers (Yoram). - . Improved max_input_vars directive to check nested variables (Dmitry). - . Made ZEND_SIGNALS configurable via --enable-zend-signals, off by - default (Stas). - . Fixed bug #60965 (Buffer overflow on htmlspecialchars/entities with - $double=false). (Gustavo) - -- CGI/FastCGI SAPI - . Fixed reinitialization of SAPI callbacks after php_module_startup(). - (Dmitry) - -02 Feb 2012, PHP 5.4.0 RC 7 -- Core: - . Fixed bug #60895 (Possible invalid handler usage in windows random - functions). (Pierre) - . Fixed bug #51860 (Include fails with toplevel symlink to /). (Dmitry) - . Fixed (disabled) inline-caching for ZEND_OVERLOADED_FUNCTION methods. - (Dmitry) - -- OpenSSL: - . Fix possible attack in SSL sockets with SSL 3.0 / TLS 1.0. - CVE-2011-3389. (Scott) - -- Session: - . Fixed bug #60860 (session.save_handler=user without defined function core - dumps). (Felipe) - -- SOAP: - . Fixed basic HTTP authentication for WSDL sub requests. (Dmitry) - -19 Jan 2012, PHP 5.4.0 RC6 - -- Core: - . Restoring $_SERVER['REQUEST_TIME'] as a long and introducing - $_SERVER['REQUEST_TIME_FLOAT'] to include microsecond precision. (Patrick) - . Fixed bug #60809 (TRAITS - PHPDoc Comment Style Bug). (Dmitry) - . Fixed bug #60768 (Output buffer not discarded) (Mike) - . Fixed bug #60825 (Segfault when running symfony 2 tests). - (Dmitry, Laruence) - -- Hash - . Fixed bug #60221 (Tiger hash output byte order) (Mike) - . Removed Salsa10/Salsa20, which are actually stream ciphers (Mike) - -- Pdo Firebird: - . Fixed bug #47415 (segfaults when passing lowercased column name to - bindColumn). (Mariuz) - . Fixed bug #53280 (segfaults if query column count less than param count). - (Mariuz) - -- SNMP: - . Fixed bug #60585 (php build fails with USE flag snmp when IPv6 support - is disabled). (Boris Lytochkin) - . Fixed bug #60749 (SNMP module should not strip non-standard SNMP port - from hostname). (Boris Lytochkin) - -07 Jan 2012, PHP 5.4.0 RC5 -- Core: - . Fixed bug #60613 (Segmentation fault with $cls->{expr}() syntax). (Dmitry) - . Fixed bug #60611 (Segmentation fault with Cls::{expr}() syntax). (Laruence) - . Fixed bug #55871 (Interruption in substr_replace()). (Stas) - . Fixed bug #60627 (httpd.worker segfault on startup with php_value). - (Laruence) - -- SAPI: - . Fixed bug #55500 (Corrupted $_FILES indices lead to security concern). - (Stas) - . Fixed bug #54374 (Insufficient validating of upload name leading to - corrupted $_FILES indices). (Stas, lekensteyn at gmail dot com) - -- CLI SAPI: - . Fixed bug #60591 (Memory leak when access a non-exists file). (Laruence) - -- Intl: - . Fixed build on Fedora 15 / Ubuntu 11. (Hannes) - -- PHP-FPM SAPI: - . Fixed bug #60629 (memory corruption when web server closed the fcgi fd). - (fat) - . Fixed bug #60659 (FPM does not clear auth_user on request accept). - (bonbons at linux-vserver dot org) - -- Improved Session extension: - . Fixed bug #60640 (invalid return values). (Arpad) - . Implement FR #60551 (session_set_save_handler should support a core's - session handler interface). (Arpad) - -22 Dec 2011, PHP 5.4.0 RC4 -- Core: - . Added max_input_vars directive to prevent attacks based on hash collisions - (Dmitry). - . Fixed bug #60536 (Traits Segfault). (Laruence) - . Fixed bug #60362 (non-existent sub-sub keys should not have values). - (Laruence, alan_k, Stas) - . Fixed bug #60558 (Invalid read and writes). (Laruence) - -- CLI SAPI: - . Fixed bug #60477 (Segfault after two multipart/form-data POST requests, - one 200 RQ and one 404). (Laruence) - . Fixed bug #60523 (PHP Errors are not reported in browsers using built-in - SAPI). (Laruence, Derick) - -- OpenSSL: - . Fix segfault with older versions of OpenSSL. (Scott) - -- Pdo Firebird: - . Fixed bug #48877 ("bindValue" and "bindParam" do not work for PDO Firebird). - (Mariuz) - -08 Dec 2011, PHP 5.4.0 RC3 -- Core: - . Fixed bug #60444 (Segmentation fault with include & class extending). - (Laruence, Dmitry). - . Fixed bug #60350 (No string escape code for ESC (ascii 27), normally \e). - (php at mickweiss dot com) - . Fixed bug #60240 (invalid read/writes when unserializing specially crafted - strings). (Mike) - . Implement FR #54514 (Get php binary path during script execution). - (Laruence) - -- CLI SAPI: - . Implement FR #60390 (Missing $_SERVER['SERVER_PORT']). (Pierre) - -- cURL: - . Fixed bug #60439 (curl_copy_handle segfault when used with - CURLOPT_PROGRESSFUNCTION). (Pierrick) - -- Intl: - . Added support for UTS #46. (Gustavo) - -- OpenSSL: - . On error in openssl_random_pseudo_bytes() make sure we set strong result - to false. (Scott) - -- Reflection: - . Fixed bug #60367 (Reflection and Late Static Binding). (Laruence) - -24 Nov 2011, PHP 5.4.0 RC2 - -- Core: - . Fixed bug #60227 (header() cannot detect the multi-line header with - CR(0x0D)). (rui) - . Fixed bug #60099 (__halt_compiler() works in braced namespaces). (Felipe) - . Fixed bug #55874 (GCC does not provide __sync_fetch_and_add on some archs). - (klightspeed at netspace dot net dot au) - . Fixed bug #52624 (tempnam() by-pass open_basedir with nonexistent - directory). (Felipe) - . Fixed bug #55748 (multiple NULL Pointer Dereference with zend_strndup()) - (CVE-2011-4153). (Stas) - . Fixed invalid free in call_user_method() function. (Felipe) - -- Zend Engine: - . Fixed bug #43200 (Interface implementation / inheritence not possible in - abstract classes). (Felipe) - -- CLI SAPI: - . Fixed bug #60159 (Router returns false, but POST is not passed to requested - resource). (Laruence) - . Fixed bug #55759 (memory leak when using built-in server). (Laruence) - -- Improved PHP-FPM SAPI: - . Enhance error log when the primary script can't be open. FR #60199. (fat) - . Remove EXPERIMENTAL flag. (fat) - . Added .phar to default authorized extensions. (fat) - -- BCmath: - . Fixed bug #60377 (bcscale related crashes on 64bits platforms) (shm) - -- Fileinfo: - . Fixed possible memory leak in finfo_open(). (Felipe) - . Fixed memory leak when calling the Finfo constructor twice. (Felipe) - -- Intl: - . Fixed memory leak in several Intl locale functions. (Felipe) - -- Mbstring - . Fixed bug #60306 (Characters lost while converting from cp936 to utf8). - (Laruence) - . Fixed possible crash in mb_ereg_search_init() using empty pattern. (Felipe) - -- MS SQL: - . Fixed bug #60267 (Compile failure with freetds 0.91). (Felipe) - -- OpenSSL: - . Fixed bug #60279 (Fixed NULL pointer dereference in - stream_socket_enable_crypto, case when ssl_handle of session_stream is not - initialized.) (shm) - -- Oracle Database extension (OCI8): - . Fixed bug #59985 (show normal warning text for OCI_NO_DATA) - (Chris Jones) - -- Output: - . Fixed bug #60321 (ob_get_status(true) no longer returns an array when - buffer is empty). (Pierrick) - . Fixed bug #60282 (Segfault when using ob_gzhandler() with open buffers). - (Laruence) - -- Reflection: - . Fixed bug #60357 (__toString() method triggers E_NOTICE "Array to string - conversion"). (Laruence) - -- SOAP extension: - . Added new SoapClient option "keep_alive". FR #60329. (Pierrick) - -- Tidy: - . Fixed bug #54682 (Tidy::diagnose() NULL pointer dereference). - (Maksymilian Arciemowicz, Felipe) - -11 Nov 2011, PHP 5.4.0 RC1 -- General improvements: - . Changed silent conversion of array to string to produce a notice. (Patrick) - . Added class member access on instantiation (e.g. (new foo)->bar()) support. - (Felipe) - -- CLI SAPI: - . Fixed bug #60112 (If URI does not contain a file, index.php is not served). - (Laruence) - . Fixed bug #60115 (memory definitely lost in cli server). (Laruence) - . Fixed bug #60146 (Last 2 lines of page not being output). (Laruence) - . Fixed bug #60180 ($_SERVER["PHP_SELF"] incorrect). (Laruence) - . Fixed bug #60189 (php logo can not be displayed). (Laruence) - -- Core: - . Fixed bug #60120 (proc_open's streams may hang with stdin/out/err when - the data exceeds or is equal to 2048 bytes). (Pierre, Pascal Borreli) - . Fixed bug #60174 (Notice when array in method prototype error). - (Laruence) - . Fixed bug #60169 (Conjunction of ternary and list crashes PHP). - (Laruence) - . Fixed bug #55475 (is_a() triggers autoloader, new optional 3rd argument to - is_a and is_subclass_of). (alan_k) - -- Oracle Database extension (OCI8): - . Increased maximum Oracle error message buffer length for new 11.2.0.3 size - (Chris Jones) - . Improve internal initalization failure error messages (Chris Jones) - -- SPL extension - . Reverted changes that required constructor overrides to invoke the parent - constructor in several SPL classes and applied 5.3 fixes instead. - Related bugs: #54384, #55175 and #55300. - . Fixed bug #60201 (SplFileObject::setCsvControl does not expose third - argument via Reflection). (Peter) - -- Tokenizer extension - . Fixed bug #54089 (token_get_all with regards to __halt_compiler is - not binary safe). (Nikita Popov) - -- SAPI: - . Fixed bug #60205 (possible integer overflow in content_length). (Laruence) - -20 Oct 2011, PHP 5.4.0 beta2 -- General improvements: - . Improve the warning message of incompatible arguments. (Laruence) - . Improve ternary operator performance when returning arrays. (Arnaud, Dmitry) - -- Core: - . Fixed bug #55801 (Behavior of unserialize has changed). (Mike) - . Fixed bug #55749 (TOCTOU issue in getenv() on Windows builds). (Pierre) - . Fixed bug #55707 (undefined reference to `__sync_fetch_and_add_4' on Linux - parisc). (Felipe) - . Fixed bug #55705 (Omitting a callable typehinted argument causes a segfault). - (Felipe, Laruence) - . Fixed bug #55758 (Digest Authenticate missed in 5.4) . (Laruence) - . Fixed bug #55622 (memory corruption in parse_ini_string). (Pierre) - . Fixed bug #55825 (Missing initial value of static locals in trait methods). - (Laruence) - . Fixed bug #60038 (SIGALRM cause segfault in php_error_cb). (Laruence) - -- Openssl - . Revert r313616 (When we have a blocking SSL socket, respect the timeout - option, scottmac), breaks ssl support as described in bugs #55283 and #55848 - -- PDO DBlib driver: - . Fixed bug #60033 (Incorrectly merged PDO dblib patches break - uniqueidentifier column type). (warezthebeef at gmail dot com) - -- Sysvshm - . Fixed bug #55750 (memory copy issue in sysvshm extension). - (Ilia, jeffhuang9999 at gmail dot com) - -- Zlib: - . Fixed bug #55544 (ob_gzhandler always conflicts with - zlib.output_compression). (Mike) - -- SPL: - . FilesystemIterator, GlobIterator and (Recursive)DirectoryIterator now use - the default stream context. (Hannes) - . Fixed bug #55807 (Wrong value for splFileObject::SKIP_EMPTY). - (jgotti at modedemploi dot fr, Hannes) +01 Mar 2012, PHP 5.4.0 -- CLI SAPI: - . Fixed bug #55726 (Changing the working directory makes router script - inaccessible). (Laruence) - . Fixed bug #55747 (request headers missed in $_SERVER). (Laruence) - . Fixed bug #55755 (SegFault when outputting header WWW-Authenticate). (Laruence) - -- Litespeed SAPI: - . Fixed bug #55769 (Make Fails with "Missing Separator" error). (Adam) - -- Fileinfo: - . Fixed bug #60094 (C++ comment fails in c89). (Laruence) - -15 Sep 2011, PHP 5.4.0 Beta1 -- General improvements: - . Added callable typehint. (Hannes) - . Implemented closure rebinding as parameter to bindTo. (Gustavo Lopes) - . Turn on html_errors by default again in php.ini-production like it was in - PHP 5.3, but only generate docref links when the docref_root INI setting is - not empty. (Derick) - . Fixed bug #55378: Binary number literal returns float number though its - value is small enough. (Derick) - . Added support for SORT_NATURAL and SORT_FLAG_CASE in array - sort functions (sort, rsort, ksort, krsort, asort, arsort and - array_multisort). FR#55158 (Arpad) - . Disable windows CRT warning by default, can be enabled again using the ini - directive windows_show_crt_warnings. (Pierre) - . Removed support for putenv("TZ=..") for setting the timezone. (Derick) - . Removed the timezone guessing algorithm in case the timezone isn't set with - date.timezone or date_default_timezone_set(). Instead of a guessed - timezone, "UTC" is now used instead. (Derick) - -- Improved MySQL extensions: - . ext/mysql, mysqli and pdo_mysql now use mysqlnd by default. (Johannes) - -- Improved mbstring extension: - . Added Shift_JIS/UTF-8 Emoji (pictograms) support. (Rui) - . Added JIS X0213:2004 (Shift_JIS-2004, EUC-JP-2004, ISO-2022-JP-2004) - support. (Rui) - . Ill-formed UTF-8 check for security enhancements. (Rui) - . Added MacJapanese (Shift_JIS) and gb18030 encoding support. (Rui) - . Added encode/decode in hex format to mb_[en|de]code_numericentity(). (Rui) - . Added user JIS X0213:2004 (Shift_JIS-2004, EUC-JP-2004, ISO-2022-JP-2004) - support. (Rui) - . Added the user defined area for CP936 and CP950 (Rui). - -- Improved Reflection extension: - . Added ReflectionClass::newInstanceWithoutConstructor() to create a new - instance of a class without invoking its constructor. FR #55490. - (Sebastian) - -- Improved intl extension: - . Fixed bug #55562 (grapheme_substr() returns false on big length). (Stas) - -- Improved JSON extension: - . Added new json_encode() option JSON_UNESCAPED_UNICODE. FR #53946. - (Alexander, Gwynne) - -- Improved CLI SAPI: - . Added friendly log messages - FR #55109 (Arpad) - -- Improved readline extension: - . Fixed bug #54450 (Enable callback support when built against libedit). - (fedora at famillecollet dot com, Hannes) - -- Improved Session extension: - . Expose session status via new function, session_status (FR #52982) (Arpad) - . Added support for object-oriented session handlers. (Arpad) - -- Improved SPL extension: - . Immediately reject wrong usages of directories under Spl(Temp)FileObject - and friends. (Etienne, Pierre) - -- Improved XSL extension: - . XSL doesn't stop transformation anymore, if a PHP function can't be called - (Christian) - -04 Aug 2011, PHP 5.4.0 Alpha 3 -- Added features: - . Short array syntax, see UPGRADING guide for full details - (rsky0711 at gmail . com, sebastian.deutsch at 9elements . com, Pierre) - . Binary numbers format (0b001010). (Jonah dot Harris at gmail dot com) - . Support for Class::{expr}() syntax (Pierrick) - -- Removed features: - . Removed magic_quotes_gpc, magic_quotes_runtime and magic_quotes_sybase - ini options. get_magic_quotes_gpc, get_magic_quotes_runtime are kept - but always return false, set_magic_quotes_runtime raises an - E_CORE_ERROR. (Pierrick, Pierre) - -- Changed E_ALL to include E_STRICT. (Stas) - -- Improved core functions - . Fixed bug #55124 (recursive mkdir fails with current (dot) directory in path). - (Pierre) - -- Improved PHP-FPM SAPI: - . Added process.max to control the number of process FPM can fork. FR #55166. - (fat) - . Dropped restriction of not setting the same value multiple times, the last - one holds. (giovanni at giacobbi dot net, fat) - -- SPL extension: - . Added missing class_uses(..) as pointed out by #55266 (Stefan) - . Fixed bug #55287 (spl_classes() not includes CallbackFilter classes) - (sasezaki at gmail dot com, salathe) - - -14 Jul 2011, PHP 5.4.0 Alpha 2 -- General improvements: - . Zend Signal Handling. (Lucas Nealan,Arnaud Le Blanc,Brian Shire, Ilia) - -- Improved Zend Engine - . Improved parse error messages. (Felipe) - -- Improved CLI SAPI: - . Added built-in web server that is intended for testing purpose. - (Moriyoshi) - -- Improved PHP-FPM SAPI: - . Added partial syslog support (on error_log only). FR #52052. (fat) - . Lowered default value for Process Manager. FR #54098. (fat) - . Enhance security by limiting access to user defined extensions. - FR #55181. (fat) - -- Improved core functions: - . Changed http_response_code() to be able to set a response code. (Kalle) - . Fixed crypt_blowfish handling of 8-bit characters. (Stas) (CVE-2011-2483) - . Fixed bug#55084 (Function registered by header_register_callback is - called only once per process). (Hannes) - -- Improved DOM extension: - . Added the ability to pass options to loadHTML (Chregu, fxmulder at gmail dot com) - -- OpenSSL extension: - . Use php's implementation for Windows Crypto API in - openssl_random_pseudo_bytes. (Pierre) - -20 Jun 2011, PHP 5.4.0 Alpha 1 - autoconf 2.59+ is now supported (and required) for generating the configure script with ./buildconf. Autoconf 2.60+ is desirable otherwise the configure help order may be incorrect. (Rasmus, Chris Jones) @@ -449,22 +19,25 @@ PHP NEWS . session_is_registered(), session_register() and session_unregister() functions. (Kalle) . y2k_compliance ini option. (Kalle) + . magic_quotes_gpc, magic_quotes_runtime and magic_quotes_sybase + ini options. get_magic_quotes_gpc, get_magic_quotes_runtime are kept + but always return false, set_magic_quotes_runtime raises an + E_CORE_ERROR. (Pierrick, Pierre) + . Removed support for putenv("TZ=..") for setting the timezone. (Derick) + . Removed the timezone guessing algorithm in case the timezone isn't set with + date.timezone or date_default_timezone_set(). Instead of a guessed + timezone, "UTC" is now used instead. (Derick) - Moved extensions to PECL: (Johannes) . ext/sqlite. (Note: the ext/sqlite3 and ext/pdo_sqlite extensions are not affected) -- Changed $_SERVER['REQUEST_TIME'] to include microsecond precision. (Ilia) -- Changed default value of "default_charset" php.ini option from ISO-8859-1 to - UTF-8. (Rasmus) -- Changed array_combine() to return empty array instead of FALSE when both - parameter arrays are empty. FR #34857. (joel.perras@gmail.com) -- Changed third parameter of preg_match_all() to optional. FR #53238. (Adam) -- Changed silent casting of null/''/false into an Object when adding - a property into a warning. (Scott) -- <?= is now always available regardless of the short_open_tag setting (Rasmus) - - General improvements: + . Added short array syntax support ([1,2,3]), see UPGRADING guide for full + details. (rsky0711 at gmail . com, sebastian.deutsch at 9elements . com, + Pierre) + . Added binary numbers format (0b001010). (Jonah dot Harris at gmail dot com) + . Added support for Class::{expr}() syntax (Pierrick) . Added multibyte support by default. Previously php had to be compiled with --enable-zend-multibyte. Now it can be enabled or disabled through zend.multibyte directive in php.ini. (Dmitry) @@ -472,27 +45,35 @@ PHP NEWS . Added support for Traits. (Stefan) . Added closure $this support back. (Stas) . Added array dereferencing support. (Felipe) + . Added callable typehint. (Hannes) . Added indirect method call through array. FR #47160. (Felipe) - . Added support for object references in recursive serialize() calls. - FR #36424. (Mike) - . Added http_response_code() function. FR #52555. (Paul Dragoonis, Kalle) - . Added header_register_callback() which is invoked immediately - prior to the sending of headers and after default headers have - been added. (Scott) . Added DTrace support. (David Soria Parra) + . Added class member access on instantiation (e.g. (new foo)->bar()) support. + (Felipe) + . <?= is now always available regardless of the short_open_tag setting. (Rasmus) + . Implemented Zend Signal Handling (configurable option --enable-zend-signals, + off by default). (Lucas Nealan, Arnaud Le Blanc, Brian Shire, Ilia) . Improved output layer, see README.NEW-OUTPUT-API for internals. (Mike) - . Improved unserialize() performance. - (galaxy dot mipt at gmail dot com, Kalle) . Improved unix build system to allow building multiple PHP binary SAPIs and one SAPI module the same time. FR #53271, FR #52419. (Jani) - . Added optional argument to debug_backtrace() and debug_print_backtrace() - to limit the amount of stack frames returned. (Sebastian, Patrick) - . Added stream metadata API support and stream_metadata() stream class - handler. (Stas) - . User wrappers can now define a stream_truncate() method that responds - to truncation, e.g. through ftruncate(). FR #53888. (Gustavo) + . Implemented closure rebinding as parameter to bindTo. (Gustavo Lopes) + . Improved the warning message of incompatible arguments. (Laruence) + . Improved ternary operator performance when returning arrays. (Arnaud, Dmitry) + . Changed error handlers to only generate docref links when the docref_root + INI setting is not empty. (Derick) + . Changed silent conversion of array to string to produce a notice. (Patrick) + . Changed default value of "default_charset" php.ini option from ISO-8859-1 to + UTF-8. (Rasmus) + . Changed silent casting of null/''/false into an Object when adding + a property into a warning. (Scott) + . Changed E_ALL to include E_STRICT. (Stas) + . Disabled windows CRT warning by default, can be enabled again using the ini + directive windows_show_crt_warnings. (Pierre) + . Fixed bug #55378: Binary number literal returns float number though its + value is small enough. (Derick) - Improved Zend Engine memory usage: (Dmitry) + . Improved parse error messages. (Felipe) . Replaced zend_function.pass_rest_by_reference by ZEND_ACC_PASS_REST_BY_REFERENCE in zend_function.fn_flags. . Replaced zend_function.return_reference by ZEND_ACC_RETURN_REFERENCE @@ -514,9 +95,6 @@ PHP NEWS See zend_class_entry.info union. . Reduced size of temp_variable. -- Changed the structure of op_array.opcodes. The constant values are moved from - opcode operands into a separate literal table. (Dmitry) - - Improved Zend Engine, performance tweaks and optimizations: (Dmitry) . Inlined most probable code-paths for arithmetic operations directly into executor. @@ -529,8 +107,6 @@ PHP NEWS classes, constants, methods and properties. . Added concept of interned strings. All strings constants known at compile time are allocated in a single copy and never changed. - . Added an optimization which saves memory and emalloc/efree calls for empty - HashTables. (Stas, Dmitry) . ZEND_RECV now always has IS_CV as its result. . ZEND_CATCH now has to be used only with constant class names. . ZEND_FETCH_DIM_? may fetch array and dimension operands in different order. @@ -546,7 +122,125 @@ PHP NEWS instruction without previous ZEND_FETCH_CLASS. . zend_stack and zend_ptr_stack allocation is delayed until actual usage. +- Other improvements to Zend Engine: + . Added an optimization which saves memory and emalloc/efree calls for empty + HashTables. (Stas, Dmitry) + . Added ability to reset user opcode handlers (Yoram). + . Changed the structure of op_array.opcodes. The constant values are moved from + opcode operands into a separate literal table. (Dmitry) + . Fixed (disabled) inline-caching for ZEND_OVERLOADED_FUNCTION methods. + (Dmitry) + . Fixed bug #43200 (Interface implementation / inheritence not possible in + abstract classes). (Felipe) + +- Improved core functions: + . Added optional argument to debug_backtrace() and debug_print_backtrace() + to limit the amount of stack frames returned. (Sebastian, Patrick) + . Added hex2bin() function. (Scott) + . number_format() no longer truncates multibyte decimal points and thousand + separators to the first byte. FR #53457. (Adam) + . Added support for object references in recursive serialize() calls. + FR #36424. (Mike) + . Added support for SORT_NATURAL and SORT_FLAG_CASE in array + sort functions (sort, rsort, ksort, krsort, asort, arsort and + array_multisort). FR#55158 (Arpad) + . Added stream metadata API support and stream_metadata() stream class + handler. (Stas) + . User wrappers can now define a stream_truncate() method that responds + to truncation, e.g. through ftruncate(). FR #53888. (Gustavo) + . Improved unserialize() performance. + (galaxy dot mipt at gmail dot com, Kalle) + . Changed array_combine() to return empty array instead of FALSE when both + parameter arrays are empty. FR #34857. (joel.perras@gmail.com) + . Fixed invalid free in call_user_method() function. (Felipe) + . Fixed crypt_blowfish handling of 8-bit characters. (Stas) (CVE-2011-2483) + . Fixed bug #61095 (Incorect lexing of 0x00*+<NUM>). (Etienne) + . Fixed bug #60965 (Buffer overflow on htmlspecialchars/entities with + $double=false). (Gustavo) + . Fixed bug #60895 (Possible invalid handler usage in windows random + functions). (Pierre) + . Fixed bug #60879 (unserialize() Does not invoke __wakeup() on object). + (Pierre, Steve) + . Fixed bug #60825 (Segfault when running symfony 2 tests). + (Dmitry, Laruence) + . Fixed bug #60809 (TRAITS - PHPDoc Comment Style Bug). (Dmitry) + . Fixed bug #60627 (httpd.worker segfault on startup with php_value). + . Fixed bug #60613 (Segmentation fault with $cls->{expr}() syntax). (Dmitry) + . Fixed bug #60611 (Segmentation fault with Cls::{expr}() syntax). (Laruence) + (Laruence) + . Fixed bug #60558 (Invalid read and writes). (Laruence) + . Fixed bug #60536 (Traits Segfault). (Laruence) + . Fixed bug #60444 (Segmentation fault with include & class extending). + (Laruence, Dmitry). + . Fixed bug #60362 (non-existent sub-sub keys should not have values). + (Laruence, alan_k, Stas) + . Fixed bug #60350 (No string escape code for ESC (ascii 27), normally \e). + (php at mickweiss dot com) + . Fixed bug #60321 (ob_get_status(true) no longer returns an array when + buffer is empty). (Pierrick) + . Fixed bug #60282 (Segfault when using ob_gzhandler() with open buffers). + (Laruence) + . Fixed bug #60240 (invalid read/writes when unserializing specially crafted + strings). (Mike) + . Fixed bug #60227 (header() cannot detect the multi-line header with + CR(0x0D)). (rui) + . Fixed bug #60174 (Notice when array in method prototype error). + (Laruence) + . Fixed bug #60169 (Conjunction of ternary and list crashes PHP). + (Laruence) + . Fixed bug #60120 (proc_open's streams may hang with stdin/out/err when + the data exceeds or is equal to 2048 bytes). (Pierre, Pascal Borreli) + . Fixed bug #60099 (__halt_compiler() works in braced namespaces). (Felipe) + . Fixed bug #60038 (SIGALRM cause segfault in php_error_cb). (Laruence) + . Fixed bug #55874 (GCC does not provide __sync_fetch_and_add on some archs). + (klightspeed at netspace dot net dot au) + . Fixed bug #55871 (Interruption in substr_replace()). (Stas) + . Fixed bug #55825 (Missing initial value of static locals in trait methods). + (Laruence) + . Fixed bug #55801 (Behavior of unserialize has changed). (Mike) + . Fixed bug #55622 (memory corruption in parse_ini_string). (Pierre) + . Fixed bug #55758 (Digest Authenticate missed in 5.4) . (Laruence) + . Fixed bug #55748 (multiple NULL Pointer Dereference with zend_strndup()) + (CVE-2011-4153). (Stas) + . Fixed bug #55749 (TOCTOU issue in getenv() on Windows builds). (Pierre) + . Fixed bug #55707 (undefined reference to `__sync_fetch_and_add_4' on Linux + parisc). (Felipe) + . Fixed bug #55705 (Omitting a callable typehinted argument causes a segfault). + (Felipe, Laruence) + . Fixed bug #55475 (is_a() triggers autoloader, new optional 3rd argument to + is_a and is_subclass_of). (alan_k) + . Fixed bug #55471 (ZTS build broken with dtrace). (Laruence) + . Fixed bug #55124 (recursive mkdir fails with current (dot) directory in path). + (Pierre) + . Fixed bug #55084 (Function registered by header_register_callback is + called only once per process). (Hannes) + . Implement FR #54514 (Get php binary path during script execution). + (Laruence) + . Fixed bug #52624 (tempnam() by-pass open_basedir with nonexistent + directory). (Felipe) + . Fixed bug #52211 (iconv() returns part of string on error). (Felipe) + . Fixed bug #51860 (Include fails with toplevel symlink to /). (Dmitry) + +- Improved generic SAPI support: + . Added $_SERVER['REQUEST_TIME_FLOAT'] to include microsecond precision. + (Patrick) + . Added max_input_vars directive to prevent attacks based on hash collisions. + (Dmitry). + . Added header_register_callback() which is invoked immediately + prior to the sending of headers and after default headers have + been added. (Scott) + . Added http_response_code() function. FR #52555. (Paul Dragoonis, Kalle) + . Fixed bug #55500 (Corrupted $_FILES indices lead to security concern). + (Stas) + . Fixed bug #54374 (Insufficient validating of upload name leading to + corrupted $_FILES indices). (Stas, lekensteyn at gmail dot com) + +- Improved Apache SAPI: + . Fixed bug #60205 (possible integer overflow in content_length). (Laruence) + - Improved CLI SAPI: (Johannes, Moriyoshi) + . Added friendly log messages - FR #55109 (Arpad) + . Added built-in web server that is intended for testing purpose. (Moriyoshi) . Added command line option --rz <name> which shows information of the named Zend extension. (Johannes) . Interactive readline shell improvements: (Johannes) @@ -555,20 +249,64 @@ PHP NEWS . Added shortcut #inisetting=value to change ini settings at run-time. . Changed shell not to terminate on fatal errors. . Interactive shell works with shared readline extension. FR #53878. + . Fixed bug #60591 (Memory leak when access a non-exists file). (Laruence) + . Fixed bug #60523 (PHP Errors are not reported in browsers using built-in + SAPI). (Laruence, Derick) + . Fixed bug #60477 (Segfault after two multipart/form-data POST requests, + one 200 RQ and one 404). (Laruence) + . Implement FR #60390 (Missing $_SERVER['SERVER_PORT']). (Pierre) + . Fixed bug #60180 ($_SERVER["PHP_SELF"] incorrect). (Laruence) + . Fixed bug #60159 (Router returns false, but POST is not passed to requested + resource). (Laruence) + . Fixed bug #60146 (Last 2 lines of page not being output). (Laruence) + . Fixed bug #60115 (memory definitely lost in cli server). (Laruence) + . Fixed bug #60112 (If URI does not contain a file, index.php is not served). + (Laruence) + . Fixed bug #55759 (memory leak when using built-in server). (Laruence) + . Fixed bug #55755 (SegFault when outputting header WWW-Authenticate). (Laruence) + . Fixed bug #55747 (request headers missed in $_SERVER). (Laruence) + . Fixed bug #55726 (Changing the working directory makes router script + inaccessible). (Laruence) + . Fixed bug #55463 (cli-server missing _SERVER[REMOTE_ADDR]). (Laruence) + . Fixed bug #55450 (Built in web server not accepting file uploads). (Laruence) + . Fixed bug #55423 (cli-server could not output correctly in some case). + (Laruence, chobieee at gmail dot com) -- Improved FastCGI SAPI: (Dmitry) +- Improved CGI/FastCGI SAPI: (Dmitry) . Added apache compatible functions: apache_child_terminate(), getallheaders(), apache_request_headers() and apache_response_headers() . Improved performance of FastCGI request parsing. + . Fixed reinitialization of SAPI callbacks after php_module_startup(). + (Dmitry) -- Improved core functions: - . number_format() no longer truncates multibyte decimal points and thousand - separators to the first byte. FR #53457. (Adam) - . Added hex2bin() function. (Scott) +- Improved PHP-FPM SAPI: + . Added partial syslog support (on error_log only). FR #52052. (fat) + . Added .phar to default authorized extensions. (fat) + . Added process.max to control the number of process FPM can fork. FR #55166. + (fat) + . Dropped restriction of not setting the same value multiple times, the last + one holds. (giovanni at giacobbi dot net, fat) + . Lowered default value for Process Manager. FR #54098. (fat) + . Enhanced security by limiting access to user defined extensions. + FR #55181. (fat) + . Enhanced error log when the primary script can't be open. FR #60199. (fat) + . Removed EXPERIMENTAL flag. (fat) + . Fixed bug #60659 (FPM does not clear auth_user on request accept). + (bonbons at linux-vserver dot org) + . Fixed bug #60629 (memory corruption when web server closed the fcgi fd). + (fat) + +- Improved Litespeed SAPI: + . Fixed bug #55769 (Make Fails with "Missing Separator" error). (Adam) + +- Improved BCmath extension: + . Fixed bug #60377 (bcscale related crashes on 64bits platforms) (shm) - Improved CURL extension: . Added support for CURLOPT_MAX_RECV_SPEED_LARGE and CURLOPT_MAX_SEND_SPEED_LARGE. FR #51815. (Pierrick) + . Fixed bug #60439 (curl_copy_handle segfault when used with + CURLOPT_PROGRESSFUNCTION). (Pierrick) - Improved Date extension: . Added the + modifier to parseFromFormat to allow trailing text in the @@ -578,32 +316,67 @@ PHP NEWS . Added Tokyo Cabinet abstract DB support. (Michael Maclean) . Added Berkeley DB 5 support. (Johannes, Chris Jones) +- Improved DOM extension: + . Added the ability to pass options to loadHTML (Chregu, fxmulder at gmail dot com) + - Improved filesystem functions: . scandir() now accepts SCANDIR_SORT_NONE as a possible sorting_order value. FR #53407. (Adam) +- Improved fileinfo extension: + . Fixed possible memory leak in finfo_open(). (Felipe) + . Fixed memory leak when calling the Finfo constructor twice. (Felipe) + . Fixed bug #60094 (C++ comment fails in c89). (Laruence) + - Improved HASH extension: . Added Jenkins's one-at-a-time hash support. (Martin Jansen) . Added FNV-1 hash support. (Michael Maclean) . Made Adler32 algorithm faster. FR #53213. (zavasek at yandex dot ru) + . Removed Salsa10/Salsa20, which are actually stream ciphers (Mike) + . Fixed bug #60221 (Tiger hash output byte order) (Mike) - Improved intl extension: - . Added Spoofchecker, allows checking for visibly confusable characters and + . Added Spoofchecker class, allows checking for visibly confusable characters and other security issues. (Scott) + . Added Transliterator class, allowing transliteration of strings. + (Gustavo) + . Added support for UTS #46. (Gustavo) + . Fixed memory leak in several Intl locale functions. (Felipe) + . Fixed build on Fedora 15 / Ubuntu 11. (Hannes) + . Fixed bug #55562 (grapheme_substr() returns false on big length). (Stas) - Improved JSON extension: + . Added new json_encode() option JSON_UNESCAPED_UNICODE. FR #53946. + (Alexander, Gwynne) . Added JsonSerializable interface. (Sara) . Added JSON_BIGINT_AS_STRING, extended json_decode() sig with $options. (Sara) . Added support for JSON_NUMERIC_CHECK option in json_encode() that converts numeric strings to integers. (Ilia) - . Added new json_encode() option JSON_PRETTY_PRINT. FR #44331. (Adam) . Added new json_encode() option JSON_UNESCAPED_SLASHES. FR #49366. (Adam) + . Added new json_encode() option JSON_PRETTY_PRINT. FR #44331. (Adam) - Improved LDAP extension: . Added paged results support. FR #42060. (ando@OpenLDAP.org, iarenuno@eteo.mondragon.edu, jeanseb@au-fil-du.net, remy.saissy@gmail.com) +- Improved mbstring extension: + . Added Shift_JIS/UTF-8 Emoji (pictograms) support. (Rui) + . Added JIS X0213:2004 (Shift_JIS-2004, EUC-JP-2004, ISO-2022-JP-2004) + support. (Rui) + . Ill-formed UTF-8 check for security enhancements. (Rui) + . Added MacJapanese (Shift_JIS) and gb18030 encoding support. (Rui) + . Added encode/decode in hex format to mb_[en|de]code_numericentity(). (Rui) + . Added user JIS X0213:2004 (Shift_JIS-2004, EUC-JP-2004, ISO-2022-JP-2004) + support. (Rui) + . Added the user defined area for CP936 and CP950 (Rui). + . Fixed possible crash in mb_ereg_search_init() using empty pattern. (Felipe) + . Fixed bug #60306 (Characters lost while converting from cp936 to utf8). + (Laruence) + +- Improved MS SQL extension: + . Fixed bug #60267 (Compile failure with freetds 0.91). (Felipe) + - Improved MySQL extensions: . MySQL: Deprecated mysql_list_dbs(). FR #50667. (Andrey) . mysqlnd: Added named pipes support. FR #48082. (Andrey) @@ -611,44 +384,88 @@ PHP NEWS Traversable. (Andrey, Johannes) . PDO_mysql: Removed support for linking with MySQL client libraries older than 4.1. (Johannes) + . ext/mysql, mysqli and pdo_mysql now use mysqlnd by default. (Johannes) + . Fixed bug #55473 (mysql_pconnect leaks file descriptors on reconnect). + (Andrey, Laruence) + . Fixed bug #55653 (PS crash with libmysql when binding same variable as + param and out). (Laruence) - Improved OpenSSL extension: . Added AES support. FR #48632. (yonas dot y at gmail dot com, Pierre) . Added a "no_ticket" SSL context option to disable the SessionTicket TLS extension. FR #53447. (Adam) . Added no padding option to openssl_encrypt()/openssl_decrypt(). (Scott) + . Use php's implementation for Windows Crypto API in + openssl_random_pseudo_bytes. (Pierre) + . On error in openssl_random_pseudo_bytes() made sure we set strong result + to false. (Scott) + . Fixed segfault with older versions of OpenSSL. (Scott) + . Fixed possible attack in SSL sockets with SSL 3.0 / TLS 1.0. + CVE-2011-3389. (Scott) + . Fixed bug #61124 (Crash when decoding an invalid base64 encoded string). + (me at ktamura dot com, Scott) + . Fixed bug #60279 (Fixed NULL pointer dereference in + stream_socket_enable_crypto, case when ssl_handle of session_stream is not + initialized.) (shm) + +- Improved Oracle Database extension (OCI8): + . Increased maximum Oracle error message buffer length for new 11.2.0.3 size. + (Chris Jones) + . Improved internal initalization failure error messages. (Chris Jones) + . Fixed bug #59985 (show normal warning text for OCI_NO_DATA). + (Chris Jones) + +- Improved PDO: + . Fixed PDO objects binary incompatibility. (Dmitry) -- Improved PDO DB-LIB: (Stanley) +- PDO DBlib driver: . Added nextRowset support. + . Fixed bug #60033 (Incorrectly merged PDO dblib patches break + uniqueidentifier column type). (warezthebeef at gmail dot com) . Fixed bug #50755 (PDO DBLIB Fails with OOM). +- Improved Pdo Firebird driver: + . Fixed bug #53280 (segfaults if query column count less than param count). + (Mariuz) + . Fixed bug #48877 ("bindValue" and "bindParam" do not work for PDO Firebird). + (Mariuz) + . Fixed bug #47415 (segfaults when passing lowercased column name to + bindColumn). (Mariuz) + - Improved PostgreSQL extension: . Added support for "extra" parameter for PGNotify(). (r dot i dot k at free dot fr, Ilia) -- Improved Reflection extension: (Johannes) +- Improved preg extension: + . Changed third parameter of preg_match_all() to optional. FR #53238. (Adam) + +- Improved readline extension: + . Fixed bug #54450 (Enable callback support when built against libedit). + (fedora at famillecollet dot com, Hannes) + +- Improved Reflection extension: + . Added ReflectionClass::newInstanceWithoutConstructor() to create a new + instance of a class without invoking its constructor. FR #55490. + (Sebastian) . Added ReflectionExtension::isTemporary() and - ReflectionExtension::isPersistent() methods. - . Added ReflectionZendExtension class. + ReflectionExtension::isPersistent() methods. (Johannes) + . Added ReflectionZendExtension class. (Johannes) . Added ReflectionClass::isCloneable(). (Felipe) + . Fixed bug #60367 (Reflection and Late Static Binding). (Laruence) + . Fixed bug #60357 (__toString() method triggers E_NOTICE "Array to string + conversion"). (Laruence) - Improved Session extension: + . Expose session status via new function, session_status (FR #52982) (Arpad) + . Added support for object-oriented session handlers. (Arpad) . Added support for storing upload progress feedback in session data. (Arnaud) . Changed session.entropy_file to default to /dev/urandom or /dev/arandom if either is present at compile time. (Rasmus) - -- Improved SPL extension: - . Added RegexIterator::getRegex() method. (Joshua Thijssen) - . Added SplObjectStorage::getHash() hook. (Etienne) - . Added CallbackFilterIterator and RecursiveCallbackFilterIterator. (Arnaud) - -- Improved XSL extension: - . Added XsltProcessor::setSecurityPrefs($options) and getSecurityPrefs() to - define forbidden operations within XSLT stylesheets, default is not to - enable write operations from XSLT. Bug #54446 (Chregu, Nicolas Gregoire) - -- Improved ZLIB extension: - . Re-implemented non-file related functionality. (Mike) + . Fixed bug #60860 (session.save_handler=user without defined function core + dumps). (Felipe) + . Implement FR #60551 (session_set_save_handler should support a core's + session handler interface). (Arpad) + . Fixed bug #60640 (invalid return values). (Arpad) - Improved SNMP extension (Boris Lytochkin): . Added OO API. FR #53594 (php-snmp rewrite). @@ -661,86 +478,320 @@ PHP NEWS . Way of representing OID value can now be changed when SNMP_VALUE_OBJECT is used for value output mode. Use or'ed SNMP_VALUE_LIBRARY(default if not specified) or SNMP_VALUE_PLAIN. (FR #54502) + . Fixed bug #60749 (SNMP module should not strip non-standard SNMP port + from hostname). (Boris Lytochkin) + . Fixed bug #60585 (php build fails with USE flag snmp when IPv6 support + is disabled). (Boris Lytochkin) . Fixed bugs - . #44193 (snmp v3 noAuthNoPriv doesn't work) - . #45893 (Snmp buffer limited to 2048 char) - . #46065 (snmp_set_quick_print() persists between requests) - . #51336 (snmprealwalk (snmp v1) does not handle end of OID tree correctly) . #53862 (snmp_set_oid_output_format does not allow returning to default) + . #51336 (snmprealwalk (snmp v1) does not handle end of OID tree correctly) + . #46065 (snmp_set_quick_print() persists between requests) + . #45893 (Snmp buffer limited to 2048 char) + . #44193 (snmp v3 noAuthNoPriv doesn't work) + +- Improved SOAP extension: + . Added new SoapClient option "keep_alive". FR #60329. (Pierrick) + . Fixed basic HTTP authentication for WSDL sub requests. (Dmitry) + +- Improved SPL extension: + . Added RegexIterator::getRegex() method. (Joshua Thijssen) + . Added SplObjectStorage::getHash() hook. (Etienne) + . Added CallbackFilterIterator and RecursiveCallbackFilterIterator. (Arnaud) + . Added missing class_uses(..) as pointed out by #55266 (Stefan) + . Immediately reject wrong usages of directories under Spl(Temp)FileObject + and friends. (Etienne, Pierre) + . FilesystemIterator, GlobIterator and (Recursive)DirectoryIterator now use + the default stream context. (Hannes) + . Fixed bug #60201 (SplFileObject::setCsvControl does not expose third + argument via Reflection). (Peter) + . Fixed bug #55807 (Wrong value for splFileObject::SKIP_EMPTY). + (jgotti at modedemploi dot fr, Hannes) + . Fixed bug #55287 (spl_classes() not includes CallbackFilter classes) + (sasezaki at gmail dot com, salathe) + +- Improved Sysvshm extension: + . Fixed bug #55750 (memory copy issue in sysvshm extension). + (Ilia, jeffhuang9999 at gmail dot com) + +- Improved Tidy extension: + . Fixed bug #54682 (Tidy::diagnose() NULL pointer dereference). + (Maksymilian Arciemowicz, Felipe) + +- Improved Tokenizer extension: + . Fixed bug #54089 (token_get_all with regards to __halt_compiler is + not binary safe). (Nikita Popov) + +- Improved XSL extension: + . Added XsltProcessor::setSecurityPrefs($options) and getSecurityPrefs() to + define forbidden operations within XSLT stylesheets, default is not to + enable write operations from XSLT. Bug #54446 (Chregu, Nicolas Gregoire) + . XSL doesn't stop transformation anymore, if a PHP function can't be called + (Christian) -## UNSORTED ## +- Improved ZLIB extension: + . Re-implemented non-file related functionality. (Mike) + . Fixed bug #55544 (ob_gzhandler always conflicts with zlib.output_compression). + (Mike) -- Fixed PDO objects binary incompatibility. (Dmitry) -- Fixed bug #52211 (iconv() returns part of string on error). (Felipe) -- Fixed bug #55450 (Built in web server not accepting file uploads). (Laruence) -- Fixed bug #55471 (ZTS build broken with dtrace). (Laruence) -- Fixed bug #55463 (cli-server missing _SERVER[REMOTE_ADDR]). (Laruence) -- Fixed bug #55473 (mysql_pconnect leaks file descriptors on reconnect). (Andrey, Laruence) -- Fixed bug #55423 (cli-server could not output correctly in some case). (Laruence, chobieee at gmail dot com) -- Fixed bug #55653 (PS crash with libmysql when binding same variable as param and out). (Laruence) +02 Feb 2012, PHP 5.3.10 -?? ??? 2011, PHP 5.3.9 +- Core: + . Fixed arbitrary remote code execution vulnerability reported by Stefan + Esser, CVE-2012-0830. (Stas, Dmitry) + +10 Jan 2012, PHP 5.3.9 - Core: - . Fixed Bug #55649 (Undefined function Bug()). (Laruence) - . Fixed bug #55576: Cannot conditionally move uploaded file without race - condition. (Gustavo) - . Fixed bug #55366: keys lost when using substr_replace an array. (Arpad) - . Fixed bug #55273 (base64_decode() with strict rejects whitespace after - pad). (Ilia) + . Added max_input_vars directive to prevent attacks based on hash collisions + (Dmitry). + . Fixed bug #60205 (possible integer overflow in content_length). (Laruence) + . Fixed bug #60139 (Anonymous functions create cycles not detected by the + GC). (Dmitry) + . Fixed bug #60138 (GC crash with referenced array in RecursiveArrayIterator) + (Dmitry). + . Fixed bug #60120 (proc_open's streams may hang with stdin/out/err when + the data exceeds or is equal to 2048 bytes). (Pierre, Pascal Borreli) + . Fixed bug #60099 (__halt_compiler() works in braced namespaces). (Felipe) + . Fixed bug #60019 (Function time_nanosleep() is undefined on OS X). (Ilia) + . Fixed bug #55874 (GCC does not provide __sync_fetch_and_add on some archs). + (klightspeed at netspace dot net dot au) + . Fixed bug #55798 (serialize followed by unserialize with numeric object + prop. gives integer prop). (Gustavo) + . Fixed bug #55749 (TOCTOU issue in getenv() on Windows builds). (Pierre) + . Fixed bug #55707 (undefined reference to `__sync_fetch_and_add_4' on Linux + parisc). (Felipe) + . Fixed bug #55674 (fgetcsv & str_getcsv skip empty fields in some + tab-separated records). (Laruence) + . Fixed bug #55649 (Undefined function Bug()). (Laruence) + . Fixed bug #55622 (memory corruption in parse_ini_string). (Pierre) + . Fixed bug #55576 (Cannot conditionally move uploaded file without race + condition). (Gustavo) . Fixed bug #55510: $_FILES 'name' missing first character after upload. (Arpad) . Fixed bug #55509 (segfault on x86_64 using more than 2G memory). (Laruence) . Fixed bug #55504 (Content-Type header is not parsed correctly on HTTP POST request). (Hannes) - . Fixed bug #52461 (Incomplete doctype and missing xmlns). + . Fixed bug #55475 (is_a() triggers autoloader, new optional 3rd argument to + is_a and is_subclass_of). (alan_k) + . Fixed bug #52461 (Incomplete doctype and missing xmlns). (virsacer at web dot de, Pierre) + . Fixed bug #55366 (keys lost when using substr_replace an array). (Arpad) + . Fixed bug #55273 (base64_decode() with strict rejects whitespace after + pad). (Ilia) + . Fixed bug #52624 (tempnam() by-pass open_basedir with nonnexistent + directory). (Felipe) + . Fixed bug #50982 (incorrect assumption of PAGE_SIZE size). (Dmitry) + . Fixed invalid free in call_user_method() function. (Felipe) + . Fixed bug #43200 (Interface implementation / inheritence not possible in + abstract classes). (Felipe) -- Curl: + +- BCmath: + . Fixed bug #60377 (bcscale related crashes on 64bits platforms). (shm) + +- Calendar: + . Fixed bug #55797 (Integer overflow in SdnToGregorian leads to segfault (in + optimized builds). (Gustavo) + +- cURL: + . Fixed bug #60439 (curl_copy_handle segfault when used with + CURLOPT_PROGRESSFUNCTION). (Pierrick) . Fixed bug #54798 (Segfault when CURLOPT_STDERR file pointer is closed before calling curl_exec). (Hannes) . Fixed issues were curl_copy_handle() would sometimes lose copied preferences. (Hannes) - DateTime: + . Fixed bug #60373 (Startup errors with log_errors on cause segfault). + (Derick) + . Fixed bug #60236 (TLA timezone dates are not converted properly from + timestamp). (Derick) + . Fixed bug #55253 (DateTime::add() and sub() result -1 hour on objects with + time zone type 2). (Derick) + . Fixed bug #54851 (DateTime::createFromFormat() doesn't interpret "D"). + (Derick) + . Fixed bug #53502 (strtotime with timezone memory leak). (Derick) + . Fixed bug #52062 (large timestamps with DateTime::getTimestamp and + DateTime::setTimestamp). (Derick) + . Fixed bug #51994 (date_parse_from_format is parsing invalid date using 'yz' + format). (Derick) + . Fixed bug #52113 (Seg fault while creating (by unserialization) + DatePeriod). (Derick) . Fixed bug #48476 (cloning extended DateTime class without calling parent::__constr crashed PHP). (Hannes) +- EXIF: + . Fixed bug #60150 (Integer overflow during the parsing of invalid exif + header). (Stas, flolechaud at gmail dot com) + +- Fileinfo: + . Fixed bug #60094 (C++ comment fails in c89). (Laruence) + . Fixed possible memory leak in finfo_open(). (Felipe) + . Fixed memory leak when calling the Finfo constructor twice. (Felipe) + +- Filter: + . Fixed Bug #55478 (FILTER_VALIDATE_EMAIL fails with internationalized + domain name addresses containing >1 -). (Ilia) + +- FTP: + . Fixed bug #60183 (out of sync ftp responses). (bram at ebskamp dot me, + rasmus) + +- Gd: + . Fixed bug #60160 (imagefill() doesn't work correctly + for small images). (Florian) + +- Intl: + . Fixed bug #60192 (SegFault when Collator not constructed + properly). (Florian) + . Fixed memory leak in several Intl locale functions. (Felipe) + +- Json: + . Fixed bug #55543 (json_encode() with JSON_NUMERIC_CHECK fails on objects + with numeric string properties). (Ilia, dchurch at sciencelogic dot com) + +- Mbstring: + . Fixed possible crash in mb_ereg_search_init() using empty pattern. (Felipe) + +- MS SQL: + . Fixed bug #60267 (Compile failure with freetds 0.91). (Felipe) + - MySQL: . Fixed bug #55550 (mysql.trace_mode miscounts result sets). (Johannes) - MySQLi extension: + . Fixed bug #55859 (mysqli->stat property access gives error). (Andrey) . Fixed bug #55582 (mysqli_num_rows() returns always 0 for unbuffered, when - mysqlnd is used). (Andrey) + mysqlnd is used). (Andrey) + . Fixed bug #55703 (PHP crash when calling mysqli_fetch_fields). + (eran at zend dot com, Laruence) - mysqlnd . Fixed bug #55609 (mysqlnd cannot be built shared). (Johannes) . Fixed bug #55067 (MySQL doesn't support compression - wrong config option). (Andrey) +- NSAPI SAPI: + . Don't set $_SERVER['HTTPS'] on unsecure connection (bug #55403). (Uwe + Schindler) + +- OpenSSL: + . Fixed bug #60279 (Fixed NULL pointer dereference in + stream_socket_enable_crypto, case when ssl_handle of session_stream is not + initialized.) (shm) + . Fix segfault with older versions of OpenSSL. (Scott) + +- Oracle Database extension (OCI8): + . Fixed bug #59985 (show normal warning text for OCI_NO_DATA). + (Chris Jones) + . Increased maximum Oracle error message buffer length for new 11.2.0.3 size. + (Chris Jones) + . Improve internal initalization failure error messages. (Chris Jones) + +- PDO + . Fixed bug #55776 (PDORow to session bug). (Johannes) + +- PDO Firebird: + . Fixed bug #48877 ("bindValue" and "bindParam" do not work for PDO Firebird). + (Mariuz) + . Fixed bug #47415 (PDO_Firebird segfaults when passing lowercased column name to bindColumn). + . Fixed bug #53280 (PDO_Firebird segfaults if query column count less than param count). + (Mariuz) + - PDO MySQL driver: - . Fixed bug #54158 (MYSQLND+PDO MySQL requires #define MYSQL_OPT_LOCAL_INFILE) - (Andrey) + . Fixed bug #60155 (pdo_mysql.default_socket ignored). (Johannes) + . Fixed bug #55870 (PDO ignores all SSL parameters when used with mysql + native driver). (Pierre) + . Fixed bug #54158 (MYSQLND+PDO MySQL requires #define + MYSQL_OPT_LOCAL_INFILE). (Andrey) + +- PDO OCI driver: + . Fixed bug #55768 (PDO_OCI can't resume Oracle session after it's been + killed). (mikhail dot v dot gavrilov at gmail dot com, Chris Jones, Tony) - Phar: - . Fixed bug#52013 (Unable to decompress files in a compressed phar). (Hannes) - . Fixed bug#53872 (internal corruption of phar). (Hannes) + . Fixed bug #60261 (NULL pointer dereference in phar). (Felipe) + . Fixed bug #60164 (Stubs of a specific length break phar_open_from_fp + scanning for __HALT_COMPILER). (Ralph Schindler) + . Fixed bug #53872 (internal corruption of phar). (Hannes) + . Fixed bug #52013 (Unable to decompress files in a compressed phar). (Hannes) + +- PHP-FPM SAPI: + . Fixed bug #60659 (FPM does not clear auth_user on request accept). + (bonbons at linux-vserver dot org) + . Fixed bug #60629 (memory corruption when web server closed the fcgi fd). + (fat) + . Fixed bug #60179 (php_flag and php_value does not work properly). (fat) + . Fixed bug #55526 (Heartbeat causes a lot of unnecessary events). (fat) + . Fixed bug #55533 (The -d parameter doesn't work). (fat) + . Implemented FR #52569 (Add the "ondemand" process-manager + to allow zero children). (fat) + . Fixed bug #55486 (status show BIG processes number). (fat) + . Fixed bug #55577 (status.html does not install). (fat) + . Backported from 5.4 branch (Dropped restriction of not setting the same + value multiple times, the last one holds). + (giovanni at giacobbi dot net, fat) + . Backported FR #55166 from 5.4 branch (Added process.max to control + the number of process FPM can fork). (fat) + . Backported FR #55181 from 5.4 branch (Enhance security by limiting access + to user defined extensions). (fat) + . Backported FR #54098 from 5.4 branch (Lowered process manager + default value). (fat) + . Backported FR #52052 from 5.4 branch (Added partial syslog support). (fat) + . Implemented FR #54577 (Enhanced status page with full status and details + about each processes. Also provide a web page (status.html) for + real-time FPM status. (fat) + . Enhance error log when the primary script can't be open. FR #60199. (fat) + . Added .phar to default authorized extensions. (fat) + +- Postgres: + . Fixed bug #60244 (pg_fetch_* functions do not validate that row param + is >0). (Ilia) + +- Reflection: + . Fixed bug #60367 (Reflection and Late Static Binding). (Laruence) - Session: . Fixed bug #55267 (session_regenerate_id fails after header sent). (Hannes) -- NSAPI SAPI: - . Don't set $_SERVER['HTTPS'] on unsecure connection (bug #55403). (Uwe - Schindler) - - SimpleXML: . Reverted the SimpleXML->query() behaviour to returning empty arrays - instead of false when no nodes are found as it was since 5.3.3 + instead of false when no nodes are found as it was since 5.3.3 (bug #48601). (chregu, rrichards) -- String: - . Fixed bug #55674 (fgetcsv & str_getcsv skip empty fields in some tab-separated - records). (Laruence) +- SOAP + . Fixed bug #54911 (Access to a undefined member in inherit SoapClient may + cause Segmentation Fault). (Dmitry) + . Fixed bug #48216 (PHP Fatal error: SOAP-ERROR: Parsing WSDL: + Extra content at the end of the doc, when server uses chunked transfer + encoding with spaces after chunk size). (Dmitry) + . Fixed bug #44686 (SOAP-ERROR: Parsing WSDL with references). (Dmitry) + +- Sockets: + . Fixed bug #60048 (sa_len a #define on IRIX). (china at thewrittenword dot + com) + +- SPL: + . Fixed bug #60082 (Crash in ArrayObject() when using recursive references). + (Tony) + . Fixed bug #55807 (Wrong value for splFileObject::SKIP_EMPTY). + (jgotti at modedemploi dot fr, Hannes) + . Fixed bug #54304 (RegexIterator::accept() doesn't work with scalar values). + (Hannes) + +- Streams: + . Fixed bug #60455 (stream_get_line misbehaves if EOF is not detected together + with the last read). (Gustavo) + +- Tidy: + . Fixed bug #54682 (Tidy::diagnose() NULL pointer dereference). + (Maksymilian Arciemowicz, Felipe) + +- XSL: + . Added xsl.security_prefs ini option to define forbidden operations within + XSLT stylesheets, default is not to enable write operations. This option + won't be in 5.4, since there's a new method. Fixes Bug #54446. (Chregu, + Nicolas Gregoire) 23 Aug 2011, PHP 5.3.8 @@ -766,7 +817,7 @@ PHP NEWS (Pierrick, Felipe) . Fixed bug #54624 (class_alias and type hint). (Felipe) . Fixed bug #54585 (track_errors causes segfault). (Dmitry) - . Fixed bug #54423 (classes from dl()'ed extensions are not destroyed). + . Fixed bug #54423 (classes from dl()'ed extensions are not destroyed). (Tony, Dmitry) . Fixed bug #54372 (Crash accessing global object itself returned from its __get() handle). (Dmitry) @@ -779,13 +830,13 @@ PHP NEWS - Core . Updated crypt_blowfish to 1.2. ((CVE-2011-2483) (Solar Designer) - . Removed warning when argument of is_a() or is_subclass_of() is not + . Removed warning when argument of is_a() or is_subclass_of() is not a known class. (Stas) . Fixed crash in error_log(). (Felipe) Reported by Mateusz Kocielski. . Added PHP_MANDIR constant telling where the manpages were installed into, and an --man-dir argument to php-config. (Hannes) . Fixed a crash inside dtor for error handling. (Ilia) - . Fixed buffer overflow on overlog salt in crypt(). (Clément LECIGNE, Stas) + . Fixed buffer overflow on overlog salt in crypt(). (Clément LECIGNE, Stas) . Implemented FR #54459 (Range function accuracy). (Adam) . Fixed bug #55399 (parse_url() incorrectly treats ':' as a valid path). @@ -794,7 +845,7 @@ PHP NEWS (Dmitry) . Fixed bug #55295 [NEW]: popen_ex on windows, fixed possible heap overflow (Pierre) - . Fixed bug #55258 (Windows Version Detecting Error). + . Fixed bug #55258 (Windows Version Detecting Error). ( xiaomao5 at live dot com, Pierre) . Fixed bug #55187 (readlink returns weird characters when false result). (Pierre) @@ -838,7 +889,7 @@ PHP NEWS (Pierrick, Dmitry) . Fixed bug #50363 (Invalid parsing in convert.quoted-printable-decode filter). (slusarz at curecanti dot org) - . Fixed bug #48465 (sys_get_temp_dir() possibly inconsistent when using + . Fixed bug #48465 (sys_get_temp_dir() possibly inconsistent when using TMPDIR on Windows). (Pierre) - Apache2 Handler SAPI: @@ -851,7 +902,7 @@ PHP NEWS - cURL extension: . Added ini option curl.cainfo (support for custom cert db). (Pierre) . Added CURLINFO_REDIRECT_URL support. (Daniel Stenberg, Pierre) - . Added support for CURLOPT_MAX_RECV_SPEED_LARGE and + . Added support for CURLOPT_MAX_RECV_SPEED_LARGE and CURLOPT_MAX_SEND_SPEED_LARGE. FR #51815. (Pierrick) - DateTime extension: @@ -865,7 +916,7 @@ PHP NEWS exception and fatal error). (Hannes) - DBA extension: - . Supress warning on non-existent file open with Berkeley DB 5.2 (Chris Jones) + . Supress warning on non-existent file open with Berkeley DB 5.2. (Chris Jones) . Fixed bug #54242 (dba_insert returns true if key already exists). (Felipe) - Exif extesion: @@ -878,10 +929,10 @@ PHP NEWS . Added 3rd parameter to filter_var_array() and filter_input_array() functions that allows disabling addition of empty elements. (Ilia) . Fixed bug #53037 (FILTER_FLAG_EMPTY_STRING_NULL is not implemented). (Ilia) - + - Interbase extension: . Fixed bug #54269 (Short exception message buffer causes crash). (Felipe) - + - intl extension: . Implemented FR #54561 (Expose ICU version info). (David Zuelke, Ilia) . Implemented FR #54540 (Allow loading of arbitrary resource bundles when @@ -892,7 +943,7 @@ PHP NEWS (kevin at kevinlocke dot name) - json extension: - . Fixed bug #54484 (Empty string in json_decode doesn't reset + . Fixed bug #54484 (Empty string in json_decode doesn't reset json_last_error()). (Ilia) - LDAP extension: @@ -909,7 +960,7 @@ PHP NEWS - MCrypt extension: . Change E_ERROR to E_WARNING in mcrypt_create_iv when not enough data has been fetched (Windows). (Pierre) - . Fixed bug #55169 (mcrypt_create_iv always fails to gather sufficient random + . Fixed bug #55169 (mcrypt_create_iv always fails to gather sufficient random data on Windows). (Pierre) - mysqlnd @@ -934,14 +985,14 @@ PHP NEWS - Oracle Database extension (OCI8): . Added oci_client_version() returning the runtime Oracle client library - version (Chris Jones) + version. (Chris Jones) . PCRE extension: . Increased the backtrack limit from 100000 to 1000000 (Rasmus) - PDO extension: . Fixed bug #54929 (Parse error with single quote in sql comment). (Felipe) - . Fixed bug #52104 (bindColumn creates Warning regardless of ATTR_ERRMODE + . Fixed bug #52104 (bindColumn creates Warning regardless of ATTR_ERRMODE settings). (Ilia) - PDO DBlib driver: @@ -1064,7 +1115,7 @@ PHP NEWS . Fixed bug #48607 (fwrite() doesn't check reply from ftp server before exiting). (Ilia) - + - Calendar extension: . Fixed bug #53574 (Integer overflow in SdnToJulian, sometimes leading to segfault). (Gustavo) @@ -1072,18 +1123,18 @@ PHP NEWS - DOM extension: . Implemented FR #39771 (Made DOMDocument::saveHTML accept an optional DOMNode like DOMDocument::saveXML). (Gustavo) - + - DateTime extension: . Fixed a bug in DateTime->modify() where absolute date/time statements had no effect. (Derick) . Fixed bug #53729 (DatePeriod fails to initialize recurrences on 64bit big-endian systems). (Derick, rein@basefarm.no) . Fixed bug #52808 (Segfault when specifying interval as two dates). (Stas) - . Fixed bug #52738 (Can't use new properties in class extended from + . Fixed bug #52738 (Can't use new properties in class extended from DateInterval). (Stas) . Fixed bug #52290 (setDate, setISODate, setTime works wrong when DateTime created from timestamp). (Stas) - . Fixed bug #52063 (DateTime constructor's second argument doesn't have a + . Fixed bug #52063 (DateTime constructor's second argument doesn't have a null default value). (Gustavo, Stas) - Exif extension: @@ -1104,20 +1155,20 @@ PHP NEWS (Hannes) - Gettext - . Fixed bug #53837 (_() crashes on Windows when no LANG or LANGUAGE + . Fixed bug #53837 (_() crashes on Windows when no LANG or LANGUAGE environment variable are set). (Pierre) - IMAP extension: . Implemented FR #53812 (get MIME headers of the part of the email). (Stas) . Fixed bug #53377 (imap_mime_header_decode() doesn't ignore \t during long MIME header unfolding). (Adam) - + - Intl extension: . Fixed bug #53612 (Segmentation fault when using cloned several intl objects). (Gustavo) . Fixed bug #53512 (NumberFormatter::setSymbol crash on bogus $attr values). (Felipe) - . Implemented clone functionality for number, date & message formatters. + . Implemented clone functionality for number, date & message formatters. (Stas). - JSON extension: @@ -1125,20 +1176,20 @@ PHP NEWS decodings). (Scott) - mysqlnd - . Fixed problem with always returning 0 as num_rows for unbuffered sets. + . Fixed problem with always returning 0 as num_rows for unbuffered sets. (Andrey, Ulf) - MySQL Improved extension: - . Added 'db' and 'catalog' keys to the field fetching functions (FR #39847). + . Added 'db' and 'catalog' keys to the field fetching functions (FR #39847). (Kalle) . Fixed buggy counting of affected rows when using the text protocol. The collected statistics were wrong when multi_query was used with mysqlnd (Andrey) - . Fixed bug #53795 (Connect Error from MySqli (mysqlnd) when using SSL). + . Fixed bug #53795 (Connect Error from MySqli (mysqlnd) when using SSL). (Kalle) - . Fixed bug #53503 (mysqli::query returns false after successful LOAD DATA + . Fixed bug #53503 (mysqli::query returns false after successful LOAD DATA query). (Kalle, Andrey) - . Fixed bug #53425 (mysqli_real_connect() ignores client flags when built to + . Fixed bug #53425 (mysqli_real_connect() ignores client flags when built to call libmysql). (Kalle, tre-php-net at crushedhat dot com) - OpenSSL extension: @@ -1155,13 +1206,13 @@ PHP NEWS - PDO MySQL driver: . Fixed bug #53551 (PDOStatement execute segfaults for pdo_mysql driver). (Johannes) - . Implemented FR #47802 (Support for setting character sets in DSN strings). + . Implemented FR #47802 (Support for setting character sets in DSN strings). (Kalle) - PDO Oracle driver: . Fixed bug #39199 (Cannot load Lob data with more than 4000 bytes on ORACLE 10). (spatar at mail dot nnov dot ru) - + - PDO PostgreSQL driver: . Fixed bug #53517 (segfault in pgsql_stmt_execute() when postgres is down). (gyp at balabit dot hu) @@ -1171,7 +1222,7 @@ PHP NEWS (CVE-2011-1153) . Fixed bug #53541 (format string bug in ext/phar). (crrodriguez at opensuse dot org, Ilia) - . Fixed bug #53898 (PHAR reports invalid error message, when the directory + . Fixed bug #53898 (PHAR reports invalid error message, when the directory does not exist). (Ilia) - PHP-FPM SAPI: @@ -1202,7 +1253,7 @@ PHP NEWS (Mateusz Kocielski, Pierre) - SPL extension: - . Fixed memory leak in DirectoryIterator::getExtension() and + . Fixed memory leak in DirectoryIterator::getExtension() and SplFileInfo::getExtension(). (Felipe) . Fixed bug #53914 (SPL assumes HAVE_GLOB is defined). (Chris Jones) . Fixed bug #53515 (property_exists incorrect on ArrayObject null and 0 @@ -1252,13 +1303,13 @@ PHP NEWS (Hannes) . Fixed bug #53568 (swapped memset arguments in struct initialization). (crrodriguez at opensuse dot org) - . Fixed bug #53166 (Missing parameters in docs and reflection definition). + . Fixed bug #53166 (Missing parameters in docs and reflection definition). (Richard) . Fixed bug #49072 (feof never returns true for damaged file in zip). (Gustavo, Richard Quadling) 06 Jan 2011, PHP 5.3.5 -- Fixed Bug #53632 (infinite loop with x87 fpu). (CVE-2010-4645) (Scott, +- Fixed Bug #53632 (infinite loop with x87 fpu). (CVE-2010-4645) (Scott, Rasmus) 09 Dec 2010, PHP 5.3.4 @@ -1266,11 +1317,11 @@ PHP NEWS - Upgraded bundled PCRE to version 8.10. (Ilia) - Security enhancements: - . Fixed crash in zip extract method (possible CWE-170). + . Fixed crash in zip extract method (possible CWE-170). (Maksymilian Arciemowicz, Pierre) . Paths with NULL in them (foo\0bar.txt) are now considered as invalid. (Rasmus) - . Fixed a possible double free in imap extension (Identified by Mateusz + . Fixed a possible double free in imap extension (Identified by Mateusz Kocielski). (CVE-2010-4150). (Ilia) . Fixed NULL pointer dereference in ZipArchive::getArchiveComment. (CVE-2010-3709). (Maksymilian Arciemowicz) @@ -1282,23 +1333,23 @@ PHP NEWS - General improvements: . Added stat support for zip stream. (Pierre) - . Added follow_location (enabled by default) option for the http stream + . Added follow_location (enabled by default) option for the http stream support. (Pierre) . Improved support for is_link and related functions on Windows. (Pierre) . Added a 3rd parameter to get_html_translation_table. It now takes a charset hint, like htmlentities et al. (Gustavo) - + - Implemented feature requests: . Implemented FR #52348, added new constant ZEND_MULTIBYTE to detect zend multibyte at runtime. (Kalle) - . Implemented FR #52173, added functions pcntl_get_last_error() and + . Implemented FR #52173, added functions pcntl_get_last_error() and pcntl_strerror(). (nick dot telford at gmail dot com, Arnaud) . Implemented symbolic links support for open_basedir checks. (Pierre) . Implemented FR #51804, SplFileInfo::getLinkTarget on Windows. (Pierre) . Implemented FR #50692, not uploaded files don't count towards max_file_uploads limit. As a side improvement, temporary files are not opened for empty uploads and, in debug mode, 0-length uploads. (Gustavo) - + - Improved MySQLnd: . Added new character sets to mysqlnd, which are available in MySQL 5.5 (Andrey) @@ -1310,7 +1361,7 @@ PHP NEWS . Added '-t/--test' to php-fpm to check and validate FPM conf file. (fat) . Added statistics about listening socket queue length for FPM. (andrei dot nigmatulin at gmail dot com, fat) - + - Core: . Fixed extract() to do not overwrite $GLOBALS and $this when using EXTR_OVERWRITE. (jorto at redhat dot com) @@ -1324,7 +1375,7 @@ PHP NEWS . Fixed bug #53304 (quot_print_decode does not handle lower-case hex digits). (Ilia, daniel dot mueller at inexio dot net) . Fixed bug #53248 (rawurlencode RFC 3986 EBCDIC support misses tilde char). - (Justin Martin) + (Justin Martin) . Fixed bug #53226 (file_exists fails on big filenames). (Adam) . Fixed bug #53198 (changing INI setting "from" with ini_set did not have any effect). (Gustavo) @@ -1340,7 +1391,7 @@ PHP NEWS decode " if ENT_NOQUOTES is given. (Gustavo) . Fixed bug #52931 (strripos not overloaded with function overloading enabled). (Felipe) - . Fixed bug #52772 (var_dump() doesn't check for the existence of + . Fixed bug #52772 (var_dump() doesn't check for the existence of get_class_name before calling it). (Kalle, Gustavo) . Fixed bug #52534 (var_export array with negative key). (Felipe) . Fixed bug #52327 (base64_decode() improper handling of leading padding in @@ -1355,22 +1406,22 @@ PHP NEWS of reported malformed sequences). (CVE-2010-3870) (Gustavo) . Fixed bug #49407 (get_html_translation_table doesn't handle UTF-8). (Gustavo) - . Fixed bug #48831 (php -i has different output to php --ini). (Richard, + . Fixed bug #48831 (php -i has different output to php --ini). (Richard, Pierre) . Fixed bug #47643 (array_diff() takes over 3000 times longer than php 5.2.4). (Felipe) - . Fixed bug #47168 (printf of floating point variable prints maximum of 40 + . Fixed bug #47168 (printf of floating point variable prints maximum of 40 decimal places). (Ilia) . Fixed bug #46587 (mt_rand() does not check that max is greater than min). (Ilia) . Fixed bug #29085 (bad default include_path on Windows). (Pierre) . Fixed bug #25927 (get_html_translation_table calls the ' ' instead of '). (Gustavo) - + - Zend engine: . Reverted fix for bug #51176 (Static calling in non-static method behaves like $this->). (Felipe) - . Changed deprecated ini options on startup from E_WARNING to E_DEPRECATED. + . Changed deprecated ini options on startup from E_WARNING to E_DEPRECATED. (Kalle) . Fixed NULL dereference in lex_scan on zend multibyte builds where the script had a flex incompatible encoding and there was no converter. (Gustavo) @@ -1390,7 +1441,7 @@ PHP NEWS . Fixed bug #52361 (Throwing an exception in a destructor causes invalid catching). (Dmitry) . Fixed bug #51008 (Zend/tests/bug45877.phpt fails). (Dmitry) - + - Build issues: . Fixed bug #52436 (Compile error if systems do not have stdint.h) (Sriram Natarajan) @@ -1401,7 +1452,7 @@ PHP NEWS - Calendar extension: . Fixed bug #52744 (cal_days_in_month incorrect for December 1 BCE). (gpap at internet dot gr, Adam) - + - cURL extension: . Fixed bug #52828 (curl_setopt does not accept persistent streams). (Gustavo, Ilia) @@ -1409,7 +1460,7 @@ PHP NEWS (CURLOPT_STDERR)). (Gustavo) . Fixed bug #52202 (CURLOPT_PRIVATE gets corrupted). (Ilia) . Fixed bug #50410 (curl extension slows down PHP on Windows). (Pierre) - + - DateTime extension: . Fixed bug #53297 (gettimeofday implementation in php/win32/time.c can return 1 million microsecs). (ped at 7gods dot org) @@ -1438,7 +1489,7 @@ PHP NEWS . Fixed bug #53492 (fix crash if anti-aliasing steps are invalid). (Pierre) - GMP extension: - . Fixed bug #52906 (gmp_mod returns negative result when non-negative is + . Fixed bug #52906 (gmp_mod returns negative result when non-negative is expected). (Stas) . Fixed bug #52849 (GNU MP invalid version match). (Adam) @@ -1451,7 +1502,7 @@ PHP NEWS headers). (Adam) . Fixed bug #52599 (iconv output handler outputs incorrect content type when flags are used). (Ilia) - . Fixed bug #51250 (iconv_mime_decode() does not ignore malformed Q-encoded + . Fixed bug #51250 (iconv_mime_decode() does not ignore malformed Q-encoded words). (Ilia) - Intl extension: @@ -1461,7 +1512,7 @@ PHP NEWS (Stas) . Fixed bug #50590 (IntlDateFormatter::parse result is limited to the integer range). (Stas) - + - Mbstring extension: . Fixed bug #53273 (mb_strcut() returns garbage with the excessive length parameter). (CVE-2010-4156) (Mateusz Kocielski, Pierre, Moriyoshi) @@ -1470,16 +1521,16 @@ PHP NEWS with the distribution) (Gustavo). . Fixed bug #52681 (mb_send_mail() appends an extra MIME-Version header). (Adam) - + - MSSQL extension: . Fixed possible crash in mssql_fetch_batch(). (Kalle) . Fixed bug #52843 (Segfault when optional parameters are not passed in to mssql_connect). (Felipe) - + - MySQL extension: - . Fixed bug #52636 (php_mysql_fetch_hash writes long value into int). + . Fixed bug #52636 (php_mysql_fetch_hash writes long value into int). (Kalle, rein at basefarm dot no) - + - MySQLi extension: . Fixed bug #52891 (Wrong data inserted with mysqli/mysqlnd when using mysqli_stmt_bind_param and value> PHP_INT_MAX). (Andrey) @@ -1496,10 +1547,10 @@ PHP NEWS (Andrey) . Fixed bug #52221 (Misbehaviour of magic_quotes_runtime (get/set)). (Andrey) . Fixed bug #45921 (Can't initialize character set hebrew). (Andrey) - + - MySQLnd: . Fixed bug #52613 (crash in mysqlnd after hitting memory limit). (Andrey) - + - ODBC extension: - Fixed bug #52512 (Broken error handling in odbc_execute). (mkoegler at auto dot tuwien dot ac dot at) @@ -1516,11 +1567,11 @@ PHP NEWS . Fixed bug #51610 (Using oci_connect causes PHP to take a long time to exit). Requires Oracle 11.2.0.2 client libraries (or Oracle bug fix 9891199) for this patch to have an effect. (Oracle Corp.) - + - PCNTL extension: . Fixed bug #52784 (Race condition when handling many concurrent signals). (nick dot telford at gmail dot com, Arnaud) - + - PCRE extension: . Fixed bug #52971 (PCRE-Meta-Characters not working with utf-8). (Felipe) . Fixed bug #52732 (Docs say preg_match() returns FALSE on error, but it @@ -1544,27 +1595,27 @@ PHP NEWS - PDO: . Fixed bug #52699 (PDO bindValue writes long int 32bit enum). - (rein at basefarm dot no) + (rein at basefarm dot no) . Fixed bug #52487 (PDO::FETCH_INTO leaks memory). (Felipe) - + - PDO DBLib driver: . Fixed bug #52546 (pdo_dblib segmentation fault when iterating MONEY values). (Felipe) - + - PDO Firebird driver: . Restored firebird support (VC9 builds only). (Pierre) . Fixed bug #53335 (pdo_firebird did not implement rowCount()). (preeves at ibphoenix dot com) . Fixed bug #53323 (pdo_firebird getAttribute() crash). (preeves at ibphoenix dot com) - + - PDO MySQL driver: . Fixed bug #52745 (Binding params doesn't work when selecting a date inside a CASE-WHEN). (Andrey) - + - PostgreSQL extension: . Fixed bug #47199 (pg_delete() fails on NULL). (ewgraf at gmail dot com) - + - Reflection extension: . Fixed ReflectionProperty::isDefault() giving a wrong result for properties obtained with ReflectionClass::getProperties(). (Gustavo) @@ -1573,11 +1624,11 @@ PHP NEWS getProperty()). (Felipe) . Fixed bug #52854 (ReflectionClass::newInstanceArgs does not work for classes without constructors). (Johannes) - + - SOAP extension: . Fixed bug #44248 (RFC2616 transgression while HTTPS request through proxy with SoapClient object). (Dmitry) - + - SPL extension: . Fixed bug #53362 (Segmentation fault when extending SplFixedArray). (Felipe) . Fixed bug #53279 (SplFileObject doesn't initialise default CSV escape @@ -1585,7 +1636,7 @@ PHP NEWS . Fixed bug #53144 (Segfault in SplObjectStorage::removeAll()). (Felipe) . Fixed bug #53071 (SPLObjectStorage defeats gc_collect_cycles). (Gustavo) . Fixed bug #52573 (SplFileObject::fscanf Segmentation fault). (Felipe) - . Fixed bug #51763 (SplFileInfo::getType() does not work symbolic link + . Fixed bug #51763 (SplFileInfo::getType() does not work symbolic link and directory). (Pierre) . Fixed bug #50481 (Storing many SPLFixedArray in an array crashes). (Felipe) . Fixed bug #50579 (RegexIterator::REPLACE doesn't work). (Felipe) @@ -1593,7 +1644,7 @@ PHP NEWS - SQLite3 extension: . Fixed bug #53463 (sqlite3 columnName() segfaults on bad column_number). (Felipe) - + - Streams: . Fixed forward stream seeking emulation in streams that don't support seeking in situations where the read operation gives back less data than requested @@ -1612,7 +1663,7 @@ PHP NEWS - WDDX extension: . Fixed bug #52468 (wddx_deserialize corrupts integer field value when left empty). (Felipe) - + - Zlib extension: . Fixed bug #52926 (zlib fopen wrapper does not use context). (Gustavo) @@ -1620,11 +1671,11 @@ PHP NEWS - Upgraded bundled sqlite to version 3.6.23.1. (Ilia) - Upgraded bundled PCRE to version 8.02. (Ilia) -- Added support for JSON_NUMERIC_CHECK option in json_encode() that converts +- Added support for JSON_NUMERIC_CHECK option in json_encode() that converts numeric strings to integers. (Ilia) - Added stream_set_read_buffer, allows to set the buffer for read operation. (Pierre) -- Added stream filter support to mcrypt extension (ported from +- Added stream filter support to mcrypt extension (ported from mcrypt_filter). (Stas) - Added full_special_chars filter to ext/filter. (Rasmus) - Added backlog socket context option for stream_socket_server(). (Mike) @@ -1633,10 +1684,10 @@ PHP NEWS Made implicit use of NULL IV a warning. (Sara) - Added openssl_cipher_iv_length(). (Sara) - Added FastCGI Process Manager (FPM) SAPI. (Tony) -- Added recent Windows versions to php_uname and fix undefined windows +- Added recent Windows versions to php_uname and fix undefined windows version support. (Pierre) - Added Berkeley DB 5 support to the DBA extension. (Johannes, Chris Jones) -- Added support for copy to/from array/file for pdo_pgsql extension. +- Added support for copy to/from array/file for pdo_pgsql extension. (Denis Gasparin, Ilia) - Added inTransaction() method to PDO, with specialized support for Postgres. (Ilia, Denis Gasparin) @@ -1656,7 +1707,7 @@ PHP NEWS Reported by Stefan Esser. (Andrey) - Fixed very rare memory leak in mysqlnd, when binding thousands of columns. (Andrey) -- Fixed a crash when calling an inexistent method of a class that inherits +- Fixed a crash when calling an inexistent method of a class that inherits PDOStatement if instantiated directly instead of doing by the PDO methods. (Felipe) @@ -1675,15 +1726,15 @@ PHP NEWS (Dmitry) - Fixed a possible memory corruption in pack(). Reported by Stefan Esser. (Dmitry) -- Fixed a possible memory corruption in substr_replace(). Reported by Stefan +- Fixed a possible memory corruption in substr_replace(). Reported by Stefan Esser. (Dmitry) -- Fixed a possible memory corruption in addcslashes(). Reported by Stefan +- Fixed a possible memory corruption in addcslashes(). Reported by Stefan Esser. (Dmitry) -- Fixed a possible stack exhaustion inside fnmatch(). Reported by Stefan +- Fixed a possible stack exhaustion inside fnmatch(). Reported by Stefan Esser. (Ilia) - Fixed a possible dechunking filter buffer overflow. Reported by Stefan Esser. (Pierre) -- Fixed a possible arbitrary memory access inside sqlite extension. Reported +- Fixed a possible arbitrary memory access inside sqlite extension. Reported by Mateusz Kocielski. (Ilia) - Fixed string format validation inside phar extension. Reported by Stefan Esser. (Ilia) @@ -1706,7 +1757,7 @@ PHP NEWS - Fixed bug #52193 (converting closure to array yields empty array). (Felipe) - Fixed bug #52183 (Reflectionfunction reports invalid number of arguments for function aliases). (Felipe) -- Fixed bug #52162 (custom request header variables with numbers are removed). +- Fixed bug #52162 (custom request header variables with numbers are removed). (Sriram Natarajan) - Fixed bug #52160 (Invalid E_STRICT redefined constructor error). (Felipe) - Fixed bug #52138 (Constants are parsed into the ini file for section names). @@ -1718,15 +1769,15 @@ PHP NEWS - Fixed bug #52082 (character_set_client & character_set_connection reset after mysqli_change_user()). (Andrey) - Fixed bug #52043 (GD doesn't recognize latest libJPEG versions). - (php at group dot apple dot com, Pierre) + (php at group dot apple dot com, Pierre) - Fixed bug #52041 (Memory leak when writing on uninitialized variable returned from function). (Dmitry) - Fixed bug #52060 (Memory leak when passing a closure to method_exists()). (Felipe) - Fixed bug #52057 (ReflectionClass fails on Closure class). (Felipe) -- Fixed bug #52051 (handling of case sensitivity of old-style constructors +- Fixed bug #52051 (handling of case sensitivity of old-style constructors changed in 5.3+). (Felipe) -- Fixed bug #52037 (Concurrent builds fail in install-programs). (seanius at +- Fixed bug #52037 (Concurrent builds fail in install-programs). (seanius at debian dot org, Kalle) - Fixed bug #52019 (make lcov doesn't support TESTS variable anymore). (Patrick) - Fixed bug #52010 (open_basedir restrictions mismatch on vacuum command). @@ -1734,7 +1785,7 @@ PHP NEWS - Fixed bug #52001 (Memory allocation problems after using variable variables). (Dmitry) - Fixed bug #51991 (spl_autoload and *nix support with namespace). (Felipe) -- Fixed bug #51943 (AIX: Several files are out of ANSI spec). (Kalle, +- Fixed bug #51943 (AIX: Several files are out of ANSI spec). (Kalle, coreystup at gmail dot com) - Fixed bug #51911 (ReflectionParameter::getDefaultValue() memory leaks with constant array). (Felipe) @@ -1799,7 +1850,7 @@ PHP NEWS - Fixed bug #51435 (Missing ifdefs / logic bug in crypt code cause compile errors). (Felipe) - Fixed bug #51424 (crypt() function hangs after 3rd call). (Pierre, Sriram) -- Fixed bug #51394 (Error line reported incorrectly if error handler throws an +- Fixed bug #51394 (Error line reported incorrectly if error handler throws an exception). (Stas) - Fixed bug #51393 (DateTime::createFromFormat() fails if format string contains timezone). (Adam) @@ -1818,15 +1869,15 @@ PHP NEWS - Fixed bug #51242 (Empty mysql.default_port does not default to 3306 anymore, but 0). (Adam) - Fixed bug #51237 (milter SAPI crash on startup). (igmar at palsenberg dot com) -- Fixed bug #51213 (pdo_mssql is trimming value of the money column). (Ilia, +- Fixed bug #51213 (pdo_mssql is trimming value of the money column). (Ilia, alexr at oplot dot com) -- Fixed bug #51190 (ftp_put() returns false when transfer was successful). +- Fixed bug #51190 (ftp_put() returns false when transfer was successful). (Ilia) - Fixed bug #51183 (ext/date/php_date.c fails to compile with Sun Studio). (Sriram Natarajan) - Fixed bug #51176 (Static calling in non-static method behaves like $this->). (Felipe) -- Fixed bug #51171 (curl_setopt() doesn't output any errors or warnings when +- Fixed bug #51171 (curl_setopt() doesn't output any errors or warnings when an invalid option is provided). (Ilia) - Fixed bug #51128 (imagefill() doesn't work with large images). (Pierre) - Fixed bug #51096 ('last day' and 'first day' are handled incorrectly when @@ -1846,7 +1897,7 @@ PHP NEWS if defined in WSDL). (mephius at gmail dot com) - Fixed bug #50731 (Inconsistent namespaces sent to functions registered with spl_autoload_register). (Felipe) -- Fixed bug #50563 (removing E_WARNING from parse_url). (ralph at smashlabs dot +- Fixed bug #50563 (removing E_WARNING from parse_url). (ralph at smashlabs dot com, Pierre) - Fixed bug #50578 (incorrect shebang in phar.phar). (Fedora at FamilleCollet dot com) @@ -1895,7 +1946,7 @@ PHP NEWS (vincent at optilian dot com) - Fixed bug #43233 (sasl support for ldap on Windows). (Pierre) - Fixed bug #35673 (formatOutput does not work with saveHTML). (Rob) -- Fixed bug #33210 (getimagesize() fails to detect width/height on certain +- Fixed bug #33210 (getimagesize() fails to detect width/height on certain JPEGs). (Ilia) 04 Mar 2010, PHP 5.3.2 @@ -1918,7 +1969,7 @@ PHP NEWS setting it to 0. (Rasmus) - Changed tidyNode class to disallow manual node creation. (Pierrick) -- Removed automatic file descriptor unlocking happening on shutdown and/or +- Removed automatic file descriptor unlocking happening on shutdown and/or stream close (on all OSes). (Tony, Ilia) - Added libpng 1.4.0 support. (Pierre) @@ -1976,7 +2027,7 @@ PHP NEWS versions). (Derick) - Fixed bug #50907 (X-PHP-Originating-Script adding two new lines in *NIX). (Ilia) -- Fixed bug #50859 (build fails with openssl 1.0 due to md2 deprecation). +- Fixed bug #50859 (build fails with openssl 1.0 due to md2 deprecation). (Ilia, hanno at hboeck dot de) - Fixed bug #50847 (strip_tags() removes all tags greater then 1023 bytes long). (Ilia) @@ -2011,7 +2062,7 @@ PHP NEWS and DomDocument). (Dmitry) - Fixed bug #50508 (compile failure: Conflicting HEADER type declarations). (Jani) -- Fixed bug #50496 (Use of <stdbool.h> is valid only in a c99 compilation +- Fixed bug #50496 (Use of <stdbool.h> is valid only in a c99 compilation environment. (Sriram) - Fixed bug #50464 (declare encoding doesn't work within an included file). (Felipe) @@ -2033,7 +2084,7 @@ PHP NEWS (Ilia, Pierrick) - Fixed bug #50285 (xmlrpc does not preserve keys in encoded indexed arrays). (Felipe) -- Fixed bug #50282 (xmlrpc_encode_request() changes object into array in +- Fixed bug #50282 (xmlrpc_encode_request() changes object into array in calling function). (Felipe) - Fixed bug #50267 (get_browser(null) does not use HTTP_USER_AGENT). (Jani) - Fixed bug #50266 (conflicting types for llabs). (Jani) @@ -2053,7 +2104,7 @@ PHP NEWS (tcallawa at redhat dot com) - Fixed bug #50207 (segmentation fault when concatenating very large strings on 64bit linux). (Ilia) -- Fixed bug #50196 (stream_copy_to_stream() produces warning when source is +- Fixed bug #50196 (stream_copy_to_stream() produces warning when source is not file). (Stas) - Fixed bug #50195 (pg_copy_to() fails when table name contains schema. (Ilia) - Fixed bug #50185 (ldap_get_entries() return false instead of an empty array @@ -2081,7 +2132,7 @@ PHP NEWS - Fixed bug #49990 (SNMP3 warning message about security level printed twice). (Jani) - Fixed bug #49985 (pdo_pgsql prepare() re-use previous aborted - transaction). (ben dot pineau at gmail dot com, Ilia, Matteo) + transaction). (ben dot pineau at gmail dot com, Ilia, Matteo) - Fixed bug #49938 (Phar::isBuffering() returns inverted value). (Greg) - Fixed bug #49936 (crash with ftp stream in php_stream_context_get_option()). (Pierrick) @@ -2089,7 +2140,7 @@ PHP NEWS - Fixed bug #49866 (Making reference on string offsets crashes PHP). (Dmitry) - Fixed bug #49855 (import_request_variables() always returns NULL). (Ilia, sjoerd at php dot net) -- Fixed bug #49851, #50451 (http wrapper breaks on 1024 char long headers). +- Fixed bug #49851, #50451 (http wrapper breaks on 1024 char long headers). (Ilia) - Fixed bug #49800 (SimpleXML allow (un)serialize() calls without warning). (Ilia, wmeler at wp-sa dot pl) @@ -2139,7 +2190,7 @@ PHP NEWS - Upgraded bundled sqlite to version 3.6.19. (Scott) - Updated timezone database to version 2009.17 (2009q). (Derick) -- Changed ini file directives [PATH=](on Win32) and [HOST=](on all) to be case +- Changed ini file directives [PATH=](on Win32) and [HOST=](on all) to be case insensitive. (garretts) - Restored shebang line check to CGI sapi (not checked by scanner anymore). @@ -2154,7 +2205,7 @@ PHP NEWS - Added support for ACL on Windows for thread safe SAPI (Apache2 for example) and fix its support on NTS. (Pierre) -- Improved symbolic, mounted volume and junctions support for realpath on +- Improved symbolic, mounted volume and junctions support for realpath on Windows. (Pierre) - Improved readlink on Windows, suppress \??\ and use the drive syntax only. (Pierre) @@ -2166,9 +2217,9 @@ PHP NEWS API. (Scott) - Fixed crash in com_print_typeinfo when an invalid typelib is given. (Pierre) -- Fixed a safe_mode bypass in tempnam() identified by Grzegorz Stachowiak. +- Fixed a safe_mode bypass in tempnam() identified by Grzegorz Stachowiak. (Rasmus) -- Fixed a open_basedir bypass in posix_mkfifo() identified by Grzegorz +- Fixed a open_basedir bypass in posix_mkfifo() identified by Grzegorz Stachowiak. (Rasmus) - Fixed certificate validation inside php_openssl_apply_verification_policy (Ryan Sleevi, Ilia) @@ -2190,7 +2241,7 @@ PHP NEWS (Maksymilian Arciemowicz, Stas) - Fixed signature generation/validation for zip archives in ext/phar. (Greg) - Fixed memory leak in stream_is_local(). (Felipe, Tony) -- Fixed BC break in mime_content_type(), removes the content encoding. (Scott) +- Fixed BC break in mime_content_type(), removes the content encoding. (Scott) - Fixed PECL bug #16842 (oci_error return false when NO_DATA_FOUND is raised). (Chris Jones) @@ -2223,7 +2274,7 @@ PHP NEWS fclose). (Ilia) - Fixed bug #49470 (FILTER_SANITIZE_EMAIL allows disallowed characters). (Ilia) -- Fixed bug #49447 (php engine need to correctly check for socket API +- Fixed bug #49447 (php engine need to correctly check for socket API return status on windows). (Sriram Natarajan) - Fixed bug #49391 (ldap.c utilizing deprecated ldap_modify_s). (Ilia) - Fixed bug #49372 (segfault in php_curl_option_curl). (Pierre) @@ -2258,7 +2309,7 @@ PHP NEWS - Fixed bug #49074 (private class static fields can be modified by using reflection). (Jani) - Fixed bug #49072 (feof never returns true for damaged file in zip). (Pierre) -- Fixed bug #49065 ("disable_functions" php.ini option does not work on +- Fixed bug #49065 ("disable_functions" php.ini option does not work on Zend extensions). (Stas) - Fixed bug #49064 (--enable-session=shared does not work: undefined symbol: php_url_scanner_reset_vars). (Jani) @@ -2281,7 +2332,7 @@ PHP NEWS in a chunk). (andreas dot streichardt at globalpark dot com, Ilia) - Fixed bug #49012 (phar tar signature algorithm reports as Unknown (0) in getSignature() call). (Greg) -- Fixed bug #49000 (PHP CLI in Interactive mode (php -a) crashes +- Fixed bug #49000 (PHP CLI in Interactive mode (php -a) crashes when including files from function). (Stas) - Fixed bug #48994 (zlib.output_compression does not output HTTP headers when set to a string value). (Jani) @@ -2310,10 +2361,10 @@ PHP NEWS - Fixed bug #48783 (make install will fail saying phar file exists). (Greg) - Fixed bug #48774 (SIGSEGVs when using curl_copy_handle()). (Sriram Natarajan) -- Fixed bug #48771 (rename() between volumes fails and reports no error on +- Fixed bug #48771 (rename() between volumes fails and reports no error on Windows). (Pierre) - Fixed bug #48768 (parse_ini_*() crash with INI_SCANNER_RAW). (Jani) -- Fixed bug #48763 (ZipArchive produces corrupt archive). (dani dot church at +- Fixed bug #48763 (ZipArchive produces corrupt archive). (dani dot church at gmail dot com, Pierre) - Fixed bug #48762 (IPv6 address filter still rejects valid address). (Felipe) - Fixed bug #48757 (ReflectionFunction::invoke() parameter issues). (Kalle) @@ -2330,7 +2381,7 @@ PHP NEWS files that have been opened with r+). (Ilia) - Fixed bug #48719 (parse_ini_*(): scanner_mode parameter is not checked for sanity). (Jani) -- Fixed bug #48718 (FILTER_VALIDATE_EMAIL does not allow numbers in domain +- Fixed bug #48718 (FILTER_VALIDATE_EMAIL does not allow numbers in domain components). (Ilia) - Fixed bug #48681 (openssl signature verification for tar archives broken). (Greg) @@ -2353,7 +2404,7 @@ PHP NEWS - Fixed bug #48189 (ibase_execute error in return param). (Kalle) - Fixed bug #48182 (ssl handshake fails during asynchronous socket connection). (Sriram Natarajan) -- Fixed bug #48116 (Fixed build with Openssl 1.0). (Pierre, +- Fixed bug #48116 (Fixed build with Openssl 1.0). (Pierre, Al dot Smith at aeschi dot ch dot eu dot org) - Fixed bug #48057 (Only the date fields of the first row are fetched, others are empty). (info at programmiernutte dot net) @@ -2378,10 +2429,10 @@ PHP NEWS com, Kalle) - Fixed bug #40013 (php_uname() does not return nodename on Netware (Guenter Knauf) -- Fixed bug #38091 (Mail() does not use FQDN when sending SMTP helo). +- Fixed bug #38091 (Mail() does not use FQDN when sending SMTP helo). (Kalle, Rick Yorgason) - Fixed bug #28038 (Sent incorrect RCPT TO commands to SMTP server) (Garrett) -- Fixed bug #27051 (Impersonation with FastCGI does not exec process as +- Fixed bug #27051 (Impersonation with FastCGI does not exec process as impersonated user). (Pierre) @@ -2505,17 +2556,17 @@ PHP NEWS value. (Hannes) - Improved Windows support: - . Update all libraries to their latest stable version. (Pierre, Rob, Liz, + . Update all libraries to their latest stable version. (Pierre, Rob, Liz, Garrett). . Added Windows support for stat(), touch(), filemtime(), filesize() and related functions. (Pierre) . Re-added socket_create_pair() for Windows in sockets extension. (Kalle) - . Added inet_pton() and inet_ntop() also for Windows platforms. + . Added inet_pton() and inet_ntop() also for Windows platforms. (Kalle, Pierre) . Added mcrypt_create_iv() for Windows platforms. (Pierre) . Added ACL Cache support on Windows. (Kanwaljeet Singla, Pierre, Venkat Raman Don) - . Added constants based on Windows' GetVersionEx information. + . Added constants based on Windows' GetVersionEx information. PHP_WINDOWS_VERSION_* and PHP_WINDOWS_NT_*. (Pierre) . Added support for ACL (is_writable, is_readable, reports now correct results) on Windows. (Pierre, Venkat Raman Don, Kanwaljeet Singla) @@ -2703,7 +2754,7 @@ PHP NEWS DateInterval on each iteration, up to an end date or limited by maximum number of occurences. -- Added compatibility mode in GD, imagerotate, image(filled)ellipse +- Added compatibility mode in GD, imagerotate, image(filled)ellipse imagefilter, imageconvolution and imagecolormatch are now always enabled. (Pierre) - Added array_replace() and array_replace_recursive() functions. (Matt) @@ -2745,12 +2796,12 @@ PHP NEWS - Added support for CP850 encoding in mbstring extension. (Denis Giffeler, Moriyoshi) - Added stream_cast() and stream_set_options() to user-space stream wrappers, - allowing stream_select(), stream_set_blocking(), stream_set_timeout() and + allowing stream_select(), stream_set_blocking(), stream_set_timeout() and stream_set_write_buffer() to work with user-space stream wrappers. (Arnaud) - Added header_remove() function. (chsc at peytz dot dk, Arnaud) - Added stream_context_get_params() function. (Arnaud) - Added optional parameter "new" to sybase_connect(). (Timm) -- Added parse_ini_string() function. (grange at lemonde dot fr, Arnaud) +- Added parse_ini_string() function. (grange at lemonde dot fr, Arnaud) - Added str_getcsv() function. (Sara) - Added openssl_random_pseudo_bytes() function. (Scott) - Added ability to send user defined HTTP headers with SOAP request. @@ -2827,7 +2878,7 @@ PHP NEWS prepending functions). (Scott) - Fixed bug #48215 (Calling a method with the same name as the parent class calls the constructor). (Scott) -- Fixed bug #48200 (compile failure with mbstring.c when +- Fixed bug #48200 (compile failure with mbstring.c when --enable-zend-multibyte is used). (Jani) - Fixed bug #48188 (Cannot execute a scrollable cursors twice with PDO_PGSQL). (Matteo) @@ -2959,7 +3010,7 @@ PHP NEWS - Fixed bug #46042 (memory leaks with reflection of mb_convert_encoding()). (Ilia) - Fixed bug #46039 (ArrayObject iteration is slow). (Arnaud) -- Fixed bug #46033 (Direct instantiation of SQLite3stmt and SQLite3result cause +- Fixed bug #46033 (Direct instantiation of SQLite3stmt and SQLite3result cause a segfault.) (Scott) - Fixed bug #45991 (Ini files with the UTF-8 BOM are treated as invalid). (Scott) @@ -3035,7 +3086,7 @@ PHP NEWS - Added support for Sun CC (FR #46595 and FR #46513). (David Soria Parra) - Changed default value of array_unique()'s optional sorting type parameter - back to SORT_STRING to fix backwards compatibility breakage introduced in + back to SORT_STRING to fix backwards compatibility breakage introduced in PHP 5.2.9. (Moriyoshi) - Fixed memory corruptions while reading properties of zip files. (Ilia) @@ -3068,7 +3119,7 @@ PHP NEWS files). (Pierre) - Fixed bug #48359 (Script hangs on snmprealwalk if OID is not increasing). (Ilia, simonov at gmail dot com) -- Fixed bug #48336 (ReflectionProperty::getDeclaringClass() does not work +- Fixed bug #48336 (ReflectionProperty::getDeclaringClass() does not work with redeclared property). (patch by Markus dot Lidel at shadowconnect dot com) - Fixed bug #48326 (constant MSG_DONTWAIT not defined). (Arnaud) @@ -3113,7 +3164,7 @@ PHP NEWS - Fixed bug #47969 (ezmlm_hash() returns different values depend on OS). (Ilia) - Fixed bug #47946 (ImageConvolution overwrites background). (Ilia) - Fixed bug #47940 (memory leaks in imap_body). (Pierre, Jake Levitt) -- Fixed bug #47937 (system() calls sapi_flush() regardless of output +- Fixed bug #47937 (system() calls sapi_flush() regardless of output buffering). (Ilia) - Fixed bug #47903 ("@" operator does not work with string offsets). (Felipe) - Fixed bug #47893 (CLI aborts on non blocking stdout). (Arnaud) @@ -3187,7 +3238,7 @@ PHP NEWS - Fixed bug #45092 (header HTTP context option not being used when compiled using --with-curlwrappers). (Jani) - Fixed bug #44996 (xmlrpc_decode() ignores time zone on iso8601.datetime). - (Ilia, kawai at apache dot org) + (Ilia, kawai at apache dot org) - Fixed bug #44827 (define() is missing error checks for class constants). (Ilia) - Fixed bug #44214 (Crash using preg_replace_callback() and global variables). @@ -3212,7 +3263,7 @@ PHP NEWS - Added optional sorting type flag parameter to array_unique(). Default is SORT_REGULAR. (Andrei) -- Fixed a crash on extract in zip when files or directories entry names contain +- Fixed a crash on extract in zip when files or directories entry names contain a relative path. (Pierre) - Fixed error conditions handling in stream_filter_append(). (Arnaud) - Fixed zip filename property read. (Pierre) @@ -3314,11 +3365,11 @@ PHP NEWS - Added logging option for error_log to send directly to SAPI. (Stas) - Added PHP_MAJOR_VERSION, PHP_MINOR_VERSION, PHP_RELEASE_VERSION, PHP_EXTRA_VERSION, PHP_VERSION_ID, PHP_ZTS and PHP_DEBUG constants. (Pierre) -- Added "PHP_INI_SCAN_DIR" environment variable which can be used to +- Added "PHP_INI_SCAN_DIR" environment variable which can be used to either disable or change the compile time ini scan directory (FR #45114). (Jani) -- Fixed missing initialization of BG(page_uid) and BG(page_gid), +- Fixed missing initialization of BG(page_uid) and BG(page_gid), reported by Maksymilian Arciemowicz. (Stas) - Fixed memory leak inside sqlite_create_aggregate(). (Felipe) - Fixed memory leak inside PDO sqlite's sqliteCreateAggregate() method. @@ -3334,7 +3385,7 @@ PHP NEWS - Fixed a bug inside dba_replace() that could cause file truncation withinvalid keys. (Ilia) - Fixed memory leak inside readline_callback_handler_install() function.(Ilia) -- Fixed memory leak inside readline_completion_function() function. (Felipe) +- Fixed memory leak inside readline_completion_function() function. (Felipe) - Fixed stream_get_contents() when using $maxlength and socket is notclosed. indeyets [at] php [dot] net on #46049. (Arnaud) - Fixed stream_get_line() to behave as documented on non-blocking streams. @@ -3463,7 +3514,7 @@ PHP NEWS - Fixed bug #45765 (ReflectionObject with default parameters of self::xxx cause an error). (Felipe) - Fixed bug #45751 (Using auto_prepend_file crashes (out of scope stack address - use)). (basant dot kukreja at sun dot com) + use)). (basant dot kukreja at sun dot com) - Fixed bug #45722 (mb_check_encoding() crashes). (Moriyoshi) - Fixed bug #45705 (rfc822_parse_adrlist() modifies passed address parameter). (Jani) @@ -3613,7 +3664,7 @@ PHP NEWS 01 May 2008, PHP 5.2.6 - Fixed two possible crashes inside posix extension (Tony) -- Fixed incorrect heredoc handling when label is used within the block. +- Fixed incorrect heredoc handling when label is used within the block. (Matt) - Fixed possible stack buffer overflow in FastCGI SAPI. (Andrei Nigmatulin) - Fixed sending of uninitialized paddings which may contain some information. (Andrei Nigmatulin) diff --git a/Zend/tests/bug34199.phpt b/Zend/tests/bug34199.phpt index daae0deb3..3012d808f 100755 --- a/Zend/tests/bug34199.phpt +++ b/Zend/tests/bug34199.phpt @@ -1,7 +1,7 @@ --TEST-- Bug #34199 (if($obj)/if(!$obj) inconsistency because of cast handler) --SKIPIF-- -<?php if (!extension_loaded("simplexml")) print "skip"; ?> +<?php if (!extension_loaded("simplexml")) print "skip SimpleXML extension required"; ?> --FILE-- <?php $xml = "<root></root>"; diff --git a/Zend/tests/bug39602.phpt b/Zend/tests/bug39602.phpt index daa10e4fd..db8763d8a 100755 --- a/Zend/tests/bug39602.phpt +++ b/Zend/tests/bug39602.phpt @@ -1,7 +1,7 @@ --TEST-- Bug #39602 (Invalid session.save_handler crashes PHP) --SKIPIF-- -<?php if (!extension_loaded("session")) die("skip"); ?> +<?php if (!extension_loaded("session")) die("skip session extension required"); ?> --INI-- session.save_handler=qwerty error_reporting=0 diff --git a/Zend/tests/bug42819.phpt b/Zend/tests/bug42819.phpt index f4387eb93..e52660369 100755 --- a/Zend/tests/bug42819.phpt +++ b/Zend/tests/bug42819.phpt @@ -1,7 +1,7 @@ --TEST-- Bug #42819 (namespaces in indexes of constant arrays) --SKIPIF-- -<?php if (!extension_loaded("spl")) print "skip"; ?> +<?php if (!extension_loaded("spl")) print "skip SPL extension required"; ?> --FILE-- <?php namespace foo\foo; diff --git a/Zend/tests/bug43918.phpt b/Zend/tests/bug43918.phpt index c76ce83de..e3389818b 100644 --- a/Zend/tests/bug43918.phpt +++ b/Zend/tests/bug43918.phpt @@ -1,7 +1,7 @@ --TEST-- Bug #43918 (Segmentation fault in garbage collector) --SKIPIF-- -<?php if (!extension_loaded("simplexml")) print "skip"; ?> +<?php if (!extension_loaded("simplexml")) print "skip SimpleXML extension required"; ?> --FILE-- <?php $xmlstr = <<<XML diff --git a/Zend/tests/bug50174.phpt b/Zend/tests/bug50174.phpt index fef65136b..ac2ad2cb8 100644 --- a/Zend/tests/bug50174.phpt +++ b/Zend/tests/bug50174.phpt @@ -1,7 +1,7 @@ --TEST-- Bug #50174 (Incorrectly matched docComment) --SKIPIF-- -<?php if (!extension_loaded('reflection') || !extension_loaded('spl')) print "skip"; ?> +<?php if (!extension_loaded('reflection') || !extension_loaded('spl')) print "skip SPL and reflection extensions required"; ?> --FILE-- <?php diff --git a/Zend/tests/bug61095.phpt b/Zend/tests/bug61095.phpt new file mode 100644 index 000000000..4ca196cd1 --- /dev/null +++ b/Zend/tests/bug61095.phpt @@ -0,0 +1,9 @@ +--TEST-- +Bug #61095 (Lexing 0x00*+<NUM> incorectly) +--FILE-- +<?php +echo 0x00+2; +echo "\n"; +?> +--EXPECT-- +2 diff --git a/Zend/tests/gc_024.phpt b/Zend/tests/gc_024.phpt index a139e95da..9a2ceb88f 100644 --- a/Zend/tests/gc_024.phpt +++ b/Zend/tests/gc_024.phpt @@ -3,7 +3,7 @@ GC 024: GC and objects with non-standard handlers --INI-- zend.enable_gc=1 --SKIPIF-- -<?php if (!extension_loaded("spl")) print "skip"; ?> +<?php if (!extension_loaded("spl")) print "skip SPL extension required"; ?> --FILE-- <?php $a = new ArrayObject(); diff --git a/Zend/tests/unset_cv10.phpt b/Zend/tests/unset_cv10.phpt index 0eb41922c..3b943d8b6 100644 --- a/Zend/tests/unset_cv10.phpt +++ b/Zend/tests/unset_cv10.phpt @@ -1,7 +1,7 @@ --TEST-- unset() CV 10 (unset() of global variable in ArrayObject::offsetUnset($GLOBALS)) --SKIPIF-- -<?php if (!extension_loaded("spl")) print "skip"; ?> +<?php if (!extension_loaded("spl")) print "skip SPL extension required"; ?> --FILE-- <?php $a = new ArrayObject($GLOBALS); diff --git a/Zend/zend_language_scanner.c b/Zend/zend_language_scanner.c index 17beb6e61..2d0406794 100644 --- a/Zend/zend_language_scanner.c +++ b/Zend/zend_language_scanner.c @@ -1,4 +1,4 @@ -/* Generated by re2c 0.13.5 on Mon Jan 16 14:45:55 2012 */ +/* Generated by re2c 0.13.5 on Wed Feb 15 17:48:20 2012 */ #line 1 "Zend/zend_language_scanner.l" /* +----------------------------------------------------------------------+ @@ -23,7 +23,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: zend_language_scanner.c 322380 2012-01-17 08:11:32Z dmitry $ */ +/* $Id: zend_language_scanner.c 323394 2012-02-20 18:28:57Z colder $ */ #if 0 # define YYDEBUG(s, c) printf("state: %d char: %c\n", s, c) @@ -1090,7 +1090,7 @@ yyc_INITIAL: yy3: YYDEBUG(3, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1775 "Zend/zend_language_scanner.l" +#line 1779 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { return 0; @@ -1168,7 +1168,7 @@ yy5: yy6: YYDEBUG(6, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1763 "Zend/zend_language_scanner.l" +#line 1767 "Zend/zend_language_scanner.l" { if (CG(short_tags)) { zendlval->value.str.val = yytext; /* no copying - intentional */ @@ -1187,7 +1187,7 @@ yy7: if ((yych = *YYCURSOR) == '=') goto yy43; YYDEBUG(8, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1740 "Zend/zend_language_scanner.l" +#line 1744 "Zend/zend_language_scanner.l" { if (CG(asp_tags)) { zendlval->value.str.val = yytext; /* no copying - intentional */ @@ -1385,7 +1385,7 @@ yy35: ++YYCURSOR; YYDEBUG(38, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1700 "Zend/zend_language_scanner.l" +#line 1704 "Zend/zend_language_scanner.l" { YYCTYPE *bracket = (YYCTYPE*)zend_memrchr(yytext, '<', yyleng - (sizeof("script language=php>") - 1)); @@ -1429,7 +1429,7 @@ yy43: ++YYCURSOR; YYDEBUG(44, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1718 "Zend/zend_language_scanner.l" +#line 1722 "Zend/zend_language_scanner.l" { if (CG(asp_tags)) { zendlval->value.str.val = yytext; /* no copying - intentional */ @@ -1447,7 +1447,7 @@ yy45: ++YYCURSOR; YYDEBUG(46, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1731 "Zend/zend_language_scanner.l" +#line 1735 "Zend/zend_language_scanner.l" { zendlval->value.str.val = yytext; /* no copying - intentional */ zendlval->value.str.len = yyleng; @@ -1482,7 +1482,7 @@ yy50: yy51: YYDEBUG(51, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1753 "Zend/zend_language_scanner.l" +#line 1757 "Zend/zend_language_scanner.l" { zendlval->value.str.val = yytext; /* no copying - intentional */ zendlval->value.str.len = yyleng; @@ -1562,7 +1562,7 @@ yyc_ST_BACKQUOTE: yy56: YYDEBUG(56, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2226 "Zend/zend_language_scanner.l" +#line 2230 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { return 0; @@ -1614,7 +1614,7 @@ yy58: ++YYCURSOR; YYDEBUG(59, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2170 "Zend/zend_language_scanner.l" +#line 2174 "Zend/zend_language_scanner.l" { BEGIN(ST_IN_SCRIPTING); return '`'; @@ -1629,7 +1629,7 @@ yy61: ++YYCURSOR; YYDEBUG(62, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2157 "Zend/zend_language_scanner.l" +#line 2161 "Zend/zend_language_scanner.l" { zendlval->value.lval = (long) '{'; yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); @@ -1652,7 +1652,7 @@ yy63: yy65: YYDEBUG(65, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1857 "Zend/zend_language_scanner.l" +#line 1861 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, (yytext+1), (yyleng-1)); zendlval->type = IS_STRING; @@ -1683,7 +1683,7 @@ yy70: ++YYCURSOR; YYDEBUG(71, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1849 "Zend/zend_language_scanner.l" +#line 1853 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); yy_push_state(ST_VAR_OFFSET TSRMLS_CC); @@ -1709,7 +1709,7 @@ yy73: ++YYCURSOR; YYDEBUG(74, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1839 "Zend/zend_language_scanner.l" +#line 1843 "Zend/zend_language_scanner.l" { yyless(yyleng - 3); yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC); @@ -1785,7 +1785,7 @@ yy77: yy78: YYDEBUG(78, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2176 "Zend/zend_language_scanner.l" +#line 2180 "Zend/zend_language_scanner.l" { if (GET_DOUBLE_QUOTES_SCANNED_LENGTH()) { YYCURSOR += GET_DOUBLE_QUOTES_SCANNED_LENGTH() - 1; @@ -1845,7 +1845,7 @@ yy80: ++YYCURSOR; YYDEBUG(81, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2165 "Zend/zend_language_scanner.l" +#line 2169 "Zend/zend_language_scanner.l" { BEGIN(ST_IN_SCRIPTING); return '"'; @@ -1860,7 +1860,7 @@ yy83: ++YYCURSOR; YYDEBUG(84, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2157 "Zend/zend_language_scanner.l" +#line 2161 "Zend/zend_language_scanner.l" { zendlval->value.lval = (long) '{'; yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); @@ -1883,7 +1883,7 @@ yy85: yy87: YYDEBUG(87, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1857 "Zend/zend_language_scanner.l" +#line 1861 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, (yytext+1), (yyleng-1)); zendlval->type = IS_STRING; @@ -1914,7 +1914,7 @@ yy92: ++YYCURSOR; YYDEBUG(93, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1849 "Zend/zend_language_scanner.l" +#line 1853 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); yy_push_state(ST_VAR_OFFSET TSRMLS_CC); @@ -1940,7 +1940,7 @@ yy95: ++YYCURSOR; YYDEBUG(96, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1839 "Zend/zend_language_scanner.l" +#line 1843 "Zend/zend_language_scanner.l" { yyless(yyleng - 3); yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC); @@ -1959,7 +1959,7 @@ yyc_ST_END_HEREDOC: ++YYCURSOR; YYDEBUG(100, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2144 "Zend/zend_language_scanner.l" +#line 2148 "Zend/zend_language_scanner.l" { YYCURSOR += CG(heredoc_len) - 1; yyleng = CG(heredoc_len); @@ -2033,7 +2033,7 @@ yy103: yy104: YYDEBUG(104, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2268 "Zend/zend_language_scanner.l" +#line 2272 "Zend/zend_language_scanner.l" { int newline = 0; @@ -2119,7 +2119,7 @@ yy107: ++YYCURSOR; YYDEBUG(108, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2157 "Zend/zend_language_scanner.l" +#line 2161 "Zend/zend_language_scanner.l" { zendlval->value.lval = (long) '{'; yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); @@ -2142,7 +2142,7 @@ yy109: yy111: YYDEBUG(111, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1857 "Zend/zend_language_scanner.l" +#line 1861 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, (yytext+1), (yyleng-1)); zendlval->type = IS_STRING; @@ -2173,7 +2173,7 @@ yy116: ++YYCURSOR; YYDEBUG(117, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1849 "Zend/zend_language_scanner.l" +#line 1853 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); yy_push_state(ST_VAR_OFFSET TSRMLS_CC); @@ -2199,7 +2199,7 @@ yy119: ++YYCURSOR; YYDEBUG(120, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1839 "Zend/zend_language_scanner.l" +#line 1843 "Zend/zend_language_scanner.l" { yyless(yyleng - 3); yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC); @@ -2388,7 +2388,7 @@ yy123: yy124: YYDEBUG(124, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1880 "Zend/zend_language_scanner.l" +#line 1884 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, yytext, yyleng); zendlval->type = IS_STRING; @@ -2980,7 +2980,7 @@ yy175: yy176: YYDEBUG(176, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1887 "Zend/zend_language_scanner.l" +#line 1891 "Zend/zend_language_scanner.l" { while (YYCURSOR < YYLIMIT) { switch (*YYCURSOR++) { @@ -3021,7 +3021,7 @@ yy177: yy178: YYDEBUG(178, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1978 "Zend/zend_language_scanner.l" +#line 1982 "Zend/zend_language_scanner.l" { register char *s, *t; char *end; @@ -3096,7 +3096,7 @@ yy179: yy180: YYDEBUG(180, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2047 "Zend/zend_language_scanner.l" +#line 2051 "Zend/zend_language_scanner.l" { int bprefix = (yytext[0] != '"') ? 1 : 0; @@ -3143,7 +3143,7 @@ yy181: ++YYCURSOR; YYDEBUG(182, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2138 "Zend/zend_language_scanner.l" +#line 2142 "Zend/zend_language_scanner.l" { BEGIN(ST_BACKQUOTE); return '`'; @@ -3154,7 +3154,7 @@ yy183: ++YYCURSOR; YYDEBUG(184, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2396 "Zend/zend_language_scanner.l" +#line 2400 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { return 0; @@ -3190,7 +3190,7 @@ yy187: yy189: YYDEBUG(189, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1555 "Zend/zend_language_scanner.l" +#line 1559 "Zend/zend_language_scanner.l" { zendlval->value.dval = zend_strtod(yytext, NULL); zendlval->type = IS_DOUBLE; @@ -3333,7 +3333,11 @@ yy202: } if (len < SIZEOF_LONG * 2 || (len == SIZEOF_LONG * 2 && *hex <= '7')) { - zendlval->value.lval = strtol(hex, NULL, 16); + if (len == 0) { + zendlval->value.lval = 0; + } else { + zendlval->value.lval = strtol(hex, NULL, 16); + } zendlval->type = IS_LONG; return T_LNUMBER; } else { @@ -3342,7 +3346,7 @@ yy202: return T_DNUMBER; } } -#line 3346 "Zend/zend_language_scanner.c" +#line 3350 "Zend/zend_language_scanner.c" yy205: YYDEBUG(205, *YYCURSOR); ++YYCURSOR; @@ -3351,7 +3355,7 @@ yy205: yy206: YYDEBUG(206, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1955 "Zend/zend_language_scanner.l" +#line 1959 "Zend/zend_language_scanner.l" { zendlval->value.str.val = yytext; /* no copying - intentional */ zendlval->value.str.len = yyleng; @@ -3359,7 +3363,7 @@ yy206: BEGIN(INITIAL); return T_CLOSE_TAG; /* implicit ';' at php-end tag */ } -#line 3363 "Zend/zend_language_scanner.c" +#line 3367 "Zend/zend_language_scanner.c" yy207: YYDEBUG(207, *YYCURSOR); yych = *++YYCURSOR; @@ -3393,13 +3397,13 @@ yy209: yy211: YYDEBUG(211, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1857 "Zend/zend_language_scanner.l" +#line 1861 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, (yytext+1), (yyleng-1)); zendlval->type = IS_STRING; return T_VARIABLE; } -#line 3403 "Zend/zend_language_scanner.c" +#line 3407 "Zend/zend_language_scanner.c" yy212: YYDEBUG(212, *YYCURSOR); yych = *++YYCURSOR; @@ -3417,7 +3421,7 @@ yy213: { return T_LOGICAL_XOR; } -#line 3421 "Zend/zend_language_scanner.c" +#line 3425 "Zend/zend_language_scanner.c" yy215: YYDEBUG(215, *YYCURSOR); ++YYCURSOR; @@ -3430,7 +3434,7 @@ yy215: { return T_LOGICAL_OR; } -#line 3434 "Zend/zend_language_scanner.c" +#line 3438 "Zend/zend_language_scanner.c" yy217: YYDEBUG(217, *YYCURSOR); ++YYCURSOR; @@ -3440,7 +3444,7 @@ yy217: { return T_XOR_EQUAL; } -#line 3444 "Zend/zend_language_scanner.c" +#line 3448 "Zend/zend_language_scanner.c" yy219: YYDEBUG(219, *YYCURSOR); ++YYCURSOR; @@ -3450,7 +3454,7 @@ yy219: { return T_BOOLEAN_OR; } -#line 3454 "Zend/zend_language_scanner.c" +#line 3458 "Zend/zend_language_scanner.c" yy221: YYDEBUG(221, *YYCURSOR); ++YYCURSOR; @@ -3460,7 +3464,7 @@ yy221: { return T_OR_EQUAL; } -#line 3464 "Zend/zend_language_scanner.c" +#line 3468 "Zend/zend_language_scanner.c" yy223: YYDEBUG(223, *YYCURSOR); ++YYCURSOR; @@ -3470,7 +3474,7 @@ yy223: { return T_BOOLEAN_AND; } -#line 3474 "Zend/zend_language_scanner.c" +#line 3478 "Zend/zend_language_scanner.c" yy225: YYDEBUG(225, *YYCURSOR); ++YYCURSOR; @@ -3480,7 +3484,7 @@ yy225: { return T_AND_EQUAL; } -#line 3484 "Zend/zend_language_scanner.c" +#line 3488 "Zend/zend_language_scanner.c" yy227: YYDEBUG(227, *YYCURSOR); ++YYCURSOR; @@ -3489,7 +3493,7 @@ yy227: yy228: YYDEBUG(228, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1964 "Zend/zend_language_scanner.l" +#line 1968 "Zend/zend_language_scanner.l" { if (CG(asp_tags)) { BEGIN(INITIAL); @@ -3502,7 +3506,7 @@ yy228: return yytext[0]; } } -#line 3506 "Zend/zend_language_scanner.c" +#line 3510 "Zend/zend_language_scanner.c" yy229: YYDEBUG(229, *YYCURSOR); ++YYCURSOR; @@ -3512,7 +3516,7 @@ yy229: { return T_MOD_EQUAL; } -#line 3516 "Zend/zend_language_scanner.c" +#line 3520 "Zend/zend_language_scanner.c" yy231: YYDEBUG(231, *YYCURSOR); yych = *++YYCURSOR; @@ -3547,7 +3551,7 @@ yy235: { return T_CONCAT_EQUAL; } -#line 3551 "Zend/zend_language_scanner.c" +#line 3555 "Zend/zend_language_scanner.c" yy237: YYDEBUG(237, *YYCURSOR); yyaccept = 4; @@ -3556,7 +3560,7 @@ yy237: yy238: YYDEBUG(238, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1921 "Zend/zend_language_scanner.l" +#line 1925 "Zend/zend_language_scanner.l" { int doc_com; @@ -3590,7 +3594,7 @@ yy238: return T_COMMENT; } -#line 3594 "Zend/zend_language_scanner.c" +#line 3598 "Zend/zend_language_scanner.c" yy239: YYDEBUG(239, *YYCURSOR); yych = *++YYCURSOR; @@ -3604,7 +3608,7 @@ yy240: { return T_DIV_EQUAL; } -#line 3608 "Zend/zend_language_scanner.c" +#line 3612 "Zend/zend_language_scanner.c" yy242: YYDEBUG(242, *YYCURSOR); yych = *++YYCURSOR; @@ -3631,7 +3635,7 @@ yy245: { return T_MUL_EQUAL; } -#line 3635 "Zend/zend_language_scanner.c" +#line 3639 "Zend/zend_language_scanner.c" yy247: YYDEBUG(247, *YYCURSOR); ++YYCURSOR; @@ -3642,7 +3646,7 @@ yy247: { return T_SR; } -#line 3646 "Zend/zend_language_scanner.c" +#line 3650 "Zend/zend_language_scanner.c" yy249: YYDEBUG(249, *YYCURSOR); ++YYCURSOR; @@ -3652,7 +3656,7 @@ yy249: { return T_IS_GREATER_OR_EQUAL; } -#line 3656 "Zend/zend_language_scanner.c" +#line 3660 "Zend/zend_language_scanner.c" yy251: YYDEBUG(251, *YYCURSOR); ++YYCURSOR; @@ -3662,7 +3666,7 @@ yy251: { return T_SR_EQUAL; } -#line 3666 "Zend/zend_language_scanner.c" +#line 3670 "Zend/zend_language_scanner.c" yy253: YYDEBUG(253, *YYCURSOR); yyaccept = 5; @@ -3677,7 +3681,7 @@ yy254: { return T_SL; } -#line 3681 "Zend/zend_language_scanner.c" +#line 3685 "Zend/zend_language_scanner.c" yy255: YYDEBUG(255, *YYCURSOR); yych = *++YYCURSOR; @@ -3693,7 +3697,7 @@ yy256: { return T_IS_SMALLER_OR_EQUAL; } -#line 3697 "Zend/zend_language_scanner.c" +#line 3701 "Zend/zend_language_scanner.c" yy258: YYDEBUG(258, *YYCURSOR); ++YYCURSOR; @@ -3704,7 +3708,7 @@ yy259: { return T_IS_NOT_EQUAL; } -#line 3708 "Zend/zend_language_scanner.c" +#line 3712 "Zend/zend_language_scanner.c" yy260: YYDEBUG(260, *YYCURSOR); yych = *++YYCURSOR; @@ -3759,7 +3763,7 @@ yy267: { return T_SL_EQUAL; } -#line 3763 "Zend/zend_language_scanner.c" +#line 3767 "Zend/zend_language_scanner.c" yy269: YYDEBUG(269, *YYCURSOR); ++YYCURSOR; @@ -3864,7 +3868,7 @@ yy278: yy279: YYDEBUG(279, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2089 "Zend/zend_language_scanner.l" +#line 2093 "Zend/zend_language_scanner.l" { char *s; int bprefix = (yytext[0] != '<') ? 1 : 0; @@ -3912,7 +3916,7 @@ yy279: return T_START_HEREDOC; } -#line 3916 "Zend/zend_language_scanner.c" +#line 3920 "Zend/zend_language_scanner.c" yy280: YYDEBUG(280, *YYCURSOR); yych = *++YYCURSOR; @@ -3956,7 +3960,7 @@ yy283: { return T_IS_NOT_IDENTICAL; } -#line 3960 "Zend/zend_language_scanner.c" +#line 3964 "Zend/zend_language_scanner.c" yy286: YYDEBUG(286, *YYCURSOR); ++YYCURSOR; @@ -3966,7 +3970,7 @@ yy286: { return T_PLUS_EQUAL; } -#line 3970 "Zend/zend_language_scanner.c" +#line 3974 "Zend/zend_language_scanner.c" yy288: YYDEBUG(288, *YYCURSOR); ++YYCURSOR; @@ -3976,7 +3980,7 @@ yy288: { return T_INC; } -#line 3980 "Zend/zend_language_scanner.c" +#line 3984 "Zend/zend_language_scanner.c" yy290: YYDEBUG(290, *YYCURSOR); yych = *++YYCURSOR; @@ -3999,7 +4003,7 @@ yy292: { return T_LIST; } -#line 4003 "Zend/zend_language_scanner.c" +#line 4007 "Zend/zend_language_scanner.c" yy294: YYDEBUG(294, *YYCURSOR); ++YYCURSOR; @@ -4010,7 +4014,7 @@ yy294: { return T_IS_EQUAL; } -#line 4014 "Zend/zend_language_scanner.c" +#line 4018 "Zend/zend_language_scanner.c" yy296: YYDEBUG(296, *YYCURSOR); ++YYCURSOR; @@ -4020,7 +4024,7 @@ yy296: { return T_DOUBLE_ARROW; } -#line 4024 "Zend/zend_language_scanner.c" +#line 4028 "Zend/zend_language_scanner.c" yy298: YYDEBUG(298, *YYCURSOR); ++YYCURSOR; @@ -4030,7 +4034,7 @@ yy298: { return T_IS_IDENTICAL; } -#line 4034 "Zend/zend_language_scanner.c" +#line 4038 "Zend/zend_language_scanner.c" yy300: YYDEBUG(300, *YYCURSOR); yych = *++YYCURSOR; @@ -4160,7 +4164,7 @@ yy316: } YYDEBUG(319, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1690 "Zend/zend_language_scanner.l" +#line 1694 "Zend/zend_language_scanner.l" { if (CG(current_namespace)) { *zendlval = *CG(current_namespace); @@ -4170,7 +4174,7 @@ yy316: } return T_NS_C; } -#line 4174 "Zend/zend_language_scanner.c" +#line 4178 "Zend/zend_language_scanner.c" yy320: YYDEBUG(320, *YYCURSOR); yych = *++YYCURSOR; @@ -4190,7 +4194,7 @@ yy321: } YYDEBUG(324, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1663 "Zend/zend_language_scanner.l" +#line 1667 "Zend/zend_language_scanner.l" { char *filename = zend_get_compiled_filename(TSRMLS_C); const size_t filename_len = strlen(filename); @@ -4217,7 +4221,7 @@ yy321: zendlval->type = IS_STRING; return T_DIR; } -#line 4221 "Zend/zend_language_scanner.c" +#line 4225 "Zend/zend_language_scanner.c" yy325: YYDEBUG(325, *YYCURSOR); yych = *++YYCURSOR; @@ -4242,13 +4246,13 @@ yy327: } YYDEBUG(330, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1645 "Zend/zend_language_scanner.l" +#line 1649 "Zend/zend_language_scanner.l" { zendlval->value.lval = CG(zend_lineno); zendlval->type = IS_LONG; return T_LINE; } -#line 4252 "Zend/zend_language_scanner.c" +#line 4256 "Zend/zend_language_scanner.c" yy331: YYDEBUG(331, *YYCURSOR); yych = *++YYCURSOR; @@ -4283,7 +4287,7 @@ yy335: } YYDEBUG(338, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1624 "Zend/zend_language_scanner.l" +#line 1628 "Zend/zend_language_scanner.l" { const char *class_name = CG(active_class_entry) ? CG(active_class_entry)->name : NULL; const char *func_name = CG(active_op_array)? CG(active_op_array)->function_name : NULL; @@ -4304,7 +4308,7 @@ yy335: zendlval->type = IS_STRING; return T_METHOD_C; } -#line 4308 "Zend/zend_language_scanner.c" +#line 4312 "Zend/zend_language_scanner.c" yy339: YYDEBUG(339, *YYCURSOR); yych = *++YYCURSOR; @@ -4355,7 +4359,7 @@ yy346: } YYDEBUG(349, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1608 "Zend/zend_language_scanner.l" +#line 1612 "Zend/zend_language_scanner.l" { const char *func_name = NULL; @@ -4371,7 +4375,7 @@ yy346: zendlval->type = IS_STRING; return T_FUNC_C; } -#line 4375 "Zend/zend_language_scanner.c" +#line 4379 "Zend/zend_language_scanner.c" yy350: YYDEBUG(350, *YYCURSOR); yych = *++YYCURSOR; @@ -4391,7 +4395,7 @@ yy351: } YYDEBUG(354, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1651 "Zend/zend_language_scanner.l" +#line 1655 "Zend/zend_language_scanner.l" { char *filename = zend_get_compiled_filename(TSRMLS_C); @@ -4403,7 +4407,7 @@ yy351: zendlval->type = IS_STRING; return T_FILE; } -#line 4407 "Zend/zend_language_scanner.c" +#line 4411 "Zend/zend_language_scanner.c" yy355: YYDEBUG(355, *YYCURSOR); yych = *++YYCURSOR; @@ -4433,7 +4437,7 @@ yy358: } YYDEBUG(361, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1588 "Zend/zend_language_scanner.l" +#line 1592 "Zend/zend_language_scanner.l" { const char *trait_name = NULL; @@ -4453,7 +4457,7 @@ yy358: return T_TRAIT_C; } -#line 4457 "Zend/zend_language_scanner.c" +#line 4461 "Zend/zend_language_scanner.c" yy362: YYDEBUG(362, *YYCURSOR); yych = *++YYCURSOR; @@ -4483,7 +4487,7 @@ yy365: } YYDEBUG(368, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1561 "Zend/zend_language_scanner.l" +#line 1565 "Zend/zend_language_scanner.l" { const char *class_name = NULL; @@ -4510,7 +4514,7 @@ yy365: } return T_CLASS_C; } -#line 4514 "Zend/zend_language_scanner.c" +#line 4518 "Zend/zend_language_scanner.c" yy369: YYDEBUG(369, *YYCURSOR); yych = *++YYCURSOR; @@ -4576,7 +4580,7 @@ yy380: { return T_HALT_COMPILER; } -#line 4580 "Zend/zend_language_scanner.c" +#line 4584 "Zend/zend_language_scanner.c" yy382: YYDEBUG(382, *YYCURSOR); yych = *++YYCURSOR; @@ -4600,7 +4604,7 @@ yy384: { return T_USE; } -#line 4604 "Zend/zend_language_scanner.c" +#line 4608 "Zend/zend_language_scanner.c" yy386: YYDEBUG(386, *YYCURSOR); yych = *++YYCURSOR; @@ -4623,7 +4627,7 @@ yy388: { return T_UNSET; } -#line 4627 "Zend/zend_language_scanner.c" +#line 4631 "Zend/zend_language_scanner.c" yy390: YYDEBUG(390, *YYCURSOR); ++YYCURSOR; @@ -4799,7 +4803,7 @@ yy405: { return T_INT_CAST; } -#line 4803 "Zend/zend_language_scanner.c" +#line 4807 "Zend/zend_language_scanner.c" yy408: YYDEBUG(408, *YYCURSOR); yych = *++YYCURSOR; @@ -4847,7 +4851,7 @@ yy413: { return T_DOUBLE_CAST; } -#line 4851 "Zend/zend_language_scanner.c" +#line 4855 "Zend/zend_language_scanner.c" yy417: YYDEBUG(417, *YYCURSOR); yych = *++YYCURSOR; @@ -4921,7 +4925,7 @@ yy427: { return T_STRING_CAST; } -#line 4925 "Zend/zend_language_scanner.c" +#line 4929 "Zend/zend_language_scanner.c" yy431: YYDEBUG(431, *YYCURSOR); yych = *++YYCURSOR; @@ -4958,7 +4962,7 @@ yy434: { return T_ARRAY_CAST; } -#line 4962 "Zend/zend_language_scanner.c" +#line 4966 "Zend/zend_language_scanner.c" yy438: YYDEBUG(438, *YYCURSOR); yych = *++YYCURSOR; @@ -5000,7 +5004,7 @@ yy442: { return T_OBJECT_CAST; } -#line 5004 "Zend/zend_language_scanner.c" +#line 5008 "Zend/zend_language_scanner.c" yy446: YYDEBUG(446, *YYCURSOR); yych = *++YYCURSOR; @@ -5045,7 +5049,7 @@ yy451: { return T_BOOL_CAST; } -#line 5049 "Zend/zend_language_scanner.c" +#line 5053 "Zend/zend_language_scanner.c" yy454: YYDEBUG(454, *YYCURSOR); yych = *++YYCURSOR; @@ -5109,7 +5113,7 @@ yy462: { return T_UNSET_CAST; } -#line 5113 "Zend/zend_language_scanner.c" +#line 5117 "Zend/zend_language_scanner.c" yy466: YYDEBUG(466, *YYCURSOR); yych = *++YYCURSOR; @@ -5127,7 +5131,7 @@ yy467: { return T_VAR; } -#line 5131 "Zend/zend_language_scanner.c" +#line 5135 "Zend/zend_language_scanner.c" yy469: YYDEBUG(469, *YYCURSOR); yych = *++YYCURSOR; @@ -5151,7 +5155,7 @@ yy471: { return T_NEW; } -#line 5155 "Zend/zend_language_scanner.c" +#line 5159 "Zend/zend_language_scanner.c" yy473: YYDEBUG(473, *YYCURSOR); yych = *++YYCURSOR; @@ -5194,7 +5198,7 @@ yy479: { return T_NAMESPACE; } -#line 5198 "Zend/zend_language_scanner.c" +#line 5202 "Zend/zend_language_scanner.c" yy481: YYDEBUG(481, *YYCURSOR); ++YYCURSOR; @@ -5204,7 +5208,7 @@ yy481: { return T_PAAMAYIM_NEKUDOTAYIM; } -#line 5208 "Zend/zend_language_scanner.c" +#line 5212 "Zend/zend_language_scanner.c" yy483: YYDEBUG(483, *YYCURSOR); ++YYCURSOR; @@ -5230,7 +5234,7 @@ yy485: { return T_MINUS_EQUAL; } -#line 5234 "Zend/zend_language_scanner.c" +#line 5238 "Zend/zend_language_scanner.c" yy487: YYDEBUG(487, *YYCURSOR); ++YYCURSOR; @@ -5240,7 +5244,7 @@ yy487: { return T_DEC; } -#line 5244 "Zend/zend_language_scanner.c" +#line 5248 "Zend/zend_language_scanner.c" yy489: YYDEBUG(489, *YYCURSOR); ++YYCURSOR; @@ -5251,7 +5255,7 @@ yy489: yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC); return T_OBJECT_OPERATOR; } -#line 5255 "Zend/zend_language_scanner.c" +#line 5259 "Zend/zend_language_scanner.c" yy491: YYDEBUG(491, *YYCURSOR); yych = *++YYCURSOR; @@ -5300,7 +5304,7 @@ yy496: { return T_PUBLIC; } -#line 5304 "Zend/zend_language_scanner.c" +#line 5308 "Zend/zend_language_scanner.c" yy498: YYDEBUG(498, *YYCURSOR); yych = *++YYCURSOR; @@ -5359,7 +5363,7 @@ yy505: { return T_PROTECTED; } -#line 5363 "Zend/zend_language_scanner.c" +#line 5367 "Zend/zend_language_scanner.c" yy507: YYDEBUG(507, *YYCURSOR); yych = *++YYCURSOR; @@ -5393,7 +5397,7 @@ yy511: { return T_PRIVATE; } -#line 5397 "Zend/zend_language_scanner.c" +#line 5401 "Zend/zend_language_scanner.c" yy513: YYDEBUG(513, *YYCURSOR); ++YYCURSOR; @@ -5406,7 +5410,7 @@ yy513: { return T_PRINT; } -#line 5410 "Zend/zend_language_scanner.c" +#line 5414 "Zend/zend_language_scanner.c" yy515: YYDEBUG(515, *YYCURSOR); yych = *++YYCURSOR; @@ -5435,7 +5439,7 @@ yy518: { return T_GOTO; } -#line 5439 "Zend/zend_language_scanner.c" +#line 5443 "Zend/zend_language_scanner.c" yy520: YYDEBUG(520, *YYCURSOR); yych = *++YYCURSOR; @@ -5463,7 +5467,7 @@ yy523: { return T_GLOBAL; } -#line 5467 "Zend/zend_language_scanner.c" +#line 5471 "Zend/zend_language_scanner.c" yy525: YYDEBUG(525, *YYCURSOR); yych = *++YYCURSOR; @@ -5504,7 +5508,7 @@ yy531: { return T_BREAK; } -#line 5508 "Zend/zend_language_scanner.c" +#line 5512 "Zend/zend_language_scanner.c" yy533: YYDEBUG(533, *YYCURSOR); yych = *++YYCURSOR; @@ -5548,7 +5552,7 @@ yy539: { return T_SWITCH; } -#line 5552 "Zend/zend_language_scanner.c" +#line 5556 "Zend/zend_language_scanner.c" yy541: YYDEBUG(541, *YYCURSOR); yych = *++YYCURSOR; @@ -5576,7 +5580,7 @@ yy544: { return T_STATIC; } -#line 5580 "Zend/zend_language_scanner.c" +#line 5584 "Zend/zend_language_scanner.c" yy546: YYDEBUG(546, *YYCURSOR); yych = *++YYCURSOR; @@ -5607,7 +5611,7 @@ yy549: { return T_AS; } -#line 5611 "Zend/zend_language_scanner.c" +#line 5615 "Zend/zend_language_scanner.c" yy551: YYDEBUG(551, *YYCURSOR); yych = *++YYCURSOR; @@ -5630,7 +5634,7 @@ yy553: { return T_ARRAY; } -#line 5634 "Zend/zend_language_scanner.c" +#line 5638 "Zend/zend_language_scanner.c" yy555: YYDEBUG(555, *YYCURSOR); ++YYCURSOR; @@ -5643,7 +5647,7 @@ yy555: { return T_LOGICAL_AND; } -#line 5647 "Zend/zend_language_scanner.c" +#line 5651 "Zend/zend_language_scanner.c" yy557: YYDEBUG(557, *YYCURSOR); yych = *++YYCURSOR; @@ -5681,7 +5685,7 @@ yy562: { return T_ABSTRACT; } -#line 5685 "Zend/zend_language_scanner.c" +#line 5689 "Zend/zend_language_scanner.c" yy564: YYDEBUG(564, *YYCURSOR); yych = *++YYCURSOR; @@ -5709,7 +5713,7 @@ yy567: { return T_WHILE; } -#line 5713 "Zend/zend_language_scanner.c" +#line 5717 "Zend/zend_language_scanner.c" yy569: YYDEBUG(569, *YYCURSOR); ++YYCURSOR; @@ -5722,7 +5726,7 @@ yy569: { return T_IF; } -#line 5726 "Zend/zend_language_scanner.c" +#line 5730 "Zend/zend_language_scanner.c" yy571: YYDEBUG(571, *YYCURSOR); yych = *++YYCURSOR; @@ -5778,7 +5782,7 @@ yy576: { return T_ISSET; } -#line 5782 "Zend/zend_language_scanner.c" +#line 5786 "Zend/zend_language_scanner.c" yy578: YYDEBUG(578, *YYCURSOR); yych = *++YYCURSOR; @@ -5836,7 +5840,7 @@ yy585: { return T_INCLUDE; } -#line 5840 "Zend/zend_language_scanner.c" +#line 5844 "Zend/zend_language_scanner.c" yy586: YYDEBUG(586, *YYCURSOR); yych = *++YYCURSOR; @@ -5869,7 +5873,7 @@ yy590: { return T_INCLUDE_ONCE; } -#line 5873 "Zend/zend_language_scanner.c" +#line 5877 "Zend/zend_language_scanner.c" yy592: YYDEBUG(592, *YYCURSOR); yych = *++YYCURSOR; @@ -5907,7 +5911,7 @@ yy597: { return T_INTERFACE; } -#line 5911 "Zend/zend_language_scanner.c" +#line 5915 "Zend/zend_language_scanner.c" yy599: YYDEBUG(599, *YYCURSOR); yych = *++YYCURSOR; @@ -5961,7 +5965,7 @@ yy605: { return T_INSTEADOF; } -#line 5965 "Zend/zend_language_scanner.c" +#line 5969 "Zend/zend_language_scanner.c" yy607: YYDEBUG(607, *YYCURSOR); yych = *++YYCURSOR; @@ -5994,7 +5998,7 @@ yy611: { return T_INSTANCEOF; } -#line 5998 "Zend/zend_language_scanner.c" +#line 6002 "Zend/zend_language_scanner.c" yy613: YYDEBUG(613, *YYCURSOR); yych = *++YYCURSOR; @@ -6042,7 +6046,7 @@ yy620: { return T_IMPLEMENTS; } -#line 6046 "Zend/zend_language_scanner.c" +#line 6050 "Zend/zend_language_scanner.c" yy622: YYDEBUG(622, *YYCURSOR); yych = *++YYCURSOR; @@ -6074,7 +6078,7 @@ yy623: { return T_TRY; } -#line 6078 "Zend/zend_language_scanner.c" +#line 6082 "Zend/zend_language_scanner.c" yy626: YYDEBUG(626, *YYCURSOR); yych = *++YYCURSOR; @@ -6097,7 +6101,7 @@ yy628: { return T_TRAIT; } -#line 6101 "Zend/zend_language_scanner.c" +#line 6105 "Zend/zend_language_scanner.c" yy630: YYDEBUG(630, *YYCURSOR); yych = *++YYCURSOR; @@ -6120,7 +6124,7 @@ yy632: { return T_THROW; } -#line 6124 "Zend/zend_language_scanner.c" +#line 6128 "Zend/zend_language_scanner.c" yy634: YYDEBUG(634, *YYCURSOR); yych = *++YYCURSOR; @@ -6185,7 +6189,7 @@ yy641: { return T_REQUIRE; } -#line 6189 "Zend/zend_language_scanner.c" +#line 6193 "Zend/zend_language_scanner.c" yy642: YYDEBUG(642, *YYCURSOR); yych = *++YYCURSOR; @@ -6218,7 +6222,7 @@ yy646: { return T_REQUIRE_ONCE; } -#line 6222 "Zend/zend_language_scanner.c" +#line 6226 "Zend/zend_language_scanner.c" yy648: YYDEBUG(648, *YYCURSOR); yych = *++YYCURSOR; @@ -6241,7 +6245,7 @@ yy650: { return T_RETURN; } -#line 6245 "Zend/zend_language_scanner.c" +#line 6249 "Zend/zend_language_scanner.c" yy652: YYDEBUG(652, *YYCURSOR); yych = *++YYCURSOR; @@ -6335,7 +6339,7 @@ yy661: { return T_CONTINUE; } -#line 6339 "Zend/zend_language_scanner.c" +#line 6343 "Zend/zend_language_scanner.c" yy663: YYDEBUG(663, *YYCURSOR); ++YYCURSOR; @@ -6348,7 +6352,7 @@ yy663: { return T_CONST; } -#line 6352 "Zend/zend_language_scanner.c" +#line 6356 "Zend/zend_language_scanner.c" yy665: YYDEBUG(665, *YYCURSOR); yych = *++YYCURSOR; @@ -6377,7 +6381,7 @@ yy668: { return T_CLONE; } -#line 6381 "Zend/zend_language_scanner.c" +#line 6385 "Zend/zend_language_scanner.c" yy670: YYDEBUG(670, *YYCURSOR); yych = *++YYCURSOR; @@ -6395,7 +6399,7 @@ yy671: { return T_CLASS; } -#line 6399 "Zend/zend_language_scanner.c" +#line 6403 "Zend/zend_language_scanner.c" yy673: YYDEBUG(673, *YYCURSOR); yych = *++YYCURSOR; @@ -6445,7 +6449,7 @@ yy680: { return T_CALLABLE; } -#line 6449 "Zend/zend_language_scanner.c" +#line 6453 "Zend/zend_language_scanner.c" yy682: YYDEBUG(682, *YYCURSOR); ++YYCURSOR; @@ -6458,7 +6462,7 @@ yy682: { return T_CASE; } -#line 6462 "Zend/zend_language_scanner.c" +#line 6466 "Zend/zend_language_scanner.c" yy684: YYDEBUG(684, *YYCURSOR); yych = *++YYCURSOR; @@ -6476,7 +6480,7 @@ yy685: { return T_CATCH; } -#line 6480 "Zend/zend_language_scanner.c" +#line 6484 "Zend/zend_language_scanner.c" yy687: YYDEBUG(687, *YYCURSOR); yych = *++YYCURSOR; @@ -6531,7 +6535,7 @@ yy695: { return T_FUNCTION; } -#line 6535 "Zend/zend_language_scanner.c" +#line 6539 "Zend/zend_language_scanner.c" yy697: YYDEBUG(697, *YYCURSOR); ++YYCURSOR; @@ -6559,7 +6563,7 @@ yy698: { return T_FOR; } -#line 6563 "Zend/zend_language_scanner.c" +#line 6567 "Zend/zend_language_scanner.c" yy699: YYDEBUG(699, *YYCURSOR); yych = *++YYCURSOR; @@ -6587,7 +6591,7 @@ yy702: { return T_FOREACH; } -#line 6591 "Zend/zend_language_scanner.c" +#line 6595 "Zend/zend_language_scanner.c" yy704: YYDEBUG(704, *YYCURSOR); yych = *++YYCURSOR; @@ -6610,7 +6614,7 @@ yy706: { return T_FINAL; } -#line 6614 "Zend/zend_language_scanner.c" +#line 6618 "Zend/zend_language_scanner.c" yy708: YYDEBUG(708, *YYCURSOR); yych = *++YYCURSOR; @@ -6645,7 +6649,7 @@ yy710: { return T_DO; } -#line 6649 "Zend/zend_language_scanner.c" +#line 6653 "Zend/zend_language_scanner.c" yy712: YYDEBUG(712, *YYCURSOR); ++YYCURSOR; @@ -6658,7 +6662,7 @@ yy712: { return T_EXIT; } -#line 6662 "Zend/zend_language_scanner.c" +#line 6666 "Zend/zend_language_scanner.c" yy714: YYDEBUG(714, *YYCURSOR); yych = *++YYCURSOR; @@ -6697,7 +6701,7 @@ yy719: { return T_DEFAULT; } -#line 6701 "Zend/zend_language_scanner.c" +#line 6705 "Zend/zend_language_scanner.c" yy721: YYDEBUG(721, *YYCURSOR); yych = *++YYCURSOR; @@ -6725,7 +6729,7 @@ yy724: { return T_DECLARE; } -#line 6729 "Zend/zend_language_scanner.c" +#line 6733 "Zend/zend_language_scanner.c" yy726: YYDEBUG(726, *YYCURSOR); yych = *++YYCURSOR; @@ -6809,7 +6813,7 @@ yy737: { return T_EXTENDS; } -#line 6813 "Zend/zend_language_scanner.c" +#line 6817 "Zend/zend_language_scanner.c" yy739: YYDEBUG(739, *YYCURSOR); ++YYCURSOR; @@ -6822,7 +6826,7 @@ yy739: { return T_EXIT; } -#line 6826 "Zend/zend_language_scanner.c" +#line 6830 "Zend/zend_language_scanner.c" yy741: YYDEBUG(741, *YYCURSOR); yych = *++YYCURSOR; @@ -6840,7 +6844,7 @@ yy742: { return T_EVAL; } -#line 6844 "Zend/zend_language_scanner.c" +#line 6848 "Zend/zend_language_scanner.c" yy744: YYDEBUG(744, *YYCURSOR); yych = *++YYCURSOR; @@ -6914,7 +6918,7 @@ yy753: { return T_ENDWHILE; } -#line 6918 "Zend/zend_language_scanner.c" +#line 6922 "Zend/zend_language_scanner.c" yy755: YYDEBUG(755, *YYCURSOR); yych = *++YYCURSOR; @@ -6947,7 +6951,7 @@ yy759: { return T_ENDSWITCH; } -#line 6951 "Zend/zend_language_scanner.c" +#line 6955 "Zend/zend_language_scanner.c" yy761: YYDEBUG(761, *YYCURSOR); ++YYCURSOR; @@ -6960,7 +6964,7 @@ yy761: { return T_ENDIF; } -#line 6964 "Zend/zend_language_scanner.c" +#line 6968 "Zend/zend_language_scanner.c" yy763: YYDEBUG(763, *YYCURSOR); yych = *++YYCURSOR; @@ -6993,7 +6997,7 @@ yy765: { return T_ENDFOR; } -#line 6997 "Zend/zend_language_scanner.c" +#line 7001 "Zend/zend_language_scanner.c" yy766: YYDEBUG(766, *YYCURSOR); yych = *++YYCURSOR; @@ -7021,7 +7025,7 @@ yy769: { return T_ENDFOREACH; } -#line 7025 "Zend/zend_language_scanner.c" +#line 7029 "Zend/zend_language_scanner.c" yy771: YYDEBUG(771, *YYCURSOR); yych = *++YYCURSOR; @@ -7059,7 +7063,7 @@ yy776: { return T_ENDDECLARE; } -#line 7063 "Zend/zend_language_scanner.c" +#line 7067 "Zend/zend_language_scanner.c" yy778: YYDEBUG(778, *YYCURSOR); yych = *++YYCURSOR; @@ -7082,7 +7086,7 @@ yy780: { return T_EMPTY; } -#line 7086 "Zend/zend_language_scanner.c" +#line 7090 "Zend/zend_language_scanner.c" yy782: YYDEBUG(782, *YYCURSOR); yych = *++YYCURSOR; @@ -7115,7 +7119,7 @@ yy784: { return T_ELSE; } -#line 7119 "Zend/zend_language_scanner.c" +#line 7123 "Zend/zend_language_scanner.c" yy785: YYDEBUG(785, *YYCURSOR); yych = *++YYCURSOR; @@ -7133,7 +7137,7 @@ yy786: { return T_ELSEIF; } -#line 7137 "Zend/zend_language_scanner.c" +#line 7141 "Zend/zend_language_scanner.c" yy788: YYDEBUG(788, *YYCURSOR); yych = *++YYCURSOR; @@ -7151,7 +7155,7 @@ yy789: { return T_ECHO; } -#line 7155 "Zend/zend_language_scanner.c" +#line 7159 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_LOOKING_FOR_PROPERTY: @@ -7232,7 +7236,7 @@ yy794: HANDLE_NEWLINES(yytext, yyleng); return T_WHITESPACE; } -#line 7236 "Zend/zend_language_scanner.c" +#line 7240 "Zend/zend_language_scanner.c" yy795: YYDEBUG(795, *YYCURSOR); ++YYCURSOR; @@ -7246,7 +7250,7 @@ yy796: yy_pop_state(TSRMLS_C); goto restart; } -#line 7250 "Zend/zend_language_scanner.c" +#line 7254 "Zend/zend_language_scanner.c" yy797: YYDEBUG(797, *YYCURSOR); ++YYCURSOR; @@ -7262,7 +7266,7 @@ yy798: zendlval->type = IS_STRING; return T_STRING; } -#line 7266 "Zend/zend_language_scanner.c" +#line 7270 "Zend/zend_language_scanner.c" yy799: YYDEBUG(799, *YYCURSOR); yych = *++YYCURSOR; @@ -7287,7 +7291,7 @@ yy802: { return T_OBJECT_OPERATOR; } -#line 7291 "Zend/zend_language_scanner.c" +#line 7295 "Zend/zend_language_scanner.c" yy804: YYDEBUG(804, *YYCURSOR); ++YYCURSOR; @@ -7365,7 +7369,7 @@ yy809: yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); return T_STRING_VARNAME; } -#line 7369 "Zend/zend_language_scanner.c" +#line 7373 "Zend/zend_language_scanner.c" yy810: YYDEBUG(810, *YYCURSOR); ++YYCURSOR; @@ -7378,7 +7382,7 @@ yy810: yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); goto restart; } -#line 7382 "Zend/zend_language_scanner.c" +#line 7386 "Zend/zend_language_scanner.c" yy812: YYDEBUG(812, *YYCURSOR); ++YYCURSOR; @@ -7400,7 +7404,7 @@ yyc_ST_NOWDOC: ++YYCURSOR; YYDEBUG(817, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2340 "Zend/zend_language_scanner.l" +#line 2344 "Zend/zend_language_scanner.l" { int newline = 0; @@ -7455,7 +7459,7 @@ nowdoc_scan_done: HANDLE_NEWLINES(yytext, yyleng - newline); return T_ENCAPSED_AND_WHITESPACE; } -#line 7459 "Zend/zend_language_scanner.c" +#line 7463 "Zend/zend_language_scanner.c" /* *********************************** */ yyc_ST_VAR_OFFSET: { @@ -7562,7 +7566,7 @@ yy820: yy821: YYDEBUG(821, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1536 "Zend/zend_language_scanner.l" +#line 1540 "Zend/zend_language_scanner.l" { /* Offset could be treated as a long */ if (yyleng < MAX_LENGTH_OF_LONG - 1 || (yyleng == MAX_LENGTH_OF_LONG - 1 && strcmp(yytext, long_min_digits) < 0)) { zendlval->value.lval = strtol(yytext, NULL, 10); @@ -7574,7 +7578,7 @@ yy821: } return T_NUM_STRING; } -#line 7578 "Zend/zend_language_scanner.c" +#line 7582 "Zend/zend_language_scanner.c" yy822: YYDEBUG(822, *YYCURSOR); yych = *++YYCURSOR; @@ -7594,23 +7598,23 @@ yy823: yy824: YYDEBUG(824, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1868 "Zend/zend_language_scanner.l" +#line 1872 "Zend/zend_language_scanner.l" { /* Only '[' can be valid, but returning other tokens will allow a more explicit parse error */ return yytext[0]; } -#line 7603 "Zend/zend_language_scanner.c" +#line 7607 "Zend/zend_language_scanner.c" yy825: YYDEBUG(825, *YYCURSOR); ++YYCURSOR; YYDEBUG(826, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1863 "Zend/zend_language_scanner.l" +#line 1867 "Zend/zend_language_scanner.l" { yy_pop_state(TSRMLS_C); return ']'; } -#line 7614 "Zend/zend_language_scanner.c" +#line 7618 "Zend/zend_language_scanner.c" yy827: YYDEBUG(827, *YYCURSOR); yych = *++YYCURSOR; @@ -7620,14 +7624,14 @@ yy828: ++YYCURSOR; YYDEBUG(829, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1873 "Zend/zend_language_scanner.l" +#line 1877 "Zend/zend_language_scanner.l" { /* Invalid rule to return a more explicit parse error with proper line number */ yyless(0); yy_pop_state(TSRMLS_C); return T_ENCAPSED_AND_WHITESPACE; } -#line 7631 "Zend/zend_language_scanner.c" +#line 7635 "Zend/zend_language_scanner.c" yy830: YYDEBUG(830, *YYCURSOR); ++YYCURSOR; @@ -7636,19 +7640,19 @@ yy830: yy831: YYDEBUG(831, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1880 "Zend/zend_language_scanner.l" +#line 1884 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, yytext, yyleng); zendlval->type = IS_STRING; return T_STRING; } -#line 7646 "Zend/zend_language_scanner.c" +#line 7650 "Zend/zend_language_scanner.c" yy832: YYDEBUG(832, *YYCURSOR); ++YYCURSOR; YYDEBUG(833, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2396 "Zend/zend_language_scanner.l" +#line 2400 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { return 0; @@ -7657,7 +7661,7 @@ yy832: zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); goto restart; } -#line 7661 "Zend/zend_language_scanner.c" +#line 7665 "Zend/zend_language_scanner.c" yy834: YYDEBUG(834, *YYCURSOR); ++YYCURSOR; @@ -7693,13 +7697,13 @@ yy836: yy838: YYDEBUG(838, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1857 "Zend/zend_language_scanner.l" +#line 1861 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, (yytext+1), (yyleng-1)); zendlval->type = IS_STRING; return T_VARIABLE; } -#line 7703 "Zend/zend_language_scanner.c" +#line 7707 "Zend/zend_language_scanner.c" yy839: YYDEBUG(839, *YYCURSOR); ++YYCURSOR; @@ -7739,14 +7743,14 @@ yy844: yy846: YYDEBUG(846, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1548 "Zend/zend_language_scanner.l" +#line 1552 "Zend/zend_language_scanner.l" { /* Offset must be treated as a string */ zendlval->value.str.val = (char *)estrndup(yytext, yyleng); zendlval->value.str.len = yyleng; zendlval->type = IS_STRING; return T_NUM_STRING; } -#line 7750 "Zend/zend_language_scanner.c" +#line 7754 "Zend/zend_language_scanner.c" yy847: YYDEBUG(847, *YYCURSOR); ++YYCURSOR; @@ -7769,6 +7773,6 @@ yy849: goto yy846; } } -#line 2405 "Zend/zend_language_scanner.l" +#line 2409 "Zend/zend_language_scanner.l" } diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l index ca6281fa2..dc6cc5bc9 100644 --- a/Zend/zend_language_scanner.l +++ b/Zend/zend_language_scanner.l @@ -21,7 +21,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: zend_language_scanner.l 322378 2012-01-17 08:09:13Z dmitry $ */ +/* $Id: zend_language_scanner.l 323394 2012-02-20 18:28:57Z colder $ */ #if 0 # define YYDEBUG(s, c) printf("state: %d char: %c\n", s, c) @@ -1523,7 +1523,11 @@ NEWLINE ("\r"|"\n"|"\r\n") } if (len < SIZEOF_LONG * 2 || (len == SIZEOF_LONG * 2 && *hex <= '7')) { - zendlval->value.lval = strtol(hex, NULL, 16); + if (len == 0) { + zendlval->value.lval = 0; + } else { + zendlval->value.lval = strtol(hex, NULL, 16); + } zendlval->type = IS_LONG; return T_LNUMBER; } else { diff --git a/Zend/zend_language_scanner_defs.h b/Zend/zend_language_scanner_defs.h index 0a72f090a..d05939b9c 100644 --- a/Zend/zend_language_scanner_defs.h +++ b/Zend/zend_language_scanner_defs.h @@ -1,4 +1,4 @@ -/* Generated by re2c 0.13.5 on Mon Jan 16 14:45:55 2012 */ +/* Generated by re2c 0.13.5 on Wed Feb 15 17:48:20 2012 */ #line 3 "Zend/zend_language_scanner_defs.h" enum YYCONDTYPE { @@ -3637,7 +3637,7 @@ ac_config_headers="$ac_config_headers main/php_config.h" PHP_MAJOR_VERSION=5 PHP_MINOR_VERSION=4 PHP_RELEASE_VERSION=0 -PHP_EXTRA_VERSION="RC8" +PHP_EXTRA_VERSION="" PHP_VERSION="$PHP_MAJOR_VERSION.$PHP_MINOR_VERSION.$PHP_RELEASE_VERSION$PHP_EXTRA_VERSION" PHP_VERSION_ID=`expr $PHP_MAJOR_VERSION \* 10000 + $PHP_MINOR_VERSION \* 100 + $PHP_RELEASE_VERSION` diff --git a/configure.in b/configure.in index 0896a415f..8c747873c 100644 --- a/configure.in +++ b/configure.in @@ -1,4 +1,4 @@ -## $Id: configure.in 323247 2012-02-16 07:45:08Z stas $ -*- autoconf -*- +## $Id: configure.in 323657 2012-02-29 07:22:43Z stas $ -*- autoconf -*- dnl ## Process this file with autoconf to produce a configure script. dnl include Zend specific macro definitions first @@ -120,7 +120,7 @@ int zend_sprintf(char *buffer, const char *format, ...); PHP_MAJOR_VERSION=5 PHP_MINOR_VERSION=4 PHP_RELEASE_VERSION=0 -PHP_EXTRA_VERSION="RC8" +PHP_EXTRA_VERSION="" PHP_VERSION="$PHP_MAJOR_VERSION.$PHP_MINOR_VERSION.$PHP_RELEASE_VERSION$PHP_EXTRA_VERSION" PHP_VERSION_ID=`expr [$]PHP_MAJOR_VERSION \* 10000 + [$]PHP_MINOR_VERSION \* 100 + [$]PHP_RELEASE_VERSION` diff --git a/ext/fileinfo/php_fileinfo.h b/ext/fileinfo/php_fileinfo.h index 532a87ce4..f5b7ec23e 100644 --- a/ext/fileinfo/php_fileinfo.h +++ b/ext/fileinfo/php_fileinfo.h @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_fileinfo.h 321634 2012-01-01 13:15:04Z felipe $ */ +/* $Id: php_fileinfo.h 323634 2012-02-28 18:43:44Z stas $ */ #ifndef PHP_FILEINFO_H #define PHP_FILEINFO_H @@ -24,7 +24,7 @@ extern zend_module_entry fileinfo_module_entry; #define phpext_fileinfo_ptr &fileinfo_module_entry -#define PHP_FILEINFO_VERSION "1.0.5-dev" +#define PHP_FILEINFO_VERSION "1.0.5" #ifdef PHP_WIN32 #define PHP_FILEINFO_API __declspec(dllexport) diff --git a/ext/mysqlnd/mysqlnd.h b/ext/mysqlnd/mysqlnd.h index ae894389b..a6d0039d1 100644 --- a/ext/mysqlnd/mysqlnd.h +++ b/ext/mysqlnd/mysqlnd.h @@ -17,12 +17,12 @@ | Georg Richter <georg@mysql.com> | +----------------------------------------------------------------------+ */ -/* $Id: mysqlnd.h 321634 2012-01-01 13:15:04Z felipe $ */ +/* $Id: mysqlnd.h 323634 2012-02-28 18:43:44Z stas $ */ #ifndef MYSQLND_H #define MYSQLND_H -#define MYSQLND_VERSION "mysqlnd 5.0.10-dev - 20111026 - $Revision: 321634 $" +#define MYSQLND_VERSION "mysqlnd 5.0.10 - 20111026 - $Revision: 323634 $" #define MYSQLND_VERSION_ID 50010 #define MYSQLND_PLUGIN_API_VERSION 1 diff --git a/ext/openssl/openssl.c b/ext/openssl/openssl.c index e563f246b..5601c89d0 100644 --- a/ext/openssl/openssl.c +++ b/ext/openssl/openssl.c @@ -20,7 +20,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: openssl.c 321634 2012-01-01 13:15:04Z felipe $ */ +/* $Id: openssl.c 323440 2012-02-23 01:26:46Z scottmac $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -4803,6 +4803,10 @@ PHP_FUNCTION(openssl_decrypt) if (!(options & OPENSSL_RAW_DATA)) { base64_str = (char*)php_base64_decode((unsigned char*)data, data_len, &base64_str_len); + if (!base64_str) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Failed to base64 decode the input"); + RETURN_FALSE; + } data_len = base64_str_len; data = base64_str; } diff --git a/ext/openssl/tests/bug61124.phpt b/ext/openssl/tests/bug61124.phpt new file mode 100644 index 000000000..2fc192d43 --- /dev/null +++ b/ext/openssl/tests/bug61124.phpt @@ -0,0 +1,12 @@ +--TEST--
+Bug #61124: Segmentation fault with openssl_decrypt
+--SKIPIF--
+<?php
+if (!extension_loaded("openssl")) die("skip");
+--FILE--
+<?php
+var_dump(openssl_decrypt('kzo w2RMExUTYQXW2Xzxmg==', 'aes-128-cbc', 'pass', false, 'pass'));
+
+--EXPECTF--
+Warning: openssl_decrypt(): Failed to base64 decode the input in %s on line %s
+bool(false)
\ No newline at end of file diff --git a/ext/soap/tests/bugs/bug34657.phpt b/ext/soap/tests/bugs/bug34657.phpt index 0069c9395..d974d02cc 100755 --- a/ext/soap/tests/bugs/bug34657.phpt +++ b/ext/soap/tests/bugs/bug34657.phpt @@ -8,7 +8,7 @@ if (extension_loaded("openssl")) { when openssl loaded, tcp stream is less verbose, so some error messages are missing so let's skip the test in this case */ - die("skip"); + die("skip OpenSSL extension required"); } ?> --FILE-- diff --git a/ext/spl/tests/iterator_006.phpt b/ext/spl/tests/iterator_006.phpt index 1a1be0561..54da89cbd 100755 --- a/ext/spl/tests/iterator_006.phpt +++ b/ext/spl/tests/iterator_006.phpt @@ -1,7 +1,7 @@ --TEST-- SPL: IteratorIterator and SimpleXMlElement --SKIPIF-- -<?php if (!extension_loaded('simplexml')) print "skip"; ?> +<?php if (!extension_loaded('simplexml')) print "skip SimpleXML required"; ?> --FILE-- <?php diff --git a/ext/sqlite3/php_sqlite3.h b/ext/sqlite3/php_sqlite3.h index c402e6ff9..8e6825eda 100644 --- a/ext/sqlite3/php_sqlite3.h +++ b/ext/sqlite3/php_sqlite3.h @@ -16,12 +16,12 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_sqlite3.h 321634 2012-01-01 13:15:04Z felipe $ */ +/* $Id: php_sqlite3.h 323634 2012-02-28 18:43:44Z stas $ */ #ifndef PHP_SQLITE3_H #define PHP_SQLITE3_H -#define PHP_SQLITE3_VERSION "0.7-dev" +#define PHP_SQLITE3_VERSION "0.7" extern zend_module_entry sqlite3_module_entry; #define phpext_sqlite3_ptr &sqlite3_module_entry diff --git a/ext/standard/credits_ext.h b/ext/standard/credits_ext.h index e96864372..7bdb41e60 100644 --- a/ext/standard/credits_ext.h +++ b/ext/standard/credits_ext.h @@ -43,7 +43,7 @@ CREDIT_LINE("Multibyte String Functions", "Tsukada Takuya, Rui Hirokawa"); CREDIT_LINE("MySQL driver for PDO", "George Schlossnagle, Wez Furlong, Ilia Alshanetsky, Johannes Schlueter"); CREDIT_LINE("MySQL", "Zeev Suraski, Zak Greant, Georg Richter"); CREDIT_LINE("MySQLi", "Zak Greant, Georg Richter, Andrey Hristov, Ulf Wendel"); -CREDIT_LINE("MySQLnd", "Georg Richter, Andrey Hristov, Ulf Wendel"); +CREDIT_LINE("MySQLnd", "Andrey Hristov, Ulf Wendel, Georg Richter"); CREDIT_LINE("OCI8", "Stig Bakken, Thies C. Arntzen, Andy Sautins, David Benson, Maxim Maletsky, Harald Radi, Antony Dovgal, Andi Gutmans, Wez Furlong, Christopher Jones, Oracle Corporation"); CREDIT_LINE("ODBC driver for PDO", "Wez Furlong"); CREDIT_LINE("ODBC", "Stig Bakken, Andreas Karajannis, Frank M. Kromann, Daniel R. Kalowsky"); @@ -69,7 +69,7 @@ CREDIT_LINE("SOAP", "Brad Lafountain, Shane Caraveo, Dmitry Stogov"); CREDIT_LINE("Sockets", "Chris Vandomelen, Sterling Hughes, Daniel Beulshausen, Jason Greene"); CREDIT_LINE("SPL", "Marcus Boerger, Etienne Kneuss"); CREDIT_LINE("SQLite 3.x driver for PDO", "Wez Furlong"); -CREDIT_LINE("SQLite3", "Scott MacVicar, Ilia Alshanetsky"); +CREDIT_LINE("SQLite3", "Scott MacVicar, Ilia Alshanetsky, Brad Dewar"); CREDIT_LINE("Sybase-CT", "Zeev Suraski, Tom May, Timm Friebe"); CREDIT_LINE("System V Message based IPC", "Wez Furlong"); CREDIT_LINE("System V Semaphores", "Tom May"); diff --git a/ext/standard/tests/streams/bug47997.phpt b/ext/standard/tests/streams/bug47997.phpt index 1ad28907f..f13a19d1f 100644 --- a/ext/standard/tests/streams/bug47997.phpt +++ b/ext/standard/tests/streams/bug47997.phpt @@ -1,5 +1,7 @@ --TEST-- Bug #47997 (stream_copy_to_stream returns 1 on empty streams) +--INI-- +allow_url_fopen=1 --FILE-- <?php diff --git a/ext/standard/tests/streams/stream_get_line_nb.phpt b/ext/standard/tests/streams/stream_get_line_nb.phpt index 3e3848f54..ce981203f 100644 --- a/ext/standard/tests/streams/stream_get_line_nb.phpt +++ b/ext/standard/tests/streams/stream_get_line_nb.phpt @@ -3,7 +3,7 @@ stream_get_line() on non-blocking stream --SKIPIF-- <?php $sockets = @stream_socket_pair(STREAM_PF_UNIX, STREAM_SOCK_STREAM, 0); -if (!$sockets) die("skip"); +if (!$sockets) die("skip stream_socket_pair() should work"); fclose($sockets[0]); fclose($sockets[1]); ?> diff --git a/ext/standard/var_unserializer.c b/ext/standard/var_unserializer.c index 1c6ff9795..fb5cea107 100644 --- a/ext/standard/var_unserializer.c +++ b/ext/standard/var_unserializer.c @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: var_unserializer.c 321634 2012-01-01 13:15:04Z felipe $ */ +/* $Id: var_unserializer.c 323633 2012-02-28 18:36:10Z pajoye $ */ #include "php.h" #include "ext/standard/php_var.h" @@ -373,6 +373,9 @@ static inline long object_common1(UNSERIALIZE_PARAMETER, zend_class_entry *ce) return elements; } +#ifdef PHP_WIN32 +# pragma optimize("", off) +#endif static inline int object_common2(UNSERIALIZE_PARAMETER, long elements) { zval *retval_ptr = NULL; @@ -397,6 +400,9 @@ static inline int object_common2(UNSERIALIZE_PARAMETER, long elements) return finish_nested_data(UNSERIALIZE_PASSTHRU); } +#ifdef PHP_WIN32 +# pragma optimize("", on) +#endif PHPAPI int php_var_unserialize(UNSERIALIZE_PARAMETER) { diff --git a/ext/standard/var_unserializer.re b/ext/standard/var_unserializer.re index d86bf93ee..cf01ee28e 100644 --- a/ext/standard/var_unserializer.re +++ b/ext/standard/var_unserializer.re @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: var_unserializer.re 321634 2012-01-01 13:15:04Z felipe $ */ +/* $Id: var_unserializer.re 323633 2012-02-28 18:36:10Z pajoye $ */ #include "php.h" #include "ext/standard/php_var.h" @@ -379,6 +379,9 @@ static inline long object_common1(UNSERIALIZE_PARAMETER, zend_class_entry *ce) return elements; } +#ifdef PHP_WIN32 +# pragma optimize("", off) +#endif static inline int object_common2(UNSERIALIZE_PARAMETER, long elements) { zval *retval_ptr = NULL; @@ -403,6 +406,9 @@ static inline int object_common2(UNSERIALIZE_PARAMETER, long elements) return finish_nested_data(UNSERIALIZE_PASSTHRU); } +#ifdef PHP_WIN32 +# pragma optimize("", on) +#endif PHPAPI int php_var_unserialize(UNSERIALIZE_PARAMETER) { diff --git a/ext/xmlreader/tests/expand.phpt b/ext/xmlreader/tests/expand.phpt index 99c0604b8..c77e6c31b 100644 --- a/ext/xmlreader/tests/expand.phpt +++ b/ext/xmlreader/tests/expand.phpt @@ -2,7 +2,7 @@ XMLReader: Expand into existing DOM documet --SKIPIF-- <?php if (!extension_loaded("xmlreader")) print "skip"; -if (!extension_loaded("dom")) print "skip"; +if (!extension_loaded("dom")) print "skip DOM extension required"; $reader = new XMLReader(); if (!method_exists($reader, 'expand')) print "skip"; ?> diff --git a/main/php_version.h b/main/php_version.h index 6c6f76b93..d3fb8f322 100644 --- a/main/php_version.h +++ b/main/php_version.h @@ -3,6 +3,6 @@ #define PHP_MAJOR_VERSION 5 #define PHP_MINOR_VERSION 4 #define PHP_RELEASE_VERSION 0 -#define PHP_EXTRA_VERSION "RC8" -#define PHP_VERSION "5.4.0RC8" +#define PHP_EXTRA_VERSION "" +#define PHP_VERSION "5.4.0" #define PHP_VERSION_ID 50400 diff --git a/sapi/cli/tests/004.phpt b/sapi/cli/tests/004.phpt index a1a01355d..378515d46 100644 --- a/sapi/cli/tests/004.phpt +++ b/sapi/cli/tests/004.phpt @@ -4,7 +4,7 @@ show information about function <?php include "skipif.inc"; if (!extension_loaded("reflection")) { - die("skip"); + die("skip reflection extension required"); } ?> --FILE-- diff --git a/sapi/cli/tests/005.phpt b/sapi/cli/tests/005.phpt index 914e33c7f..84b0f9844 100644 --- a/sapi/cli/tests/005.phpt +++ b/sapi/cli/tests/005.phpt @@ -4,7 +4,7 @@ show information about class <?php include "skipif.inc"; if (!extension_loaded("reflection")) { - die("skip"); + die("skip reflection extension required"); } ?> --FILE-- diff --git a/sapi/cli/tests/006.phpt b/sapi/cli/tests/006.phpt index 530bfbd9f..3f3f3c13a 100644 --- a/sapi/cli/tests/006.phpt +++ b/sapi/cli/tests/006.phpt @@ -4,7 +4,7 @@ show information about extension <?php include "skipif.inc"; if (!extension_loaded("reflection") || !extension_loaded("session")) { - die("skip"); + die("skip reflection and session extensions required"); } ?> --INI-- diff --git a/tests/output/bug60282.phpt b/tests/output/bug60282.phpt index 66ee3969e..08bcc0f20 100644 --- a/tests/output/bug60282.phpt +++ b/tests/output/bug60282.phpt @@ -1,7 +1,7 @@ --TEST-- Bug #60282 (Segfault when using ob_gzhandler() with open buffers) --SKIPIF-- -<?php if (!extension_loaded("zlib")) print "skip"; ?> +<?php if (!extension_loaded("zlib")) print "skip Zlib extension required"; ?> --FILE-- <?php ob_start(); |
