Compare commits

..
202 Commits
Author SHA1 Message Date
Anatol Belski cc766d7730 set versions and update NEWS 2017-01-17 10:51:38 +01:00
Christoph M. Becker e720bc03b1 Fix #73868: DOS vulnerability in gdImageCreateFromGd2Ctx()
We must not pretend that there are image data if there are none. Instead
we fail reading the image file gracefully.

(cherry picked from commit cdb648dc4115ce0722f3cc75e6a65115fc0e56ab)
(cherry picked from commit f1b2afc9d9)
2017-01-17 09:43:01 +01:00
Christoph M. Becker 761cc2b766 Fix #73869: Signed Integer Overflow gd_io.c
GD2 stores the number of horizontal and vertical chunks as words (i.e. 2
byte unsigned). These values are multiplied and assigned to an int when
reading the image, what can cause integer overflows. We have to avoid
that, and also make sure that either chunk count is actually greater
than zero. If illegal chunk counts are detected, we bail out from
reading the image.

(cherry picked from commit 5b5d9db3988b829e0b121b74bb3947f01c2796a1)
(cherry picked from commit d2274b01cb)
2017-01-17 09:42:45 +01:00
Anatol Belski 564a161258 Revert "Merge branch 'bugfix_timeout_61471' of https://github.com/axot/php-src into PHP-7.0"
This reverts commit a8931df672, reversing
changes made to f2f35a2b27.

(cherry picked from commit 57736cc937)
2017-01-05 06:20:22 +01:00
Nikita Popov 20d9ebc6fb Merge branch 'PHP-5.6' into PHP-7.0
(cherry picked from commit 2022dacb99)
2017-01-05 04:43:46 +01:00
Anatol Belski 81c25cd043 quick fix for the base branch version parsing, not perfect still
(cherry picked from commit 2ca5aa9418)
2017-01-05 01:57:10 +01:00
Anatol Belski 7864e31039 prepare RC versions 2017-01-05 00:57:19 +01:00
Nikita Popov b47c49d7a0 Merge branch 'PHP-5.6' into PHP-7.0 2017-01-05 00:24:25 +01:00
Nikita Popov f697874e3f Add tests for delayed __wakeup() 2017-01-05 00:21:48 +01:00
Nikita Popov 0426b916df Implement delayed __wakeup 2017-01-05 00:21:48 +01:00
Joe Watkins 125578c636 Merge branch 'pull-request/2273' into PHP-7.0
* pull-request/2273:
  Update copyright headers to 2017
2017-01-04 22:24:34 +00:00
Sammy Kaye Powers 6550f3ad7e Update copyright header to 2017 in calendar.c 2017-01-04 11:15:47 -06:00
Sammy Kaye Powers 478f119ab9 Update copyright headers to 2017 2017-01-04 11:14:55 -06:00
Anatol Belski 0484c6efe0 switch to the beta1 SDK for AppVeyor build 2017-01-04 15:54:47 +01:00
Joe Watkins 0d09b98ac4 remove duplicate test 2017-01-04 14:50:59 +00:00
Joe Watkins b39310c715 fix test 2017-01-04 14:36:18 +00:00
Joe Watkins 63d116e571 Merge branch 'pull-request/1312' into PHP-7.0
* pull-request/1312:
  get_defined_functions extra parameter to exclude disabled functions
  news entry for PR #1312
2017-01-04 13:34:31 +00:00
Dorin Marcoci e914abff1e Fix PDO tests to match SQL standard syntax and pass Firebird tests. 2017-01-03 17:48:52 +01:00
Anatol Belski 3a1ae7bb9b better skip on files
some more could be added
2017-01-03 13:25:16 +01:00
Nikita Popov b3889d4b20 Fix build 2017-01-03 12:16:35 +01:00
Vince cfd6e14842 Fix Bug #73462 - Persistent connections don't set $connect_errno
Persistent connections skipped resetting $connect_error and $connect_errno values
This adds the "clear error" line to persistent connections for consistency
2017-01-03 12:13:08 +01:00
Joe Watkins ff4e330eae Merge branch 'pull-request/1905'
* pull-request/1905:
   pack()/unpack() for Big Endian float/double and Little Endian float/double
2017-01-03 10:50:19 +00:00
Rasmus Lerdorf 19b757dacd Fix opcache test dependencies 2017-01-02 22:30:28 -08:00
Stanislav Malyshev 68ac602b28 Use correct string release function 2017-01-02 22:08:25 -08:00
Stanislav Malyshev ea6e54aff3 Fix error reporting 2017-01-02 21:59:44 -08:00
Stanislav Malyshev a6cdefe043 Merge branch 'PHP-7.0.15' into PHP-7.0
* PHP-7.0.15:
  Fix #73832 - leave the table in a safe state if the size is too big.
  Fix bug #73831 - NULL Pointer Dereference while unserialize php object
2017-01-02 21:35:42 -08:00
Stanislav Malyshev 7f0de1a138 Merge branch 'PHP-5.6' into PHP-7.0
* PHP-5.6:
  Fix bug #73737 FPE when parsing a tag format
  Fix bug #73773 - Seg fault when loading hostile phar
  Fix bug #73825 - Heap out of bounds read on unserialize in finish_nested_data()
  Fix bug #73768 - Memory corruption when loading hostile phar
  Fix int overflows in phar (bug #73764)
2017-01-02 21:01:35 -08:00
Stanislav Malyshev fa2125df67 Merge branch 'PHP-5.6.30' into PHP-5.6
* PHP-5.6.30:
  Fix bug #73737 FPE when parsing a tag format
  Fix bug #73773 - Seg fault when loading hostile phar
  Fix bug #73825 - Heap out of bounds read on unserialize in finish_nested_data()
  Fix bug #73768 - Memory corruption when loading hostile phar
  Fix int overflows in phar (bug #73764)
2017-01-02 20:56:32 -08:00
Stanislav Malyshev 4cc0286f2f Fix #73832 - leave the table in a safe state if the size is too big. 2017-01-02 20:14:05 -08:00
Anatol Belski d2298c3cec set exclude AppVeyor branches and ignore builds on NEWS updates 2017-01-03 02:15:20 +01:00
Nikita Popov e1e5caf9d4 Fix early free 2017-01-03 02:12:28 +01:00
Anatol Belski f12f0b2bc2 Disable pdb generation for AppVeyor
It is not needed for the test runs and would speedup the compilation
phase.
2017-01-03 01:07:55 +01:00
Nikita Popov 20c172d459 Add NEWS entries 2017-01-02 23:35:27 +01:00
Nikita Popov 593b6cd0a8 Optimize get_browser() using prefix and contains checks
Avoid expensive regex compilations by checking for prefix
and contained segments beforehand.
2017-01-02 23:31:27 +01:00
Nikita Popov b06fb88cf9 Optimize browscap loading and representation
Avoid many string duplications, use interning (browscap-local, of
course), reduce pattern size, use more compact key-value
representation, build result array only on demand.
2017-01-02 23:30:56 +01:00
Nikita Popov 76a1d3f153 Add get_browser() test against larger corpus
Testing corpus provided by Anatol against current browscap.ini lite.

About 30% of all agents are not recognized by this browscap.ini,
but this should give us decent coverage.
2017-01-02 23:30:27 +01:00
Mitch Hagstrand c019d33267 Fix for nowait.phpt failing intermittently
The parent process was releasing the child semaphore
after the child process continued execution. Now
the child semaphore is released before the child
process continues execution.
2017-01-02 16:44:43 +00:00
vanviegen 732f67ee6f Fix for sporadic segfault with MYSQLI_OPT_INT_AND_FLOAT_NATIVE
Fixes bug #73800

news entry for PR #2250
2017-01-02 14:54:45 +00:00
Joe Watkins 9f4d05acec news entry for PR #2267 2017-01-02 11:57:45 +00:00
Arnout Boks a8955926c2 Fixed #67474 (getElementsByTagNameNS and default namespace)
This bug was caused by the fact that dom_get_elements_by_tag_name_ns_raw
uses an empty string to filter on the default namespace (as NULL means
'no filter'), whereas in the node itself the default namespace is
signalled by nodep->ns being null.
2017-01-02 11:56:37 +00:00
Arnout Boks 19c4a2ef19 Add (failing) testcase for bug #67474 2017-01-02 11:56:33 +00:00
Joe Watkins 3e798c4a5f Merge branch 'PHP-7.0' of git.php.net:/php-src into PHP-7.0
* 'PHP-7.0' of git.php.net:/php-src: (146 commits)
  Flush stderr on win32 in cli_log_message
  Fixed bug #73154
  FIx bug #70213
  Fix dom class can't be inherited by the internal class
  Another try at making concat_003 more reliable
  Fix flaky openssl_pkey_new test
  Make Opcache tests using the cli server more reliable
  Revert "Fix #73530: Unsetting result set may reset other result set"
  define php_ap_map_http_request_error function for older httpd only
  add old versions of httpd support
  Disable AppVeyor fast_finish
  Makes the sapi web server and curl tests more reliable
  Fixes the curl tests to be more reliable in Travis CI
  Interpretation of curl_setopt values for boolean parameters
  Fixes #65689. PDO_Firebrid / exec() does not free allocated statement.
  Fix alpn_ctx leaking in openssl
  Fixed bug #73373 (deflate_add does not verify that output was not truncated)
  Fix IS_UNDEF comparisons in opcache
  Fixed bug #73704 (phpdbg shows the wrong line in files with shebang)
  Increase timing quota for small string concat test
  ...
2017-01-02 09:44:02 +00:00
Mitch Hagstrand e077735b03 Fix nowait.phpt to no longer depend on sleeping
In Travis CI the nowait.phpt test sometimes fails because of
the usleep() not being long enough ensure proper
execution order. Instead of depending on sleeping the
test now uses two semaphores to guarantee execution order.
2017-01-02 09:43:47 +00:00
Nikita Popov 935b5cb11e Flush stderr on win32 in cli_log_message
This allows us to unfork a bunch of tests for Windows.
2017-01-01 21:09:02 +01:00
Nikita Popov 4877641962 Fixed bug #73154
The object that is being serialized may be destroyed during the
execution of __sleep(), so operate on a copy instead.
2017-01-01 19:24:41 +01:00
Nikita Popov 9f560baef5 Merge branch 'PHP-5.6' into PHP-7.0 2017-01-01 14:12:26 +01:00
Nikita Popov a65ad951ad FIx bug #70213 2017-01-01 14:10:49 +01:00
dreamszhu 3c977618e1 Fix dom class can't be inherited by the internal class 2017-01-01 12:20:04 +01:00
Stanislav Malyshev 8d2539fa0f Fix bug #73831 - NULL Pointer Dereference while unserialize php object 2016-12-31 20:14:20 -08:00
Stanislav Malyshev 1cda0d7c2f Fix bug #73737 FPE when parsing a tag format 2016-12-31 19:31:49 -08:00
Stanislav Malyshev e5246580a8 Fix bug #73773 - Seg fault when loading hostile phar 2016-12-31 18:47:50 -08:00
Stanislav Malyshev 16b3003ffc Fix bug #73825 - Heap out of bounds read on unserialize in finish_nested_data() 2016-12-30 16:59:46 -08:00
Stanislav Malyshev b28b8b2fee Fix bug #73768 - Memory corruption when loading hostile phar 2016-12-30 15:57:24 -08:00
Stanislav Malyshev ca46d0acbc Fix int overflows in phar (bug #73764) 2016-12-30 15:39:48 -08:00
Christoph M. Becker 97e16ebbe2 Merge branch 'PHP-7.0' of https://git.php.net/repository/php-src into PHP-7.0
* 'PHP-7.0' of https://git.php.net/repository/php-src:
  Another try at making concat_003 more reliable
  Fix flaky openssl_pkey_new test
  Make Opcache tests using the cli server more reliable
2016-12-30 13:56:34 +01:00
Nikita Popov 432660f73f Another try at making concat_003 more reliable
Use array_fill() for the array population loop -- this isn't the
part that is being tested and on PHP 7.0 w/o opcache this duplicates
the inner array a lot.
2016-12-29 21:39:40 +01:00
Nikita Popov 78675ebd9a Fix flaky openssl_pkey_new test
Public key size may vary by one bit... switch to using %d for
key sizes.
2016-12-29 20:59:28 +01:00
Mitch Hagstrand d0fcc74110 Make Opcache tests using the cli server more reliable
Same fix already applied to ext/curl/tests/server.inc
and sapi/cli/tests/php_cli_server.inc

1. Increases the amount of time for the PHP built-in server to accept a connection
2. Outputs an error if the PHP built-in server fails
2016-12-29 20:56:45 +01:00
Christoph M. Becker 88d1a2c5aa Merge branch 'PHP-5.6' into PHP-7.0
* PHP-5.6:
  Revert "Fix #73530: Unsetting result set may reset other result set"

# Conflicts:
#	ext/sqlite3/sqlite3.c
2016-12-29 13:47:28 +01:00
Christoph M. Becker 2ba3b27594 Revert "Fix #73530: Unsetting result set may reset other result set"
This reverts commit eb570294a2.

That commit caused a regression, so it's probably best to revert it, and
to tackle the issue for the next minor release.
2016-12-29 12:59:04 +01:00
Xinchen Hui a8931df672 Merge branch 'bugfix_timeout_61471' of https://github.com/axot/php-src into PHP-7.0
* 'bugfix_timeout_61471' of https://github.com/axot/php-src:
  define php_ap_map_http_request_error function for older httpd only
  add old versions of httpd support
  typo fixed
  bug fixed #61471 in apache2handler
2016-12-29 15:46:47 +08:00
Zheng SHAO 587497e3a9 define php_ap_map_http_request_error function for older httpd only 2016-12-29 16:07:05 +09:00
Zheng SHAO d92606a4be add old versions of httpd support 2016-12-29 00:41:56 +09:00
Nikita Popov f2f35a2b27 Disable AppVeyor fast_finish
As NTS and TS fail in different ways, we want to see both.
2016-12-27 22:20:40 +01:00
Mitch Hagstrand 2d51267c07 Makes the sapi web server and curl tests more reliable
1. Increased the time for the sapi/cli/tests/php_cli_server.inc to accept connections.
2. sapi/cli/tests/php_cli_server.inc has errors messages and a `stop` function.
3. bug67429.phpt uses the `stop` function to shutdown the webserver before starting a new one.
4. Removed ext/curl/tests/bug48203_multi-win32.phpt test now that ext/curl/tests/bug48203_multi.phpt
   runs on Windows also.
2016-12-27 21:52:05 +01:00
Mitch Hagstrand 92678d1a83 Fixes the curl tests to be more reliable in Travis CI
1. Increases the amount of time for the PHP built-in server to accept a connection
2. Outputs an error if the PHP built-in server fails
3. In bug48203_multi.phpt the test no longer starts and stops multiple PHP built-in servers
2016-12-27 21:52:05 +01:00
dedal.qq 7f29e7c678 Interpretation of curl_setopt values for boolean parameters 2016-12-25 22:32:49 -08:00
Dorin Marcoci e926bf6507 Fixes #65689. PDO_Firebrid / exec() does not free allocated statement. 2016-12-25 22:06:20 -08:00
Bob Weinand ac1372d811 Fix alpn_ctx leaking in openssl 2016-12-22 23:34:07 +01:00
Bob Weinand 8823b68c41 Fixed bug #73373 (deflate_add does not verify that output was not truncated) 2016-12-22 15:29:36 +01:00
Sébastien Santoro 25c96f92f4 Fix IS_UNDEF comparisons in opcache
These conditions were formerly `!q->pData` and `!p->pData`, and should
now be detected as undefined variables, using the special type IS_UNDEF.

Incidentally, this syntax raised a logical-not-parentheses compiler
warning, now gone.
2016-12-22 12:46:14 +01:00
Bob Weinand 3b2b080cbc Fixed bug #73704 (phpdbg shows the wrong line in files with shebang) 2016-12-22 00:39:24 +01:00
Nikita Popov c41826d1e6 Increase timing quota for small string concat test
Test is regularly failing on Travis.
2016-12-21 21:27:47 +01:00
David Walker 5733fd1caf Fix #73753 - Unpacked Arrays and Duplication 2016-12-21 21:18:20 +01:00
Bob Weinand becda86ae5 Fix issue with -- in phpdbg command line 2016-12-21 02:42:23 +01:00
Dmitry Stogov 3c6a2fb08c Fixed bug #73792 (invalid foreach loop hangs script) 2016-12-20 16:48:57 +03:00
Zheng SHAO 884e2a0519 Fixed NEWS conflicts 2016-12-20 09:48:47 +09:00
Anatol Belski 9fb8ea58b5 update NEWS 2016-12-19 01:07:08 +01:00
Dorin Marcoci eb33d08f1e Compatibility with Firebird & Oracle select syntax. 2016-12-19 01:06:24 +01:00
Anatol Belski 88c1491c6d fix proto 2016-12-19 00:50:29 +01:00
Dorin Marcoci cf46ac1179 Cursor is not opened on singleton selects.
Test case for unregistered bug on FB3 singleton selects

Set error mode to warning instead of exception.
2016-12-18 21:53:51 +01:00
Anatol Belski 3e48baa49d fix arg spec and datatype, follow up on 73594 2016-12-18 21:16:35 +01:00
Bruce Weirdan c78fd4568e Fixed bug #73594
Skip the tests when local resolver does not behave

* Added SKIPIF sections to check local resolver
* Added test to check $authns parameter
2016-12-18 20:44:33 +01:00
Nikita Popov c1af9f282f Fix bug #46103 2016-12-18 17:10:19 +01:00
Nikita Popov eb636fcb56 Add test for get_browser() in object mode
All other tests only check array return values...
2016-12-18 13:16:25 +01:00
Anatol Belski 58a945cf68 Merge branch 'PHP-5.6' into PHP-7.0
* PHP-5.6:
  fix C89 compat
2016-12-17 20:45:22 +01:00
Anatol Belski 79e47aae41 fix C89 compat 2016-12-17 20:43:32 +01:00
Anatol Belski 0cd1c18853 replace default appveyor build version 2016-12-17 13:12:34 +01:00
Zheng SHAO fb98907d2d typo fixed 2016-12-17 20:26:09 +09:00
Anatol Belski 9afb05dcd1 add Appveyor fast_fail 2016-12-17 11:26:13 +01:00
Anatol Belski 158d11d53d improve error check 2016-12-17 11:25:06 +01:00
Zheng SHAO 9b65a10256 bug fixed #61471 in apache2handler 2016-12-17 13:37:58 +09:00
Anatol Belski 53c4c38878 turn mcrypt back on for Appveyor runs
(cherry picked from commit fca2312fbe)
2016-12-17 00:13:16 +01:00
Anatol Belski 576ed049c5 add build status badge
(cherry picked from commit 3a886c9d20)
2016-12-17 00:13:01 +01:00
Anatol Belski aeebae641e add scripts for AppVeyor integration
(cherry picked from commit c737d6fb49)
2016-12-17 00:12:49 +01:00
Sara Golemon 5004ae2b62 Silence warning from unhandled enum
(cherry picked from commit 57bbe2c140)
2016-12-17 00:12:33 +01:00
Anatol Belski 2f9e928af8 fix leaking streams and memory mapped files
(cherry picked from commit f1ff23095b)
2016-12-17 00:12:19 +01:00
Nikita Popov fa92a16e46 Fix stack management in ini scanner 2016-12-16 20:54:46 +01:00
Anatol Belski 8bc3f179ce make timing check more forgiving in these tests
Particularly on slower VMs, the sporadic fails can still happen.
The timing is kept in an uncritical range, but allows the tests
pass there. Mayby, it'd make sense to introduce a new group for
this kind of tests, so tests requiring exact time measurement
can be avoided on unsuitable environments.
2016-12-15 12:20:37 +01:00
Matteo Beccati 7c696fa886 Merge branch 'PHP-5.6' into PHP-7.0
* PHP-5.6:
  Skip tests when secure_file_priv dir not writable
2016-12-15 09:31:54 +01:00
Matteo Beccati 0c9324ea9b Skip tests when secure_file_priv dir not writable 2016-12-15 09:31:00 +01:00
Yasuo Ohgaki 577b081a20 Add missing UPGRADING entry. Manual is updated before 7.0 release. 2016-12-15 16:16:45 +09:00
Anatol Belski 5136048064 extend skip section
The day light offset is calculated based on the system TZ, so with
an unsuitable one there's no way to workaround the false positives.
2016-12-14 19:53:55 +01:00
Nikita Popov f99bf70360 Partially fix bug #70492
The libmagic portion is missing.
2016-12-14 18:11:27 +01:00
Anatol Belski d663296e3b cleanup temporary data 2016-12-14 12:33:13 +01:00
Nikita Popov 4b2cc62e26 More fixes for bug #73089
Insert a lot more DEREFs. Some may not be necessary, but better
safe than sorry. I'm thinking the soap_hash_str_find_deref function
should become part of the zend_hash API -- we need this in many
places.
2016-12-13 17:56:38 +01:00
Andrey Hristov 13fc1b92ca Add a bit more test cases (edge cases) to the BIT test case 2016-12-12 21:52:36 +02:00
Andrey Hristov a881ea7d86 Add a test case to test fetching of multiple rows with bit values. 2016-12-12 21:28:33 +02:00
Andrey Hristov e15c418c4c Fix off by 1 problem.
The problem was manifestated only with BIT columns and only when more than
one row was fetched. The problem was coming from the fact that in pre-7.0
times mysqlnd was using a no-copy optimization. This optimization kept the
strings (and also the BIT mask equivalents as strings) in the packet and the
zval referred to them. 7.0+ zvals cannot use no-copy and always copy. Because
of this the allocated memory for the packet was reduced by 1 by the person who
ported the driver, but the starting address of the bit area wasn't reduced.
Because of this the bit_area started at wrong address and the length decoded
wrong.
2016-12-12 21:11:02 +02:00
Anatol Belski 7a8774ade4 better way to get ACP 2016-12-12 01:54:22 +01:00
Anatol Belski 3473b519c0 fix datatype for zpp, yet a followup on bug #73679 2016-12-12 01:26:06 +01:00
Anatol Belski ee2625e252 update NEWS 2016-12-11 17:39:08 +01:00
Anatol Belski 1d80fb2cdb Fixed bug #73679 DOTNET read access violation using invalid codepage 2016-12-11 17:06:55 +01:00
Anatol Belski 66ad7918b8 fix uninitialized member 2016-12-08 17:15:06 +01:00
Ferenc Kovacs a4d6d16b3b Merge branch 'PHP-5.6' into PHP-7.0 2016-12-08 07:09:41 +01:00
Ferenc Kovacs 60da307c61 update NEWS 2016-12-08 07:05:32 +01:00
Anatol Belski ff6565462e git clean section 2016-12-08 03:24:18 +01:00
Anatol Belski 73fb2192d2 update NEWS 2016-12-07 21:22:34 +01:00
Dorin Marcoci 13ffa88e1f Fixed bug #72931 PDO_FIREBIRD with Firebird 3.0 not work on returning statement 2016-12-07 21:06:11 +01:00
Markus Staab dd77116fb0 Fixed typo in skipif error message 2016-12-07 13:35:58 +01:00
Dmitry Stogov 3c8c347fa7 Check if PHP is in execution state. 2016-12-07 15:12:18 +03:00
Anatol Belski 991ca7f7d7 update NEWS 2016-12-06 20:25:27 +01:00
Bob Weinand 7e12b5da71 Fixed issue getting executable lines from custom wrappers
See also krakjoe/phpdbg#161
2016-12-06 18:29:48 +01:00
Anatol Belski fee5c049a8 Merge branch 'PHP-5.6' into PHP-7.0
* PHP-5.6:
  fix leak, take 2
2016-12-06 16:17:28 +01:00
Anatol Belski c89306ac52 fix leak, take 2 2016-12-06 16:12:39 +01:00
Anatol Belski 9b1430140a fix leak, take on 7.x 2016-12-06 14:42:59 +01:00
Anatol Belski f2fc812b78 Merge branch 'PHP-5.6' into PHP-7.0
* PHP-5.6:
  fix leak, take on 5.6
2016-12-06 14:36:52 +01:00
Anatol Belski b04d60626d fix leak, take on 5.6 2016-12-06 14:34:27 +01:00
Xinchen Hui 358bd77b23 Fixed bug #73663 ("Invalid opcode 65/16/8" occurs with a variable created with list()) 2016-12-06 17:32:32 +08:00
Stanislav Malyshev 183b4d78aa Merge branch 'PHP-5.6' into PHP-7.0
* PHP-5.6:
  This still leaks memory, I don't have enough knowledge in WDDX code to fix them :(
2016-12-05 22:33:33 -08:00
Stanislav Malyshev d7ce944cf1 This still leaks memory, I don't have enough knowledge in WDDX code to fix them :( 2016-12-05 22:32:59 -08:00
Stanislav Malyshev 1d59ed7524 Fix bug #73645 - int/size_t confusion 2016-12-05 22:16:00 -08:00
Stanislav Malyshev 6292fe84d3 Merge branch 'PHP-5.6' into PHP-7.0
* PHP-5.6:
  Fix bug #73631 - Invalid read when wddx decodes empty boolean element
2016-12-05 21:58:55 -08:00
Stanislav Malyshev 266ecb6d0a Fix bug #73631 - Invalid read when wddx decodes empty boolean element 2016-12-05 21:40:55 -08:00
Dmitry Stogov a983b728a7 Fixed behavior of failing compound assignments (they shouldn't change the source value when exception thrown during type converion). 2016-12-05 21:45:08 +03:00
Anatol Belski eddca73ad2 fix test
This test depends on connection flags modifable from teh env,
that can affect the exact function called.
2016-12-04 22:42:39 +01:00
Anatol Belski 1eb3f01c68 fix test
On Windows, either doubled backslashes or forward slashes are supported
on the server side.
2016-12-04 22:27:17 +01:00
Anatol Belski 69fbc751ff fix ident 2016-12-04 20:59:12 +01:00
Anatol Belski 8e209d0435 fix test 2016-12-04 17:28:43 +01:00
Anatol Belski 10a2ceef3b enforce the test ini usage for the child process 2016-12-04 14:01:40 +01:00
Bob Weinand 46d708a1b6 Fix PHP-7.0 build (wrong fix for the branch) 2016-12-03 23:39:54 +01:00
Bob Weinand ffc1ef1eed Fix leak when using $this outside of object context 2016-12-03 18:28:08 +01:00
Christoph M. Becker a8ec79e27f Merge branch 'PHP-5.6' into PHP-7.0 2016-12-03 14:18:00 +01:00
Adrien Crivelli cf2496140d Fix minor typo 2016-12-03 14:15:52 +01:00
Nikita Popov 8f7325fc24 Fix leak in shift_right_function 2016-12-02 17:03:05 +01:00
Bob Weinand 3c1a0d75bf Fix test of wrong operator in self_xor.phpt 2016-12-02 15:41:47 +01:00
Dmitry Stogov 68558ab71d Eliminated useless exception check 2016-12-02 15:39:33 +03:00
Dmitry Stogov 2b70d44b57 Fixed behavior of failing compound assignments (they shouldn't change the source value when exception thrown during type converion). 2016-12-02 15:13:55 +03:00
Dmitry Stogov dbf39cddd9 Fixed behavior of failing compound assignments (they shouldn't change the source value). 2016-12-02 13:58:44 +03:00
Dmitry Stogov 67d90a4870 Fixed possible memory leak in &=, |=, ^=. 2016-12-02 12:34:46 +03:00
Bob Weinand fcaccbaa22 Fix valgrind issue when throwing due to yield from aborted generator 2016-12-01 15:21:28 +01:00
Anatol Belski 2252d4e59d fork tests 2016-12-01 14:52:18 +01:00
Dmitry Stogov 7f22e3c879 Fixed bad merge 2016-12-01 16:21:57 +03:00
Dmitry Stogov b7b7dd8cea Merge branch 'PHP-5.6' into PHP-7.0
* PHP-5.6:
  Workaround for GCC-4.9.2 bug
  oops, changed in wrong place
2016-12-01 15:50:05 +03:00
Dmitry Stogov 1cd566e13f Workaround for GCC-4.9.2 bug 2016-12-01 15:46:52 +03:00
Anatol Belski 043d8e2fe1 improve skipif 2016-12-01 13:32:10 +01:00
Dmitry Stogov 003346c450 Simpler overflow check 2016-12-01 10:30:02 +03:00
Nuno Lopes d5a2af6d1c Merge branch 'PHP-7.0' of https://git.php.net/push/php-src into PHP-7.0 2016-11-30 14:41:26 -05:00
Bob Weinand 344ef050aa Fix run-tests.php to always include TEST_PHPDBG_EXECUTABLE if phpdbg available 2016-11-30 11:44:10 +01:00
Bob Weinand b73a3afff3 Fixed bug #73615 (phpdbg without option never load .phpdbginit at startup) 2016-11-30 02:56:47 +01:00
Dmitry Stogov 9a9ad56af0 Fixed bug #73586 (php_user_filter::$stream is not set to the stream the filter is working on). 2016-11-28 12:54:47 +03:00
Dmitry Stogov 970f21be97 Fixed calling generators through magic __call() 2016-11-28 12:20:19 +03:00
Stanislav Malyshev c8778eb293 oops, changed in wrong place 2016-11-27 16:11:41 -08:00
Stanislav Malyshev fe04f5494a Merge branch 'PHP-5.6' into PHP-7.0
* PHP-5.6:
  add NEWS
2016-11-27 15:38:22 -08:00
Stanislav Malyshev 36d02a36ae add NEWS 2016-11-27 15:38:09 -08:00
Stanislav Malyshev f1a9851c3e Merge branch 'PHP-5.6' into PHP-7.0
* PHP-5.6:
  Fix #68447: grapheme_extract take an extra trailing character
2016-11-27 15:36:29 -08:00
Stanislav Malyshev 8856b3a63c Merge branch 'pull-request/1974' into PHP-5.6
* pull-request/1974:
  Fix #68447: grapheme_extract take an extra trailing character
2016-11-27 15:34:58 -08:00
Stanislav Malyshev 1cb58ead70 Merge branch 'PHP-5.6' into PHP-7.0
* PHP-5.6:
  Fix #73549: Use after free when stream is passed to imagepng
2016-11-27 14:53:27 -08:00
Christoph M. Becker 5049ef2f1c Fix #73549: Use after free when stream is passed to imagepng
If a stream is passed to imagepng() or other image output functions,
opposed to a filename, we must not close this stream.
2016-11-27 14:51:02 -08:00
Matteo Beccati 54c04befc2 Merge branch 'PHP-5.6' into PHP-7.0
* PHP-5.6:
  Fix occasionaly failing test
2016-11-27 10:20:38 +01:00
Matteo Beccati 2a80758fd5 Fix occasionaly failing test 2016-11-27 10:20:13 +01:00
Matteo Beccati f9b158df07 Merge branch 'PHP-5.6' into PHP-7.0
* PHP-5.6:
  Added missing array key to $JUNIT
2016-11-27 10:08:04 +01:00
Matteo Beccati 28cf42568b Added missing array key to $JUNIT 2016-11-27 10:07:05 +01:00
Stanislav Malyshev 343c056772 Merge branch 'PHP-5.6' into PHP-7.0
* PHP-5.6:
  acinclude.m4: fix krb5-config detection and usage in PHP_SETUP_KERBEROS.
  Add more mbfl string size checks (bug #73505)
2016-11-26 15:36:57 -08:00
Michael Orlitzky 114277ed45 acinclude.m4: fix krb5-config detection and usage in PHP_SETUP_KERBEROS.
When building with kerberos support (--with-kerberos), a few libraries
and flags need to be added to various parts of the build system. The
most reliable way to get those flags is through the krb5-config
program that ships with both major implementations of kerberos. The
PHP_SETUP_KERBEROS macro in acinclude.m4 attempts to detect
krb5-config, and use it.

However, there's a bug in that macro. The --with-kerberos parameter
accepts a directory where the kerberos libraries can be found. When a
directory is given, it is stored in the PHP_KERBEROS variable. The
following test,

  if test "$PHP_KERBEROS" = "yes" && test -x "$KRB5_CONFIG"; then

thus fails whenever a directory is passed to --with-kerberos, since it
compares a directory name against the string "yes". This causes
krb5-config to go unused, and some unreliable fallback logic is
attempted instead. One consequence of this is that the Heimdal
kerberos implementation cannot be substituted for the MIT one, at
least when a directory is passed to --with-kerberos.

This commit reverses the logic and checks for "$PHP_KERBEROS" != "no".
To confirm that this fixes the issue, one can inspect the "-l" library
flags that get appended to the command-line. On a machine with Heimdal
and the unmodified acinclude.m4, running

  ./configure --with-openssl --with-kerberos=/usr

will log (for example) to config.log,

  configure:18082: checking for krb5-config
  configure:18101: found /usr/bin/krb5-config
  configure:18114: result: /usr/bin/krb5-config
  configure:18450: checking for RAND_egd
  configure:18450: cc ... conftest.c ... -lgssapi_krb5 -lkrb5 ...

which are the library names for the MIT implementation. After patching
acinclude.m4 to negate the logic, the same command on the same machine
outputs (to config.log):

  configure:18450: cc ... conftest.c -lgssapi -lheimntlm ...

These are the correct library names for the Heimdal implementation.

PHP-Bug: 73214
2016-11-26 15:36:49 -08:00
Stanislav Malyshev bc85678df3 Add more mbfl string size checks (bug #73505) 2016-11-26 14:49:48 -08:00
Stanislav Malyshev 58cdd03d92 Merge branch 'PHP-5.6' into PHP-7.0
* PHP-5.6:
  Add more mbfl string size checks (bug #73505)
2016-11-26 14:48:40 -08:00
Stanislav Malyshev 5ee02b207d Add more mbfl string size checks (bug #73505) 2016-11-26 14:47:58 -08:00
Christoph M. Becker 003727d851 Fix #73612: preg_*() may leak memory
We have to make sure that collectible zvals end up in the GC root
buffer, to avoid memory leaks.
2016-11-26 15:34:27 +01:00
Stanislav Malyshev 8be94d46f8 Fix more size_t/int implicit conversions
Now the conversions are explicit and do checks. Not sure it's
the best way but at least we can see them now in the open.
2016-11-25 15:31:50 -08:00
Stanislav Malyshev bcc913fa8b Fix int/size_t confusion in isValidPharFilename (bug #73580) 2016-11-25 15:31:50 -08:00
Christoph M. Becker bc979aee6d Merge branch 'PHP-5.6' into PHP-7.0 2016-11-25 23:16:18 +01:00
Christoph M. Becker 7f529e3dee Fix #73582: Failing ext/gd/tests/imagettftext_charmap_order.phpt
This test is not supposed to work with JIS-mapped Japanese font support
enabled.
2016-11-25 23:14:08 +01:00
Anatol Belski a36dd1dfd8 add test for bug #57547 2016-11-24 19:25:47 +01:00
Derick Rethans c38f2c2a6b Updated to version 2016.10 (2016j) 2016-11-24 10:40:14 +00:00
Derick Rethans 0fcb39dbaa Empty merge 2016-11-24 10:40:13 +00:00
Derick Rethans 6785ea2340 Updated to version 2016.10 (2016j) 2016-11-24 10:40:11 +00:00
Xinchen Hui e19d263d81 Fixed bug #73585 (Logging of "Internal Zend error - Missing class information" missing class name)
Actually, I doubt how thing bug could be triggered
2016-11-24 12:02:02 +08:00
Ferenc Kovacs f8a7676fc8 Merge branch 'PHP-5.6' into PHP-7.0 2016-11-24 01:57:42 +01:00
Ferenc Kovacs e715dafae0 5.6.30 will be next 2016-11-24 01:54:23 +01:00
Nikita Popov 5b88c61580 Merge branch 'PHP-5.6' into PHP-7.0 2016-11-22 19:25:31 +01:00
Nikita Popov 2d19c92fc2 Make php_url_parse_ex() respect length argument
This should fix all out-of-bounds reads that could previously
occur if the string passed to php_url_parse_ex() is not NUL
terminated.
2016-11-22 19:24:24 +01:00
Nikita Popov f0f68c7274 Cleanup parse_url() query/fragment handling
The query/fragment handling was pretty convoluted, with many parts
being duplicated. Simplify by checking for fragment, then for query,
then for path.
2016-11-22 19:24:23 +01:00
Nikita Popov 9befad6fc2 Cleanup parse_url() gotos
Simplify some unnecessarily complicated code. In particular the
length updates are unnecessary (length is only used at the very
start) and we're goto'ing around a bit too much.
2016-11-22 19:24:21 +01:00
Anatol Belski 13c45021dc update libs_versions.txt 2016-11-22 12:42:57 +01:00
Anatol Belski 189deb9fa3 Merge branch 'PHP-5.6' into PHP-7.0
* PHP-5.6:
  update libs versions.txt
2016-11-22 12:42:20 +01:00
Anatol Belski 3e45385903 update libs versions.txt 2016-11-22 12:36:51 +01:00
Anatol Belski df902a7c28 move dev to next 2016-11-22 11:49:09 +01:00
Nuno Lopes d26b8804d0 fix gcov coverage 2016-11-16 15:11:07 -05:00
SATO Kentaro df683fa3b0 Fix #68447: grapheme_extract take an extra trailing character
grapheme_extract() converts UTF-8 string in the argument to UTF-16 to
iterate through graphemes, and count each UTF-16 character as one Unicode
character, which is not correct for UTF-16 surrogate pairs.
The patch removes the conversion and counts UTF-8 directly if needed.
2016-07-01 22:45:37 +09:00
Willian Gustavo Veiga 33721742a5 Added "exclude_disabled" argument to "get_defined_functions". 2015-06-02 21:42:18 -03:00
Willian Gustavo Veiga 978832331a Fix bug #31875 - get_defined_functions() should not list disabled functions. 2015-05-30 12:29:27 -03:00
1010 changed files with 22794 additions and 6079 deletions

No files matched your search

+57
View File
@@ -0,0 +1,57 @@
version: "{branch}.build.{build}"
image: Visual Studio 2015
branches:
except:
- PHP-5.6
- PHP-7.0
skip_commits:
files:
- NEWS
- UPGRADING*
- README.*
clone_depth: 64
cache:
- c:\build-cache
- c:\build-cache\sdk -> .appveyor.yml
environment:
PHP_BUILD_CACHE_BASE_DIR: c:\build-cache
PHP_BUILD_OBJ_DIR: c:\obj
PHP_BUILD_CACHE_SDK_DIR: c:\build-cache\sdk
PHP_BUILD_SDK_BRANCH: php-sdk-2.0.0beta1
# ext and env setup for tests
#MYSQL_TEST_PASSWD: Password12!
#MYSQL_TEST_USER: root
#PDO_MYSQL_TEST_DSN: "pgsql:host=127.0.0.1 port=5432 dbname=test user=root password=Password12!"
#PDO_MYSQL_TEST_USER: root
#PDO_MYSQL_TEST_PASS: Password12!
#PGSQL_TEST_CONNSTR: "host=127.0.0.1 dbname=test port=5432 user=postgres password=Password12!"
#PDO_PGSQL_TEST_DSN: "pgsql:host=127.0.0.1 port=5432 dbname=test user=postgres password=Password12!"
#build permutations
matrix:
- THREAD_SAFE: 0
OPCACHE: 0
- THREAD_SAFE: 1
OPCACHE: 1
services:
# the setup scripts have to be touched, once some other db version is used
- mysql
- postgresql95
platform:
- x64
# - x86
build_script:
- appveyor\build.bat
test_script:
- appveyor\test.bat
+1 -1
View File
@@ -1,6 +1,6 @@
--------------------------------------------------------------------
The PHP License, version 3.01
Copyright (c) 1999 - 2016 The PHP Group. All rights reserved.
Copyright (c) 1999 - 2017 The PHP Group. All rights reserved.
--------------------------------------------------------------------
Redistribution and use in source and binary forms, with or without
+97 -4
View File
@@ -1,5 +1,97 @@
PHP NEWS
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
19 Jan 2017 PHP 7.0.15
- Core:
. Fixed bug #73792 (invalid foreach loop hangs script). (Dmitry)
. Fixed bug #73663 ("Invalid opcode 65/16/8" occurs with a variable created
with list()). (Laruence)
. Fixed bug #73585 (Logging of "Internal Zend error - Missing class
information" missing class name). (Laruence)
. Fixed bug #73753 (unserialized array pointer not advancing). (David Walker)
. Fixed bug #73825 (Heap out of bounds read on unserialize in
finish_nested_data()). (Stas)
. Fixed bug #73831 (NULL Pointer Dereference while unserialize php object).
(Stas)
. Fixed bug #73832 (Use of uninitialized memory in unserialize()). (Stas)
. Fixed bug #73092 (Unserialize use-after-free when resizing object's
properties hash table). (Nikita)
. Fixed bug #69425 (Use After Free in unserialize()). (Nikita)
. Fixed bug #72731 (Type Confusion in Object Deserialization). (Nikita)
- COM:
. Fixed bug #73679 (DOTNET read access violation using invalid codepage).
(Anatol)
- DOM:
. Fixed bug #67474 (getElementsByTagNameNS filter on default ns). (aboks)
- EXIF:
. Bug bug #73737 (FPE when parsing a tag format). (Stas)
- GD:
. Fixed bug #73869 (Signed Integer Overflow gd_io.c). (cmb)
. Fixed bug #73868 (DOS vulnerability in gdImageCreateFromGd2Ctx()). (cmb)
- GMP:
. Fixed bug #70513 (GMP Deserialization Type Confusion Vulnerability).
(Nikita)
- Mysqli:
. Fixed bug #73462 (Persistent connections don't set $connect_errno).
(darkain)
- Mysqlnd:
. Fixed issue with decoding BIT columns when having more than one rows in the
result set. 7.0+ problem. (Andrey)
. Fixed bug #73800 (sporadic segfault with MYSQLI_OPT_INT_AND_FLOAT_NATIVE).
(vanviegen)
- PCRE:
. Fixed bug #73612 (preg_*() may leak memory). (cmb)
- PDO_Firebird:
. Fixed bug #72931 (PDO_FIREBIRD with Firebird 3.0 not work on returning
statement). (Dorin Marcoci)
- Phar:
. Fixed bug #73773 (Seg fault when loading hostile phar). (Stas)
. Fixed bug #73768 (Memory corruption when loading hostile phar). (Stas)
. Fixed bug #73764 (Crash while loading hostile phar archive). (Stas)
- Phpdbg:
. Fixed bug #73615 (phpdbg without option never load .phpdbginit at startup).
(Bob)
. Fixed issue getting executable lines from custom wrappers. (Bob)
. Fixed bug #73704 (phpdbg shows the wrong line in files with shebang). (Bob)
- Reflection:
. Fixed bug #46103 (ReflectionObject memory leak). (Nikita)
- Streams:
. Fixed bug #73586 (php_user_filter::$stream is not set to the stream the
filter is working on). (Dmitry)
- SQLite3:
. Reverted fix for bug #73530 (Unsetting result set may reset other result
set). (cmb)
- Standard:
. Fixed bug #73594 (dns_get_record does not populate $additional out
parameter). (Bruce Weirdan)
. Fixed bug #70213 (Unserialize context shared on double class lookup).
(Taoguang Chen)
. Fixed bug #73154 (serialize object with __sleep function crash). (Nikita)
. Fixed bug #70490 (get_browser function is very slow). (Nikita)
. Fixed bug #73265 (Loading browscap.ini at startup causes high memory usage).
(Nikita)
. Fixed bug #31875 (get_defined_functions additional param to exclude
disabled functions). (willianveiga)
- Zlib:
. Fixed bug #73373 (deflate_add does not verify that output was not truncated).
(Matt Bonneau)
08 Dec 2016 PHP 7.0.14
- Core:
@@ -41,12 +133,12 @@ PHP NEWS
. Fixed bug #73087, #61183, #71494 (Memory corruption in bindParam).
(Dorin Marcoci)
- Phar:
. Fixed bug #73580 (Phar::isValidPharFilename illegal memory access). (Stas)
- Postgres:
. Fixed bug #73498 (Incorrect SQL generated for pg_copy_to()). (Craig Duncan)
- Phar:
. Fixed bug #73580 (Phar::isValidPharFilename illegal memory access). (Stas)
- Soap:
. Fixed bug #73538 (SoapClient::__setSoapHeaders doesn't overwrite SOAP
headers). (duncan3dc)
@@ -65,7 +157,8 @@ PHP NEWS
- Wddx:
. Fixed bug #73631 (Invalid read when wddx decodes empty boolean element).
(Stas)
(Stas)
- XML:
. Fixed bug #72135 (malformed XML causes fault) (edgarsandi)
+1
View File
@@ -5,6 +5,7 @@ This is the github mirror of the official PHP repository located at
http://git.php.net.
[![Build Status](https://secure.travis-ci.org/php/php-src.svg?branch=master)](http://travis-ci.org/php/php-src)
[![Build status](https://ci.appveyor.com/api/projects/status/meyur6fviaxgdwdy?svg=true)](https://ci.appveyor.com/project/php/php-src)
Pull Requests
=============
+1 -1
View File
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 7 |
+----------------------------------------------------------------------+
| Copyright (c) 1997-2016 The PHP Group |
| Copyright (c) 1997-2017 The PHP Group |
+----------------------------------------------------------------------+
| This source file is subject to version 3.01 of the PHP license, |
| that is bundled with this package in the file LICENSE, and is |
+1 -1
View File
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 7 |
+----------------------------------------------------------------------+
| Copyright (c) 1997-2016 The PHP Group |
| Copyright (c) 1997-2017 The PHP Group |
+----------------------------------------------------------------------+
| This source file is subject to version 3.01 of the PHP license, |
| that is bundled with this package in the file LICENSE, and is |
+1 -1
View File
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 7 |
+----------------------------------------------------------------------+
| Copyright (c) 1997-2016 The PHP Group |
| Copyright (c) 1997-2017 The PHP Group |
+----------------------------------------------------------------------+
| This source file is subject to version 3.01 of the PHP license, |
| that is bundled with this package in the file LICENSE, and is |
+1 -1
View File
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| PHP Version 7 |
+----------------------------------------------------------------------+
| Copyright (c) 1997-2016 The PHP Group |
| Copyright (c) 1997-2017 The PHP Group |
+----------------------------------------------------------------------+
| This source file is subject to version 3.01 of the PHP license, |
| that is bundled with this package in the file LICENSE, and is |
+1
View File
@@ -484,6 +484,7 @@ Other
is defined in the interface.
. session.lazy_write(default=On) INI setting enables only write session data when
session data is updated.
. session_regenerate_id() saves current $_SESSION before creating new session ID.
- Opcache
. Removed opcache.load_comments configuration directive. Now doc comments
-4
View File
@@ -26,7 +26,6 @@ var_dump(count(get_defined_constants()));
function test () {
}
var_dump(get_defined_functions(true));
var_dump(gettype(get_defined_functions()));
var_dump(count(get_defined_functions()));
@@ -65,9 +64,6 @@ NULL
string(5) "array"
string(5) "array"
int(%d)
Warning: get_defined_functions() expects exactly 0 parameters, 1 given in %s on line %d
NULL
string(5) "array"
int(%d)
+12
View File
@@ -0,0 +1,12 @@
--TEST--
Assign to $this leaks when $this not defined
--FILE--
<?php
try {
$this->a = new stdClass;
} catch (Error $e) { echo $e->getMessage(), "\n"; }
?>
--EXPECT--
Using $this when not in object context
+73
View File
@@ -0,0 +1,73 @@
--TEST--
Bug #73663 ("Invalid opcode 65/16/8" occurs with a variable created with list())
--FILE--
<?php
function change(&$ref) {
$ref = range(1, 10);
return;
}
$func = function (&$ref) {
return change($ref);
};
$array = [1];
var_dump(list($val) = $array); // NG: Invalid opcode
change(list($val) = $array);
var_dump($array);
$array = [1];
$func(list($val) = $array);
var_dump($array);
?>
--EXPECT--
array(1) {
[0]=>
int(1)
}
array(10) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(3)
[3]=>
int(4)
[4]=>
int(5)
[5]=>
int(6)
[6]=>
int(7)
[7]=>
int(8)
[8]=>
int(9)
[9]=>
int(10)
}
array(10) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(3)
[3]=>
int(4)
[4]=>
int(5)
[5]=>
int(6)
[6]=>
int(7)
[7]=>
int(8)
[8]=>
int(9)
[9]=>
int(10)
}
+29
View File
@@ -0,0 +1,29 @@
--TEST--
Bug #73753 Non packed arrays and duplication
--FILE--
<?php
function iterate($current, $a, $result = null) {
if (!$current) {
return $result;
}
return iterate(getNext($a), $a, $current);
}
function getNext(&$a) {
return next($a);
}
function getCurrent($a) {
return current($a);
}
function traverse($a) {
return iterate(getCurrent($a), $a);
}
$arr = array(1 => 'foo', 'b' => 'bar', 'baz');
var_dump(traverse($arr));
?>
--EXPECTF--
string(3) "baz"
+20
View File
@@ -0,0 +1,20 @@
--TEST--
Bug #73792 (invalid foreach loop hangs script)
--FILE--
<?php
$a = 'aaa';
foreach ($a['bbb'] as &$value) {
echo 'loop';
}
unset($value);
echo 'done';
?>
--EXPECTF--
Warning: Illegal string offset 'bbb' in %sbug73792.php on line 4
Fatal error: Uncaught Error: Cannot iterate on string offsets by reference in %sbug73792.php:4
Stack trace:
#0 {main}
thrown in %sbug73792.php on line 4
+184
View File
@@ -0,0 +1,184 @@
--TEST--
Behavior of failing compound assignment
--INI--
opcache.optimization_level=0
--FILE--
<?php
try {
$a = 1;
$a %= 0;
} catch (Error $e) { var_dump($a); }
try {
$a = 1;
$a >>= -1;
} catch (Error $e) { var_dump($a); }
try {
$a = 1;
$a <<= -1;
} catch (Error $e) { var_dump($a); }
set_error_handler(function($type, $msg) { throw new Exception($msg); });
try {
$a = [];
$a .= "foo";
} catch (Throwable $e) { var_dump($a); }
try {
$a = "foo";
$a .= [];
} catch (Throwable $e) { var_dump($a); }
$x = new stdClass;
try { $x += 1; }
catch (Exception $e) {}
var_dump($x);
$x = 1;
try { $x += new stdClass; }
catch (Exception $e) {}
var_dump($x);
$x = new stdClass;
try { $x -= 1; }
catch (Exception $e) {}
var_dump($x);
$x = 1;
try { $x -= new stdClass; }
catch (Exception $e) {}
var_dump($x);
$x = new stdClass;
try { $x *= 1; }
catch (Exception $e) {}
var_dump($x);
$x = 1;
try { $x *= new stdClass; }
catch (Exception $e) {}
var_dump($x);
$x = new stdClass;
try { $x /= 1; }
catch (Exception $e) {}
var_dump($x);
$x = 1;
try { $x /= new stdClass; }
catch (Exception $e) {}
var_dump($x);
$x = new stdClass;
try { $x %= 1; }
catch (Exception $e) {}
var_dump($x);
$x = 1;
try { $x %= new stdClass; }
catch (Exception $e) {}
var_dump($x);
$x = new stdClass;
try { $x **= 1; }
catch (Exception $e) {}
var_dump($x);
$x = 1;
try { $x **= new stdClass; }
catch (Exception $e) {}
var_dump($x);
$x = new stdClass;
try { $x ^= 1; }
catch (Exception $e) {}
var_dump($x);
$x = 1;
try { $x ^= new stdClass; }
catch (Exception $e) {}
var_dump($x);
$x = new stdClass;
try { $x &= 1; }
catch (Exception $e) {}
var_dump($x);
$x = 1;
try { $x &= new stdClass; }
catch (Exception $e) {}
var_dump($x);
$x = new stdClass;
try { $x |= 1; }
catch (Exception $e) {}
var_dump($x);
$x = 1;
try { $x |= new stdClass; }
catch (Exception $e) {}
var_dump($x);
$x = new stdClass;
try { $x <<= 1; }
catch (Exception $e) {}
var_dump($x);
$x = 1;
try { $x <<= new stdClass; }
catch (Exception $e) {}
var_dump($x);
$x = new stdClass;
try { $x >>= 1; }
catch (Exception $e) {}
var_dump($x);
$x = 1;
try { $x >>= new stdClass; }
catch (Exception $e) {}
var_dump($x);
?>
--EXPECTF--
int(1)
int(1)
int(1)
array(0) {
}
string(3) "foo"
object(stdClass)#%d (0) {
}
int(1)
object(stdClass)#%d (0) {
}
int(1)
object(stdClass)#%d (0) {
}
int(1)
object(stdClass)#%d (0) {
}
int(1)
object(stdClass)#%d (0) {
}
int(1)
object(stdClass)#%d (0) {
}
int(1)
object(stdClass)#%d (0) {
}
int(1)
object(stdClass)#%d (0) {
}
int(1)
object(stdClass)#%d (0) {
}
int(1)
object(stdClass)#%d (0) {
}
int(1)
object(stdClass)#%d (0) {
}
int(1)
+14 -28
View File
@@ -2,51 +2,37 @@
Concatenating many small strings should not slowdown allocations
--SKIPIF--
<?php if (PHP_DEBUG) { die ("skip debug version is slow"); } ?>
--INI--
memory_limit=256m
--FILE--
<?php
/* To note is that memory usage can vary depending on whether opcache is on. The actual
measuring that matters is timing here. */
$time = microtime(TRUE);
/* This might vary on Linux/Windows, so the worst case and also count in slow machines. */
$t0_max = 0.1;
$t1_max = 0.4;
$datas = [];
for ($i = 0; $i < 220000; $i++)
{
$datas[] = [
'000.000.000.000',
'000.255.255.255',
'保留地址',
'保留地址',
'保留地址',
'保留地址',
'保留地址',
'保留地址',
];
}
$t0 = microtime(TRUE) - $time;
var_dump($t0 < $t0_max);
$t_max = 1.0;
$datas = array_fill(0, 220000, [
'000.000.000.000',
'000.255.255.255',
'保留地址',
'保留地址',
'保留地址',
'保留地址',
'保留地址',
'保留地址',
]);
$time = microtime(TRUE);
$texts = '';
foreach ($datas AS $data)
{
$texts .= implode("\t", $data) . "\r\n";
}
$t1 = microtime(TRUE) - $time;
var_dump($t1 < $t1_max);
$t = microtime(TRUE) - $time;
var_dump($t < $t_max);
?>
+++DONE+++
--EXPECT--
bool(true)
bool(true)
+++DONE+++
@@ -0,0 +1,24 @@
--TEST--
Calling generator through magic __call()
--FILE--
<?php
class A {
public function __call($name, $args) {
for ($i = 0; $i < 5; $i++) {
yield $i;
}
}
}
$a = new A();
foreach ($a->gen() as $n) {
var_dump($n);
}
$a->gen();
?>
--EXPECT--
int(0)
int(1)
int(2)
int(3)
int(4)
+4 -3
View File
@@ -3,7 +3,7 @@ Test get_defined_functions() function : error conditions
--FILE--
<?php
/* Prototype : array get_defined_functions ( void )
/* Prototype : array get_defined_functions ( $exclude_disabled = false )
* Description: Gets an array of all defined functions.
* Source code: Zend/zend_builtin_functions.c
*/
@@ -14,7 +14,8 @@ echo "*** Testing get_defined_functions() : error conditions ***\n";
echo "\n-- Testing get_defined_functions() function with more than expected no. of arguments --\n";
$extra_arg = 10;
var_dump( get_defined_functions($extra_arg) );
$extra_arg2 = 20;
var_dump( get_defined_functions($extra_arg, $extra_arg2) );
?>
===Done===
@@ -23,7 +24,7 @@ var_dump( get_defined_functions($extra_arg) );
-- Testing get_defined_functions() function with more than expected no. of arguments --
Warning: get_defined_functions() expects exactly 0 parameters, 1 given in %s on line %d
Warning: get_defined_functions() expects at most 1 parameter, 2 given in %s on line %d
NULL
===Done===
+10
View File
@@ -6,6 +6,8 @@ ANDing strings
$s = "123";
$s1 = "test";
$s2 = "45345some";
$s3 = str_repeat("f", 1);
$s4 = str_repeat("f", 2);
$s &= 22;
var_dump($s);
@@ -16,10 +18,18 @@ var_dump($s1);
$s2 &= 33;
var_dump($s2);
$s3 &= " ";
var_dump($s3);
$s4 &= " ";
var_dump($s4);
echo "Done\n";
?>
--EXPECTF--
int(18)
int(0)
int(33)
string(1) " "
string(2) " "
Done
+10
View File
@@ -6,6 +6,8 @@ ORing strings
$s = "123";
$s1 = "test";
$s2 = "45345some";
$s3 = str_repeat("f", 1);
$s4 = str_repeat("f", 2);
$s |= 22;
var_dump($s);
@@ -16,10 +18,18 @@ var_dump($s1);
$s2 |= 33;
var_dump($s2);
$s3 |= " ";
var_dump($s3);
$s4 |= " ";
var_dump($s4);
echo "Done\n";
?>
--EXPECTF--
int(127)
int(11)
int(45345)
string(1) "f"
string(2) "ff"
Done
+10
View File
@@ -6,6 +6,8 @@ XORing strings
$s = "123";
$s1 = "test";
$s2 = "45345some";
$s3 = str_repeat("f", 1);
$s4 = str_repeat("f", 2);
$s ^= 22;
var_dump($s);
@@ -16,10 +18,18 @@ var_dump($s1);
$s2 ^= 33;
var_dump($s2);
$s3 ^= " ";
var_dump($s3);
$s4 ^= " ";
var_dump($s4);
echo "Done\n";
?>
--EXPECTF--
int(109)
int(11)
int(45312)
string(1) "F"
string(2) "FF"
Done
+2 -2
View File
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
| Copyright (c) 1998-2016 Zend Technologies Ltd. (http://www.zend.com) |
| Copyright (c) 1998-2017 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -156,7 +156,7 @@ ZEND_API zend_utility_values zend_uv;
/* version information */
static char *zend_version_info;
static uint zend_version_info_length;
#define ZEND_CORE_VERSION_INFO "Zend Engine v" ZEND_VERSION ", Copyright (c) 1998-2016 Zend Technologies\n"
#define ZEND_CORE_VERSION_INFO "Zend Engine v" ZEND_VERSION ", Copyright (c) 1998-2017 Zend Technologies\n"
#define PRINT_ZVAL_INDENT 4
static void print_hash(zend_write_func_t write_func, HashTable *ht, int indent, zend_bool is_object) /* {{{ */
+1 -1
View File
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
| Copyright (c) 1998-2016 Zend Technologies Ltd. (http://www.zend.com) |
| Copyright (c) 1998-2017 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
+1 -1
View File
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
| Copyright (c) 1998-2016 Zend Technologies Ltd. (http://www.zend.com) |
| Copyright (c) 1998-2017 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
+1 -1
View File
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
| Copyright (c) 1998-2016 Zend Technologies Ltd. (http://www.zend.com) |
| Copyright (c) 1998-2017 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
+2 -2
View File
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
| Copyright (c) 1998-2016 Zend Technologies Ltd. (http://www.zend.com) |
| Copyright (c) 1998-2017 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -2343,7 +2343,7 @@ ZEND_API int is_zend_mm(void)
#endif
}
#if !ZEND_DEBUG && (!defined(_WIN32) || defined(__clang__))
#if !ZEND_DEBUG && defined(HAVE_BUILTIN_CONSTANT_P)
#undef _emalloc
#if ZEND_MM_CUSTOM
+1 -1
View File
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
| Copyright (c) 1998-2016 Zend Technologies Ltd. (http://www.zend.com) |
| Copyright (c) 1998-2017 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
+1 -1
View File
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
| Copyright (c) 1998-2016 Zend Technologies Ltd. (http://www.zend.com) |
| Copyright (c) 1998-2017 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
+1 -1
View File
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
| Copyright (c) 1998-2016 Zend Technologies Ltd. (http://www.zend.com) |
| Copyright (c) 1998-2017 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
+1 -1
View File
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
| Copyright (c) 1998-2016 Zend Technologies Ltd. (http://www.zend.com) |
| Copyright (c) 1998-2017 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
+1 -1
View File
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
| Copyright (c) 1998-2016 Zend Technologies Ltd. (http://www.zend.com) |
| Copyright (c) 1998-2017 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
+1 -1
View File
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
| Copyright (c) 1998-2016 Zend Technologies Ltd. (http://www.zend.com) |
| Copyright (c) 1998-2017 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
+14 -4
View File
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
| Copyright (c) 1998-2016 Zend Technologies Ltd. (http://www.zend.com) |
| Copyright (c) 1998-2017 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -1868,13 +1868,22 @@ static int copy_function_name(zval *zv, int num_args, va_list args, zend_hash_ke
zend_function *func = Z_PTR_P(zv);
zval *internal_ar = va_arg(args, zval *),
*user_ar = va_arg(args, zval *);
zend_bool *exclude_disabled = va_arg(args, zend_bool *);
if (hash_key->key == NULL || ZSTR_VAL(hash_key->key)[0] == 0) {
return 0;
}
if (func->type == ZEND_INTERNAL_FUNCTION) {
add_next_index_str(internal_ar, zend_string_copy(hash_key->key));
char *disable_functions = INI_STR("disable_functions");
if ((*exclude_disabled == 1) && (disable_functions != NULL)) {
if (strstr(disable_functions, func->common.function_name->val) == NULL) {
add_next_index_str(internal_ar, zend_string_copy(hash_key->key));
}
} else {
add_next_index_str(internal_ar, zend_string_copy(hash_key->key));
}
} else if (func->type == ZEND_USER_FUNCTION) {
add_next_index_str(user_ar, zend_string_copy(hash_key->key));
}
@@ -1888,8 +1897,9 @@ static int copy_function_name(zval *zv, int num_args, va_list args, zend_hash_ke
ZEND_FUNCTION(get_defined_functions)
{
zval internal, user;
zend_bool exclude_disabled = 0;
if (zend_parse_parameters_none() == FAILURE) {
if (zend_parse_parameters(ZEND_NUM_ARGS(), "|b", &exclude_disabled) == FAILURE) {
return;
}
@@ -1897,7 +1907,7 @@ ZEND_FUNCTION(get_defined_functions)
array_init(&user);
array_init(return_value);
zend_hash_apply_with_arguments(EG(function_table), copy_function_name, 2, &internal, &user);
zend_hash_apply_with_arguments(EG(function_table), copy_function_name, 3, &internal, &user, &exclude_disabled);
zend_hash_str_add_new(Z_ARRVAL_P(return_value), "internal", sizeof("internal")-1, &internal);
zend_hash_str_add_new(Z_ARRVAL_P(return_value), "user", sizeof("user")-1, &user);
+1 -1
View File
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
| Copyright (c) 1998-2016 Zend Technologies Ltd. (http://www.zend.com) |
| Copyright (c) 1998-2017 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
+1 -1
View File
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
| Copyright (c) 1998-2016 Zend Technologies Ltd. (http://www.zend.com) |
| Copyright (c) 1998-2017 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
+1 -1
View File
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
| Copyright (c) 1998-2016 Zend Technologies Ltd. (http://www.zend.com) |
| Copyright (c) 1998-2017 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
+13 -6
View File
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
| Copyright (c) 1998-2016 Zend Technologies Ltd. (http://www.zend.com) |
| Copyright (c) 1998-2017 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -1002,10 +1002,8 @@ ZEND_API zend_class_entry *do_bind_class(const zend_op_array* op_array, const ze
op1 = RT_CONSTANT(op_array, opline->op1);
op2 = RT_CONSTANT(op_array, opline->op2);
}
if ((ce = zend_hash_find_ptr(class_table, Z_STR_P(op1))) == NULL) {
zend_error_noreturn(E_COMPILE_ERROR, "Internal Zend error - Missing class information for %s", Z_STRVAL_P(op1));
return NULL;
}
ce = zend_hash_find_ptr(class_table, Z_STR_P(op1));
ZEND_ASSERT(ce);
ce->refcount++;
if (zend_hash_add_ptr(class_table, Z_STR_P(op2), ce) == NULL) {
ce->refcount--;
@@ -2783,12 +2781,21 @@ uint32_t zend_compile_args(zend_ast *ast, zend_function *fbc) /* {{{ */
}
} else {
zend_compile_expr(&arg_node, arg);
ZEND_ASSERT(arg_node.op_type != IS_CV);
if (arg_node.op_type == IS_VAR) {
opcode = ZEND_SEND_VAR_NO_REF;
if (fbc && ARG_MUST_BE_SENT_BY_REF(fbc, arg_num)) {
flags |= ZEND_ARG_SEND_BY_REF;
}
} else if (arg_node.op_type == IS_CV) {
if (fbc) {
if (ARG_SHOULD_BE_SENT_BY_REF(fbc, arg_num)) {
opcode = ZEND_SEND_REF;
} else {
opcode = ZEND_SEND_VAR;
}
} else {
opcode = ZEND_SEND_VAR_EX;
}
} else {
if (fbc) {
opcode = ZEND_SEND_VAL;
+1 -1
View File
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
| Copyright (c) 1998-2016 Zend Technologies Ltd. (http://www.zend.com) |
| Copyright (c) 1998-2017 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
+1 -1
View File
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
| Copyright (c) 1998-2016 Zend Technologies Ltd. (http://www.zend.com) |
| Copyright (c) 1998-2017 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
+1 -1
View File
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
| Copyright (c) 1998-2016 Zend Technologies Ltd. (http://www.zend.com) |
| Copyright (c) 1998-2017 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
+1 -1
View File
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
| Copyright (c) 1998-2016 Zend Technologies Ltd. (http://www.zend.com) |
| Copyright (c) 1998-2017 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
+1 -1
View File
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
| Copyright (c) 1998-2016 Zend Technologies Ltd. (http://www.zend.com) |
| Copyright (c) 1998-2017 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
+1 -1
View File
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
| Copyright (c) 1998-2016 Zend Technologies Ltd. (http://www.zend.com) |
| Copyright (c) 1998-2017 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
+1 -1
View File
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
| Copyright (c) 1998-2016 Zend Technologies Ltd. (http://www.zend.com) |
| Copyright (c) 1998-2017 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
+4 -2
View File
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
| Copyright (c) 1998-2016 Zend Technologies Ltd. (http://www.zend.com) |
| Copyright (c) 1998-2017 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -186,7 +186,9 @@ ZEND_API void zend_clear_exception(void) /* {{{ */
}
OBJ_RELEASE(EG(exception));
EG(exception) = NULL;
EG(current_execute_data)->opline = EG(opline_before_exception);
if (EG(current_execute_data)) {
EG(current_execute_data)->opline = EG(opline_before_exception);
}
#if ZEND_DEBUG
EG(opline_before_exception) = NULL;
#endif
+1 -1
View File
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
| Copyright (c) 1998-2016 Zend Technologies Ltd. (http://www.zend.com) |
| Copyright (c) 1998-2017 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
+1 -1
View File
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
| Copyright (c) 1998-2016 Zend Technologies Ltd. (http://www.zend.com) |
| Copyright (c) 1998-2017 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
+1 -1
View File
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
| Copyright (c) 1998-2016 Zend Technologies Ltd. (http://www.zend.com) |
| Copyright (c) 1998-2017 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
+1 -1
View File
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
| Copyright (c) 1998-2016 Zend Technologies Ltd. (http://www.zend.com) |
| Copyright (c) 1998-2017 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
+1 -1
View File
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
| Copyright (c) 1998-2016 Zend Technologies Ltd. (http://www.zend.com) |
| Copyright (c) 1998-2017 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
+1 -1
View File
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
| Copyright (c) 1998-2016 Zend Technologies Ltd. (http://www.zend.com) |
| Copyright (c) 1998-2017 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
+1 -1
View File
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
| Copyright (c) 1998-2016 Zend Technologies Ltd. (http://www.zend.com) |
| Copyright (c) 1998-2017 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
+1 -1
View File
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
| Copyright (c) 1998-2016 Zend Technologies Ltd. (http://www.zend.com) |
| Copyright (c) 1998-2017 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
+1 -1
View File
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
| Copyright (c) 1998-2016 Zend Technologies Ltd. (http://www.zend.com) |
| Copyright (c) 1998-2017 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
+1 -1
View File
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
| Copyright (c) 1998-2016 Zend Technologies Ltd. (http://www.zend.com) |
| Copyright (c) 1998-2017 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
+2 -1
View File
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
| Copyright (c) 1998-2016 Zend Technologies Ltd. (http://www.zend.com) |
| Copyright (c) 1998-2017 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -519,6 +519,7 @@ ZEND_API zend_generator *zend_generator_update_current(zend_generator *generator
generator->execute_fake.prev_execute_data = original_execute_data;
}
root->execute_data->opline--; /* ZEND_YIELD(_FROM) already advance, so decrement opline to throw from correct place */
zend_throw_exception(zend_ce_ClosedGeneratorException, "Generator yielded from aborted, no return value available", 0);
EG(current_execute_data) = original_execute_data;
+1 -1
View File
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
| Copyright (c) 1998-2016 Zend Technologies Ltd. (http://www.zend.com) |
| Copyright (c) 1998-2017 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
+1 -1
View File
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
| Copyright (c) 1998-2016 Zend Technologies Ltd. (http://www.zend.com) |
| Copyright (c) 1998-2017 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
+1 -1
View File
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
| Copyright (c) 1998-2016 Zend Technologies Ltd. (http://www.zend.com) |
| Copyright (c) 1998-2017 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
+6 -5
View File
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
| Copyright (c) 1998-2016 Zend Technologies Ltd. (http://www.zend.com) |
| Copyright (c) 1998-2017 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -175,7 +175,6 @@ ZEND_API void ZEND_FASTCALL _zend_hash_init(HashTable *ht, uint32_t nSize, dtor_
GC_REFCOUNT(ht) = 1;
GC_TYPE_INFO(ht) = IS_ARRAY;
ht->u.flags = (persistent ? HASH_FLAG_PERSISTENT : 0) | HASH_FLAG_APPLY_PROTECTION | HASH_FLAG_STATIC_KEYS;
ht->nTableSize = zend_hash_check_size(nSize);
ht->nTableMask = HT_MIN_MASK;
HT_SET_DATA_ADDR(ht, &uninitialized_bucket);
ht->nNumUsed = 0;
@@ -183,6 +182,7 @@ ZEND_API void ZEND_FASTCALL _zend_hash_init(HashTable *ht, uint32_t nSize, dtor_
ht->nInternalPointer = HT_INVALID_IDX;
ht->nNextFreeElement = 0;
ht->pDestructor = pDestructor;
ht->nTableSize = zend_hash_check_size(nSize);
}
static void ZEND_FASTCALL zend_hash_packed_grow(HashTable *ht)
@@ -1757,7 +1757,7 @@ static zend_always_inline void zend_array_dup_packed_elements(HashTable *source,
static zend_always_inline uint32_t zend_array_dup_elements(HashTable *source, HashTable *target, int static_keys, int with_holes)
{
uint32_t idx = 0;
uint32_t idx = 0;
Bucket *p = source->arData;
Bucket *q = target->arData;
Bucket *end = p + source->nNumUsed;
@@ -1785,7 +1785,7 @@ static zend_always_inline uint32_t zend_array_dup_elements(HashTable *source, Ha
ZEND_API HashTable* ZEND_FASTCALL zend_array_dup(HashTable *source)
{
uint32_t idx;
uint32_t idx;
HashTable *target;
IS_CONSISTENT(source);
@@ -1849,7 +1849,8 @@ ZEND_API HashTable* ZEND_FASTCALL zend_array_dup(HashTable *source)
target->u.flags = (source->u.flags & ~(HASH_FLAG_PERSISTENT|ZEND_HASH_APPLY_COUNT_MASK)) | HASH_FLAG_APPLY_PROTECTION;
target->nTableMask = source->nTableMask;
target->nNextFreeElement = source->nNextFreeElement;
target->nInternalPointer = HT_INVALID_IDX;
target->nInternalPointer = source->nInternalPointer;
HT_SET_DATA_ADDR(target, emalloc(HT_SIZE(target)));
HT_HASH_RESET(target);
+11 -1
View File
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
| Copyright (c) 1998-2016 Zend Technologies Ltd. (http://www.zend.com) |
| Copyright (c) 1998-2017 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -301,6 +301,16 @@ static zend_always_inline zval *zend_hash_str_find_ind(const HashTable *ht, cons
}
static zend_always_inline int zend_hash_str_exists_ind(const HashTable *ht, const char *str, size_t len)
{
zval *zv;
zv = zend_hash_str_find(ht, str, len);
return zv && (Z_TYPE_P(zv) != IS_INDIRECT ||
Z_TYPE_P(Z_INDIRECT_P(zv)) != IS_UNDEF);
}
static zend_always_inline zval *zend_symtable_update(HashTable *ht, zend_string *key, zval *pData)
{
zend_ulong idx;
+1 -1
View File
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
| Copyright (c) 1998-2016 Zend Technologies Ltd. (http://www.zend.com) |
| Copyright (c) 1998-2017 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
+1 -1
View File
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
| Copyright (c) 1998-2016 Zend Technologies Ltd. (http://www.zend.com) |
| Copyright (c) 1998-2017 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
+1 -1
View File
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
| Copyright (c) 1998-2016 Zend Technologies Ltd. (http://www.zend.com) |
| Copyright (c) 1998-2017 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
+1 -1
View File
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
| Copyright (c) 1998-2016 Zend Technologies Ltd. (http://www.zend.com) |
| Copyright (c) 1998-2017 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
+1 -1
View File
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
| Copyright (c) 1998-2016 Zend Technologies Ltd. (http://www.zend.com) |
| Copyright (c) 1998-2017 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
+1 -1
View File
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
| Copyright (c) 1998-2016 Zend Technologies Ltd. (http://www.zend.com) |
| Copyright (c) 1998-2017 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
+1 -1
View File
@@ -3,7 +3,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
| Copyright (c) 1998-2016 Zend Technologies Ltd. (http://www.zend.com) |
| Copyright (c) 1998-2017 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
+2320 -3141
View File
File diff suppressed because it is too large. Load diff
+1 -1
View File
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
| Copyright (c) 1998-2016 Zend Technologies Ltd. (http://www.zend.com) |
| Copyright (c) 1998-2017 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
+6 -6
View File
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
| Copyright (c) 1998-2016 Zend Technologies Ltd. (http://www.zend.com) |
| Copyright (c) 1998-2017 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -408,9 +408,9 @@ SECTION_VALUE_CHARS ([^$\n\r;"'\]\\]|("\\"{ANY_CHAR})|{LITERAL_DOLLAR})
<INITIAL>"[" { /* Section start */
/* Enter section data lookup state */
if (SCNG(scanner_mode) == ZEND_INI_SCANNER_RAW) {
yy_push_state(ST_SECTION_RAW);
BEGIN(ST_SECTION_RAW);
} else {
yy_push_state(ST_SECTION_VALUE);
BEGIN(ST_SECTION_VALUE);
}
return TC_SECTION;
}
@@ -438,7 +438,7 @@ SECTION_VALUE_CHARS ([^$\n\r;"'\]\\]|("\\"{ANY_CHAR})|{LITERAL_DOLLAR})
EAT_TRAILING_WHITESPACE_EX('[');
/* Enter offset lookup state */
yy_push_state(ST_OFFSET);
BEGIN(ST_OFFSET);
RETURN_TOKEN(TC_OFFSET, yytext, yyleng);
}
@@ -492,9 +492,9 @@ SECTION_VALUE_CHARS ([^$\n\r;"'\]\\]|("\\"{ANY_CHAR})|{LITERAL_DOLLAR})
<INITIAL>{TABS_AND_SPACES}*[=]{TABS_AND_SPACES}* { /* Start option value */
if (SCNG(scanner_mode) == ZEND_INI_SCANNER_RAW) {
yy_push_state(ST_RAW);
BEGIN(ST_RAW);
} else {
yy_push_state(ST_VALUE);
BEGIN(ST_VALUE);
}
return '=';
}
+1 -1
View File
@@ -1,4 +1,4 @@
/* Generated by re2c 0.14.3 */
/* Generated by re2c 0.16 */
#line 3 "Zend/zend_ini_scanner_defs.h"
enum YYCONDTYPE {
+1 -1
View File
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
| Copyright (c) 1998-2016 Zend Technologies Ltd. (http://www.zend.com) |
| Copyright (c) 1998-2017 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
+1 -1
View File
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
| Copyright (c) 1998-2016 Zend Technologies Ltd. (http://www.zend.com) |
| Copyright (c) 1998-2017 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
+1 -1
View File
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
| Copyright (c) 1998-2016 Zend Technologies Ltd. (http://www.zend.com) |
| Copyright (c) 1998-2017 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
+1 -1
View File
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
| Copyright (c) 1998-2016 Zend Technologies Ltd. (http://www.zend.com) |
| Copyright (c) 1998-2017 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
+1 -1
View File
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
| Copyright (c) 1998-2016 Zend Technologies Ltd. (http://www.zend.com) |
| Copyright (c) 1998-2017 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
+1 -1
View File
@@ -3,7 +3,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
| Copyright (c) 1998-2016 Zend Technologies Ltd. (http://www.zend.com) |
| Copyright (c) 1998-2017 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
+1 -1
View File
@@ -4,7 +4,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
| Copyright (c) 1998-2016 Zend Technologies Ltd. (http://www.zend.com) |
| Copyright (c) 1998-2017 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
+1 -1
View File
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
| Copyright (c) 1998-2016 Zend Technologies Ltd. (http://www.zend.com) |
| Copyright (c) 1998-2017 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
+1 -1
View File
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
| Copyright (c) 1998-2016 Zend Technologies Ltd. (http://www.zend.com) |
| Copyright (c) 1998-2017 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
+1 -1
View File
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
| Copyright (c) 1998-2016 Zend Technologies Ltd. (http://www.zend.com) |
| Copyright (c) 1998-2017 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
+1 -1
View File
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
| Copyright (c) 1998-2016 Zend Technologies Ltd. (http://www.zend.com) |
| Copyright (c) 1998-2017 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
+1 -1
View File
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
| Copyright (c) 1998-2016 Zend Technologies Ltd. (http://www.zend.com) |
| Copyright (c) 1998-2017 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
+1 -1
View File
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
| Copyright (c) 1998-2016 Zend Technologies Ltd. (http://www.zend.com) |
| Copyright (c) 1998-2017 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
+1 -1
View File
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
| Copyright (c) 1998-2016 Zend Technologies Ltd. (http://www.zend.com) |
| Copyright (c) 1998-2017 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
+1 -1
View File
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
| Copyright (c) 1998-2016 Zend Technologies Ltd. (http://www.zend.com) |
| Copyright (c) 1998-2017 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
+1 -1
View File
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
| Copyright (c) 1998-2016 Zend Technologies Ltd. (http://www.zend.com) |
| Copyright (c) 1998-2017 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
+1 -1
View File
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
| Copyright (c) 1998-2016 Zend Technologies Ltd. (http://www.zend.com) |
| Copyright (c) 1998-2017 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
+1 -1
View File
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
| Copyright (c) 1998-2016 Zend Technologies Ltd. (http://www.zend.com) |
| Copyright (c) 1998-2017 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
+1 -1
View File
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
| Copyright (c) 1998-2016 Zend Technologies Ltd. (http://www.zend.com) |
| Copyright (c) 1998-2017 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
+1 -1
View File
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
| Copyright (c) 1998-2016 Zend Technologies Ltd. (http://www.zend.com) |
| Copyright (c) 1998-2017 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
+1 -1
View File
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
| Copyright (c) 1998-2016 Zend Technologies Ltd. (http://www.zend.com) |
| Copyright (c) 1998-2017 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
+1 -1
View File
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
| Copyright (c) 1998-2016 Zend Technologies Ltd. (http://www.zend.com) |
| Copyright (c) 1998-2017 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
+1 -1
View File
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
| Copyright (c) 1998-2016 Zend Technologies Ltd. (http://www.zend.com) |
| Copyright (c) 1998-2017 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
+1 -1
View File
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
| Copyright (c) 1998-2016 Zend Technologies Ltd. (http://www.zend.com) |
| Copyright (c) 1998-2017 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
+1 -1
View File
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
| Copyright (c) 1998-2016 Zend Technologies Ltd. (http://www.zend.com) |
| Copyright (c) 1998-2017 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
+123 -55
View File
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
| Copyright (c) 1998-2016 Zend Technologies Ltd. (http://www.zend.com) |
| Copyright (c) 1998-2017 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
@@ -188,41 +188,45 @@ try_again:
/* {{{ zendi_convert_scalar_to_number */
#define zendi_convert_scalar_to_number(op, holder, result) \
if (op==result) { \
if (Z_TYPE_P(op) != IS_LONG) { \
convert_scalar_to_number(op); \
} \
} else { \
switch (Z_TYPE_P(op)) { \
case IS_STRING: \
{ \
if (Z_TYPE_P(op) != IS_LONG) { \
if (op==result && Z_TYPE_P(op) != IS_OBJECT) { \
convert_scalar_to_number(op); \
} else { \
switch (Z_TYPE_P(op)) { \
case IS_STRING: \
if ((Z_TYPE_INFO(holder)=is_numeric_string(Z_STRVAL_P(op), Z_STRLEN_P(op), &Z_LVAL(holder), &Z_DVAL(holder), 1)) == 0) { \
ZVAL_LONG(&(holder), 0); \
} \
(op) = &(holder); \
break; \
} \
case IS_NULL: \
case IS_FALSE: \
ZVAL_LONG(&(holder), 0); \
(op) = &(holder); \
break; \
case IS_TRUE: \
ZVAL_LONG(&(holder), 1); \
(op) = &(holder); \
break; \
case IS_RESOURCE: \
ZVAL_LONG(&(holder), Z_RES_HANDLE_P(op)); \
(op) = &(holder); \
break; \
case IS_OBJECT: \
ZVAL_COPY(&(holder), op); \
convert_to_long_base(&(holder), 10); \
if (Z_TYPE(holder) == IS_LONG) { \
(op) = &(holder); \
} \
break; \
} \
ZVAL_LONG(&(holder), 0); \
} \
(op) = &(holder); \
break; \
case IS_NULL: \
case IS_FALSE: \
ZVAL_LONG(&(holder), 0); \
(op) = &(holder); \
break; \
case IS_TRUE: \
ZVAL_LONG(&(holder), 1); \
(op) = &(holder); \
break; \
case IS_RESOURCE: \
ZVAL_LONG(&(holder), Z_RES_HANDLE_P(op)); \
(op) = &(holder); \
break; \
case IS_OBJECT: \
ZVAL_COPY(&(holder), op); \
convert_to_long_base(&(holder), 10); \
if (UNEXPECTED(EG(exception))) { \
return FAILURE; \
} \
if (Z_TYPE(holder) == IS_LONG) { \
if (op == result) { \
zval_ptr_dtor(op); \
} \
(op) = &(holder); \
} \
break; \
} \
} \
}
/* }}} */
@@ -259,6 +263,9 @@ try_again:
} \
ZEND_TRY_BINARY_OP1_OBJECT_OPERATION(op, op_func); \
op1_lval = _zval_get_long_func(op1); \
if (UNEXPECTED(EG(exception))) { \
return FAILURE; \
} \
} else { \
op1_lval = Z_LVAL_P(op1); \
} \
@@ -274,6 +281,9 @@ try_again:
} \
ZEND_TRY_BINARY_OP2_OBJECT_OPERATION(op); \
op2_lval = _zval_get_long_func(op2); \
if (UNEXPECTED(EG(exception))) { \
return FAILURE; \
} \
} else { \
op2_lval = Z_LVAL_P(op2); \
} \
@@ -1187,10 +1197,6 @@ ZEND_API int ZEND_FASTCALL mod_function(zval *result, zval *op1, zval *op2) /* {
convert_op1_op2_long(op1, op1_lval, op2, op2_lval, ZEND_MOD, mod_function);
if (op1 == result) {
zval_dtor(result);
}
if (op2_lval == 0) {
/* modulus by zero */
if (EG(current_execute_data) && !CG(in_compilation)) {
@@ -1198,10 +1204,16 @@ ZEND_API int ZEND_FASTCALL mod_function(zval *result, zval *op1, zval *op2) /* {
} else {
zend_error_noreturn(E_ERROR, "Modulo by zero");
}
ZVAL_UNDEF(result);
if (op1 != result) {
ZVAL_UNDEF(result);
}
return FAILURE;
}
if (op1 == result) {
zval_dtor(result);
}
if (op2_lval == -1) {
/* Prevent overflow error/crash if op1==LONG_MIN */
ZVAL_LONG(result, 0);
@@ -1349,6 +1361,9 @@ ZEND_API int ZEND_FASTCALL bitwise_or_function(zval *result, zval *op1, zval *op
if (EXPECTED(Z_STRLEN_P(op1) >= Z_STRLEN_P(op2))) {
if (EXPECTED(Z_STRLEN_P(op1) == Z_STRLEN_P(op2)) && Z_STRLEN_P(op1) == 1) {
zend_uchar or = (zend_uchar) (*Z_STRVAL_P(op1) | *Z_STRVAL_P(op2));
if (result==op1) {
zend_string_release(Z_STR_P(result));
}
if (CG(one_char_string)[or]) {
ZVAL_INTERNED_STR(result, CG(one_char_string)[or]);
} else {
@@ -1378,12 +1393,18 @@ ZEND_API int ZEND_FASTCALL bitwise_or_function(zval *result, zval *op1, zval *op
if (UNEXPECTED(Z_TYPE_P(op1) != IS_LONG)) {
ZEND_TRY_BINARY_OP1_OBJECT_OPERATION(ZEND_BW_OR, bitwise_or_function);
op1_lval = _zval_get_long_func(op1);
if (UNEXPECTED(EG(exception))) {
return FAILURE;
}
} else {
op1_lval = Z_LVAL_P(op1);
}
if (UNEXPECTED(Z_TYPE_P(op2) != IS_LONG)) {
ZEND_TRY_BINARY_OP2_OBJECT_OPERATION(ZEND_BW_OR);
op2_lval = _zval_get_long_func(op2);
if (UNEXPECTED(EG(exception))) {
return FAILURE;
}
} else {
op2_lval = Z_LVAL_P(op2);
}
@@ -1416,6 +1437,9 @@ ZEND_API int ZEND_FASTCALL bitwise_and_function(zval *result, zval *op1, zval *o
if (EXPECTED(Z_STRLEN_P(op1) >= Z_STRLEN_P(op2))) {
if (EXPECTED(Z_STRLEN_P(op1) == Z_STRLEN_P(op2)) && Z_STRLEN_P(op1) == 1) {
zend_uchar and = (zend_uchar) (*Z_STRVAL_P(op1) & *Z_STRVAL_P(op2));
if (result==op1) {
zend_string_release(Z_STR_P(result));
}
if (CG(one_char_string)[and]) {
ZVAL_INTERNED_STR(result, CG(one_char_string)[and]);
} else {
@@ -1445,12 +1469,18 @@ ZEND_API int ZEND_FASTCALL bitwise_and_function(zval *result, zval *op1, zval *o
if (UNEXPECTED(Z_TYPE_P(op1) != IS_LONG)) {
ZEND_TRY_BINARY_OP1_OBJECT_OPERATION(ZEND_BW_AND, bitwise_and_function);
op1_lval = _zval_get_long_func(op1);
if (UNEXPECTED(EG(exception))) {
return FAILURE;
}
} else {
op1_lval = Z_LVAL_P(op1);
}
if (UNEXPECTED(Z_TYPE_P(op2) != IS_LONG)) {
ZEND_TRY_BINARY_OP2_OBJECT_OPERATION(ZEND_BW_AND);
op2_lval = _zval_get_long_func(op2);
if (UNEXPECTED(EG(exception))) {
return FAILURE;
}
} else {
op2_lval = Z_LVAL_P(op2);
}
@@ -1483,6 +1513,9 @@ ZEND_API int ZEND_FASTCALL bitwise_xor_function(zval *result, zval *op1, zval *o
if (EXPECTED(Z_STRLEN_P(op1) >= Z_STRLEN_P(op2))) {
if (EXPECTED(Z_STRLEN_P(op1) == Z_STRLEN_P(op2)) && Z_STRLEN_P(op1) == 1) {
zend_uchar xor = (zend_uchar) (*Z_STRVAL_P(op1) ^ *Z_STRVAL_P(op2));
if (result==op1) {
zend_string_release(Z_STR_P(result));
}
if (CG(one_char_string)[xor]) {
ZVAL_INTERNED_STR(result, CG(one_char_string)[xor]);
} else {
@@ -1512,12 +1545,18 @@ ZEND_API int ZEND_FASTCALL bitwise_xor_function(zval *result, zval *op1, zval *o
if (UNEXPECTED(Z_TYPE_P(op1) != IS_LONG)) {
ZEND_TRY_BINARY_OP1_OBJECT_OPERATION(ZEND_BW_XOR, bitwise_xor_function);
op1_lval = _zval_get_long_func(op1);
if (UNEXPECTED(EG(exception))) {
return FAILURE;
}
} else {
op1_lval = Z_LVAL_P(op1);
}
if (UNEXPECTED(Z_TYPE_P(op2) != IS_LONG)) {
ZEND_TRY_BINARY_OP2_OBJECT_OPERATION(ZEND_BW_XOR);
op2_lval = _zval_get_long_func(op2);
if (UNEXPECTED(EG(exception))) {
return FAILURE;
}
} else {
op2_lval = Z_LVAL_P(op2);
}
@@ -1536,13 +1575,12 @@ ZEND_API int ZEND_FASTCALL shift_left_function(zval *result, zval *op1, zval *op
convert_op1_op2_long(op1, op1_lval, op2, op2_lval, ZEND_SL, shift_left_function);
if (op1 == result) {
zval_dtor(result);
}
/* prevent wrapping quirkiness on some processors where << 64 + x == << x */
if (UNEXPECTED((zend_ulong)op2_lval >= SIZEOF_ZEND_LONG * 8)) {
if (EXPECTED(op2_lval > 0)) {
if (op1 == result) {
zval_dtor(result);
}
ZVAL_LONG(result, 0);
return SUCCESS;
} else {
@@ -1551,11 +1589,17 @@ ZEND_API int ZEND_FASTCALL shift_left_function(zval *result, zval *op1, zval *op
} else {
zend_error_noreturn(E_ERROR, "Bit shift by negative number");
}
ZVAL_UNDEF(result);
if (op1 != result) {
ZVAL_UNDEF(result);
}
return FAILURE;
}
}
if (op1 == result) {
zval_dtor(result);
}
ZVAL_LONG(result, op1_lval << op2_lval);
return SUCCESS;
}
@@ -1567,13 +1611,12 @@ ZEND_API int ZEND_FASTCALL shift_right_function(zval *result, zval *op1, zval *o
convert_op1_op2_long(op1, op1_lval, op2, op2_lval, ZEND_SR, shift_right_function);
if (op1 == result) {
zval_dtor(result);
}
/* prevent wrapping quirkiness on some processors where >> 64 + x == >> x */
if (UNEXPECTED((zend_ulong)op2_lval >= SIZEOF_ZEND_LONG * 8)) {
if (EXPECTED(op2_lval > 0)) {
if (op1 == result) {
zval_dtor(result);
}
ZVAL_LONG(result, (op1_lval < 0) ? -1 : 0);
return SUCCESS;
} else {
@@ -1582,11 +1625,17 @@ ZEND_API int ZEND_FASTCALL shift_right_function(zval *result, zval *op1, zval *o
} else {
zend_error_noreturn(E_ERROR, "Bit shift by negative number");
}
ZVAL_UNDEF(result);
if (op1 != result) {
ZVAL_UNDEF(result);
}
return FAILURE;
}
}
if (op1 == result) {
zval_dtor(result);
}
ZVAL_LONG(result, op1_lval >> op2_lval);
return SUCCESS;
}
@@ -1594,6 +1643,7 @@ ZEND_API int ZEND_FASTCALL shift_right_function(zval *result, zval *op1, zval *o
ZEND_API int ZEND_FASTCALL concat_function(zval *result, zval *op1, zval *op2) /* {{{ */
{
zval *orig_op1 = op1;
zval op1_copy, op2_copy;
int use_copy1 = 0, use_copy2 = 0;
@@ -1606,11 +1656,11 @@ ZEND_API int ZEND_FASTCALL concat_function(zval *result, zval *op1, zval *op2) /
ZEND_TRY_BINARY_OBJECT_OPERATION(ZEND_CONCAT, concat_function);
use_copy1 = zend_make_printable_zval(op1, &op1_copy);
if (use_copy1) {
/* We have created a converted copy of op1. Therefore, op1 won't become the result so
* we have to free it.
*/
if (UNEXPECTED(EG(exception))) {
zval_dtor(&op1_copy);
return FAILURE;
}
if (result == op1) {
zval_dtor(op1);
if (UNEXPECTED(op1 == op2)) {
op2 = &op1_copy;
}
@@ -1628,6 +1678,13 @@ ZEND_API int ZEND_FASTCALL concat_function(zval *result, zval *op1, zval *op2) /
ZEND_TRY_BINARY_OP2_OBJECT_OPERATION(ZEND_CONCAT);
use_copy2 = zend_make_printable_zval(op2, &op2_copy);
if (use_copy2) {
if (UNEXPECTED(EG(exception))) {
if (UNEXPECTED(use_copy1)) {
zval_dtor(op1);
}
zval_dtor(&op2_copy);
return FAILURE;
}
op2 = &op2_copy;
}
}
@@ -1641,7 +1698,15 @@ ZEND_API int ZEND_FASTCALL concat_function(zval *result, zval *op1, zval *op2) /
if (UNEXPECTED(op1_len > SIZE_MAX - op2_len)) {
zend_throw_error(NULL, "String size overflow");
ZVAL_FALSE(result);
if (UNEXPECTED(use_copy1)) {
zval_dtor(op1);
}
if (UNEXPECTED(use_copy2)) {
zval_dtor(op2);
}
if (orig_op1 != result) {
ZVAL_UNDEF(result);
}
return FAILURE;
}
@@ -1651,6 +1716,9 @@ ZEND_API int ZEND_FASTCALL concat_function(zval *result, zval *op1, zval *op2) /
} else {
result_str = zend_string_alloc(result_len, 0);
memcpy(ZSTR_VAL(result_str), Z_STRVAL_P(op1), op1_len);
if (result == orig_op1) {
zval_dtor(orig_op1);
}
}
/* This has to happen first to account for the cases where result == op1 == op2 and
+1 -1
View File
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
| Copyright (c) 1998-2016 Zend Technologies Ltd. (http://www.zend.com) |
| Copyright (c) 1998-2017 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
+1 -1
View File
@@ -2,7 +2,7 @@
+----------------------------------------------------------------------+
| Zend Engine |
+----------------------------------------------------------------------+
| Copyright (c) 1998-2016 Zend Technologies Ltd. (http://www.zend.com) |
| Copyright (c) 1998-2017 Zend Technologies Ltd. (http://www.zend.com) |
+----------------------------------------------------------------------+
| This source file is subject to version 2.00 of the Zend license, |
| that is bundled with this package in the file LICENSE, and is |
Loaded 100 of 1010 files, more files were not shown because too many files have changed in this diff. Show more