]> granicus.if.org Git - php/log
php
4 years agoRemove unnecessary cast
Nikita Popov [Mon, 16 Mar 2020 11:01:50 +0000 (12:01 +0100)]
Remove unnecessary cast

4 years agoFix ZPP of MultipleIterator::detachIterator() and MultipleIterator::containsIterator()
Máté Kocsis [Mon, 16 Mar 2020 09:27:48 +0000 (10:27 +0100)]
Fix ZPP of MultipleIterator::detachIterator() and MultipleIterator::containsIterator()

4 years agoAdd stubs for SplObjectStorage and MultipleIterator
Máté Kocsis [Sat, 14 Mar 2020 19:16:19 +0000 (20:16 +0100)]
Add stubs for SplObjectStorage and MultipleIterator

Closes GH-5267

4 years agoAdd stubs for SplHeap and SplPriorityQueue
Máté Kocsis [Sat, 14 Mar 2020 18:26:20 +0000 (19:26 +0100)]
Add stubs for SplHeap and SplPriorityQueue

Closes GH-5266

4 years agoAdd str_contains() function
Philipp Tanlak [Thu, 13 Feb 2020 15:23:01 +0000 (16:23 +0100)]
Add str_contains() function

RFC: https://wiki.php.net/rfc/str_contains

Closes GH-5179.

4 years agoMerge branch 'PHP-7.4'
Nikita Popov [Mon, 16 Mar 2020 09:32:39 +0000 (10:32 +0100)]
Merge branch 'PHP-7.4'

* PHP-7.4:
  Don't specify ports in socket_export_stream-4.phpt

4 years agoDon't specify ports in socket_export_stream-4.phpt
Nikita Popov [Mon, 16 Mar 2020 09:32:04 +0000 (10:32 +0100)]
Don't specify ports in socket_export_stream-4.phpt

Let the system pick a free port instead...

4 years agoMerge branch 'PHP-7.4'
Christoph M. Becker [Sun, 15 Mar 2020 14:02:10 +0000 (15:02 +0100)]
Merge branch 'PHP-7.4'

* PHP-7.4:
  Fix typo in php.ini comment

4 years agoMerge branch 'PHP-7.3' into PHP-7.4
Christoph M. Becker [Sun, 15 Mar 2020 14:01:23 +0000 (15:01 +0100)]
Merge branch 'PHP-7.3' into PHP-7.4

* PHP-7.3:
  Fix typo in php.ini comment

4 years agoFix typo in php.ini comment
Jacob Dreesen [Sun, 15 Mar 2020 13:11:40 +0000 (14:11 +0100)]
Fix typo in php.ini comment

4 years agoEmit warning about type narrowing for tracing JIT as well
Dmitry Stogov [Fri, 13 Mar 2020 22:29:46 +0000 (01:29 +0300)]
Emit warning about type narrowing for tracing JIT as well

4 years agoFixed RC inference for ZEND_ASSIGN_STATIC_PROP and removed useless checks during...
Dmitry Stogov [Fri, 13 Mar 2020 22:17:45 +0000 (01:17 +0300)]
Fixed RC inference for ZEND_ASSIGN_STATIC_PROP and removed useless checks during RC inference

4 years agoTracing JIT (it doesn't support register allocation yet)
Dmitry Stogov [Fri, 13 Mar 2020 19:11:07 +0000 (22:11 +0300)]
Tracing JIT (it doesn't support register allocation yet)

Use opcache.jit=1255 to swith it on (the third digit 5 really matters)
Use opcache.jit_debug=0xff001 to see how it works and what code it generates

4 years agoAccept const op_array in zend_build_call_map
Nikita Popov [Fri, 13 Mar 2020 15:25:28 +0000 (16:25 +0100)]
Accept const op_array in zend_build_call_map

4 years agoAdd assertions for DIM_W/RW uses
Nikita Popov [Fri, 13 Mar 2020 12:11:42 +0000 (13:11 +0100)]
Add assertions for DIM_W/RW uses

The result should be used only once and on the directly next opline,
otherwise it may not be safe. Add some assertions to that effect.

4 years agoAlso remove dead arguments
Nikita Popov [Fri, 13 Mar 2020 11:45:02 +0000 (12:45 +0100)]
Also remove dead arguments

4 years agoRemove dead type narrowing code
Nikita Popov [Fri, 13 Mar 2020 11:26:18 +0000 (12:26 +0100)]
Remove dead type narrowing code

Rename handle_type_narrowing() to clarify what it does, and
remove dead code for resetting dependent vars.

4 years agoMerge branch 'PHP-7.4'
Dmitry Stogov [Fri, 13 Mar 2020 08:42:07 +0000 (11:42 +0300)]
Merge branch 'PHP-7.4'

* PHP-7.4:
  Check asserts early
  identation fix
  Call global code of preloaded script in global context
  Avoid "Anonymous class wasn't preloaded" error by lazely loading of not preloaded part of a preloaded script

4 years agoCheck asserts early
Dmitry Stogov [Thu, 12 Mar 2020 19:26:30 +0000 (22:26 +0300)]
Check asserts early

4 years agoidentation fix
Dmitry Stogov [Thu, 12 Mar 2020 19:26:16 +0000 (22:26 +0300)]
identation fix

4 years agoCall global code of preloaded script in global context
Dmitry Stogov [Thu, 12 Mar 2020 19:19:47 +0000 (22:19 +0300)]
Call global code of preloaded script in global context

4 years agoRemove deprecated (real) cast
George Peter Banyard [Fri, 28 Feb 2020 11:13:03 +0000 (12:13 +0100)]
Remove deprecated (real) cast

Closes GH-5220

4 years agoAvoid "Anonymous class wasn't preloaded" error by lazely loading of not preloaded...
Dmitry Stogov [Thu, 12 Mar 2020 13:31:24 +0000 (16:31 +0300)]
Avoid "Anonymous class wasn't preloaded" error by lazely loading of not preloaded part of a preloaded script

4 years agoUpdate Unicode tables to 13.0.0
Nikita Popov [Wed, 11 Mar 2020 20:15:28 +0000 (21:15 +0100)]
Update Unicode tables to 13.0.0

4 years agoMerge branch 'PHP-7.4'
Christoph M. Becker [Thu, 12 Mar 2020 10:28:39 +0000 (11:28 +0100)]
Merge branch 'PHP-7.4'

* PHP-7.4:
  Fix #79199: curl_copy_handle() memory leak

4 years agoMerge branch 'PHP-7.3' into PHP-7.4
Christoph M. Becker [Thu, 12 Mar 2020 10:27:30 +0000 (11:27 +0100)]
Merge branch 'PHP-7.3' into PHP-7.4

* PHP-7.3:
  Fix #79199: curl_copy_handle() memory leak

4 years agoFix #79199: curl_copy_handle() memory leak
Christoph M. Becker [Wed, 11 Mar 2020 17:29:40 +0000 (18:29 +0100)]
Fix #79199: curl_copy_handle() memory leak

`curl_copy_handle()` already registers a new resource, so we must not
increase the refcount of the original resource.

4 years agoMerge branch 'PHP-7.4'
Christoph M. Becker [Thu, 12 Mar 2020 09:57:14 +0000 (10:57 +0100)]
Merge branch 'PHP-7.4'

* PHP-7.4:
  Fix #61597: SXE properties may lack attributes and content

4 years agoMerge branch 'PHP-7.3' into PHP-7.4
Christoph M. Becker [Thu, 12 Mar 2020 09:53:22 +0000 (10:53 +0100)]
Merge branch 'PHP-7.3' into PHP-7.4

* PHP-7.3:
  Fix #61597: SXE properties may lack attributes and content

4 years agoFix #61597: SXE properties may lack attributes and content
Christoph M. Becker [Sat, 7 Mar 2020 10:20:06 +0000 (11:20 +0100)]
Fix #61597: SXE properties may lack attributes and content

We must not treat a node as string if it has attributes, unless it is
an entity declaration which is always treated as string by simplexml.

4 years agoMerge branch 'PHP-7.4'
Dmitry Stogov [Thu, 12 Mar 2020 08:45:05 +0000 (11:45 +0300)]
Merge branch 'PHP-7.4'

* PHP-7.4:
  Export FFI::__BIGGEST_ALIGNMENT__

4 years agoExport FFI::__BIGGEST_ALIGNMENT__
Dmitry Stogov [Thu, 12 Mar 2020 08:43:01 +0000 (11:43 +0300)]
Export FFI::__BIGGEST_ALIGNMENT__

4 years agoMerge branch 'PHP-7.4'
Dmitry Stogov [Thu, 12 Mar 2020 08:41:12 +0000 (11:41 +0300)]
Merge branch 'PHP-7.4'

* PHP-7.4:
  Allow to fetch function address

4 years agoAllow to fetch function address
Dmitry Stogov [Thu, 12 Mar 2020 08:40:48 +0000 (11:40 +0300)]
Allow to fetch function address

4 years agoMerge branch 'PHP-7.4'
Xinchen Hui [Thu, 12 Mar 2020 07:45:07 +0000 (15:45 +0800)]
Merge branch 'PHP-7.4'

4 years agoFolder mark missed
Xinchen Hui [Thu, 12 Mar 2020 07:43:15 +0000 (15:43 +0800)]
Folder mark missed

4 years agoExport FFI::__BIGGEST_ALIGNMENT__
Dmitry Stogov [Wed, 11 Mar 2020 12:29:58 +0000 (15:29 +0300)]
Export FFI::__BIGGEST_ALIGNMENT__

4 years agoAllow to fetch function address
Dmitry Stogov [Wed, 11 Mar 2020 12:13:27 +0000 (15:13 +0300)]
Allow to fetch function address

4 years agoMerge branch 'PHP-7.4'
Christoph M. Becker [Wed, 11 Mar 2020 10:32:46 +0000 (11:32 +0100)]
Merge branch 'PHP-7.4'

* PHP-7.4:
  Fix #78210: Invalid pointer address

4 years agoMerge branch 'PHP-7.3' into PHP-7.4
Christoph M. Becker [Wed, 11 Mar 2020 10:30:59 +0000 (11:30 +0100)]
Merge branch 'PHP-7.3' into PHP-7.4

* PHP-7.3:
  Fix #78210: Invalid pointer address

4 years agoFix #78210: Invalid pointer address
Christoph M. Becker [Wed, 11 Mar 2020 09:16:04 +0000 (10:16 +0100)]
Fix #78210: Invalid pointer address

This is actually about three distinct issues:

* If an empty string is passed as $address to `stream_socket_sendto()`,
  the `sa` is not initialized, so we must not pass it as `addr` to
  `php_stream_xport_sendto()`.

* On POSIX, `recvfrom()` truncates messages which are too long to fit
  into the specified buffer (unless `MSG_PEEK` is given), discards the
  excessive bytes, and returns the buffer length.  On Windows, the same
  happens, but `recvfrom()` returns `SOCKET_ERROR` with the error code
  `WSAEMSGSIZE`.  We have to catch this for best POSIX compatibility.

* In `php_network_parse_network_address_with_port()`, we have to zero
  `in6` (not only its alias `sa`) to properly support IPv6.

Co-Authored-By: Nikita Popov <nikita.ppv@googlemail.com>
4 years agoMerge branch 'PHP-7.4'
Christoph M. Becker [Wed, 11 Mar 2020 07:57:17 +0000 (08:57 +0100)]
Merge branch 'PHP-7.4'

* PHP-7.4:
  Fix #79364: When copy empty array, next key is unspecified

4 years agoMerge branch 'PHP-7.3' into PHP-7.4
Christoph M. Becker [Wed, 11 Mar 2020 07:55:11 +0000 (08:55 +0100)]
Merge branch 'PHP-7.3' into PHP-7.4

* PHP-7.3:
  Fix #79364: When copy empty array, next key is unspecified

4 years agoFix #79364: When copy empty array, next key is unspecified
Christoph M. Becker [Tue, 10 Mar 2020 15:12:53 +0000 (16:12 +0100)]
Fix #79364: When copy empty array, next key is unspecified

We must not forget to keep the `nNextFreeElement` when duplicating
empty arrays.

4 years agoMerge branch 'PHP-7.4'
Nikita Popov [Tue, 10 Mar 2020 15:54:17 +0000 (16:54 +0100)]
Merge branch 'PHP-7.4'

* PHP-7.4:
  Check for sys/auxv.h before using it.

4 years agoCheck for sys/auxv.h before using it.
Peter Seiderer [Mon, 9 Mar 2020 14:36:48 +0000 (15:36 +0100)]
Check for sys/auxv.h before using it.

Fixes aarch64 compile with uclibc-ng (does not provide
sys/auxv.h header file).

Closes GH-5248.

Signed-off-by: Peter Seiderer <ps.report@gmx.net>
4 years agoFixed bug #75902
Nikita Popov [Tue, 10 Mar 2020 15:49:17 +0000 (16:49 +0100)]
Fixed bug #75902

Don't special-case nested arrays/objects in str_replace(), instead
perform a string cast on them as well. For arrays, this will always
result in the usual conversion warning.

This behavior is consistent with preg_replace(). If we didn't want
to cast the array to string here, we should instead perform the
replacement recursively. Silently copying it is just confusing.

4 years agoEnable better trait conflict error message
Nikita Popov [Tue, 10 Mar 2020 15:17:32 +0000 (16:17 +0100)]
Enable better trait conflict error message

I don't think there is any reason to disable this anymore,
at least all the messages generated in tests look correct and
more useful.

4 years agoRequire non-absolute trait method refs to be unambiguous
Nikita Popov [Tue, 3 Mar 2020 13:31:09 +0000 (14:31 +0100)]
Require non-absolute trait method refs to be unambiguous

Currently, when writing something like

class X {
    use T1, T2 {
       func as otherFunc;
    }
    function func() {}
}

where both T1::func() and T2::func() exist, we will simply assume
that func refers to T1::func(). This is surprising, and it doesn't
really make sense that this particular method gets picked.

This commit validates that non-absolute method references are
unambiguous, i.e. refer to exactly one method. If there is
ambiguity, it is required to write T1::func as otherFunc or
similar.

Closes GH-5232.

4 years agoAdd some stubs for SPL
Máté Kocsis [Fri, 6 Mar 2020 09:01:10 +0000 (10:01 +0100)]
Add some stubs for SPL

Closes GH-5245

4 years agoPerform some maintenance work on the XSL extension
Máté Kocsis [Thu, 5 Mar 2020 20:12:59 +0000 (21:12 +0100)]
Perform some maintenance work on the XSL extension

Added stubs, fixed some ZPP, and changed PHP_FALIASes to PHP_METHODs.
Closes GH-5241

4 years agoMerge branch 'PHP-7.4'
Christoph M. Becker [Mon, 9 Mar 2020 21:53:23 +0000 (22:53 +0100)]
Merge branch 'PHP-7.4'

* PHP-7.4:
  Enclose INI values containing {TMP} in quotes

4 years agoMerge branch 'PHP-7.3' into PHP-7.4
Christoph M. Becker [Mon, 9 Mar 2020 21:51:11 +0000 (22:51 +0100)]
Merge branch 'PHP-7.3' into PHP-7.4

* PHP-7.3:
  Enclose INI values containing {TMP} in quotes

4 years agoEnclose INI values containing {TMP} in quotes
Christoph M. Becker [Mon, 9 Mar 2020 16:58:36 +0000 (17:58 +0100)]
Enclose INI values containing {TMP} in quotes

At least on Windows, the temporary directory may contain tilde signs,
which would result in an INI parse error.

4 years agoImprove type inference for COALESCE
Nikita Popov [Mon, 9 Mar 2020 15:17:02 +0000 (16:17 +0100)]
Improve type inference for COALESCE

Place a pi node on the non-null edge to remove a spurious
undef/null type.

Additionally, adjust the profitability heuristic to be more
accurate if the "other predecessor" writes to the variable.
Ideally this should not just consider the direct predecessors,
but it's sufficient for this case.

This partially addresses bug #79353 by removing the discrepancy
between ?? and ??=.

4 years agoMerge branch 'PHP-7.4'
Nikita Popov [Mon, 9 Mar 2020 14:01:48 +0000 (15:01 +0100)]
Merge branch 'PHP-7.4'

* PHP-7.4:
  Fixed bug #79357

4 years agoFixed bug #79357
Nikita Popov [Mon, 9 Mar 2020 13:59:59 +0000 (14:59 +0100)]
Fixed bug #79357

Peculiarly, for once the cause was not SOAPs "interesting" error
handling, but a bug in the call trampoline for internal functions...

4 years agoFix bug #79358: JIT miscompile in composer
Nikita Popov [Mon, 9 Mar 2020 11:55:14 +0000 (12:55 +0100)]
Fix bug #79358: JIT miscompile in composer

4 years agoRegenerate the VM
Máté Kocsis [Mon, 9 Mar 2020 10:37:29 +0000 (11:37 +0100)]
Regenerate the VM

Some error message changes were missed out previously.

4 years agoImprove error message of foreach
Máté Kocsis [Thu, 5 Mar 2020 15:56:42 +0000 (16:56 +0100)]
Improve error message of foreach

Closes GH-5240

4 years agoRemove DOM_GET_THIS macro
Nikita Popov [Mon, 9 Mar 2020 08:55:56 +0000 (09:55 +0100)]
Remove DOM_GET_THIS macro

This macro is trivial, it's more obvious to use ZEND_THIS directly.

4 years agoproper fix
Remi Collet [Mon, 9 Mar 2020 08:29:34 +0000 (09:29 +0100)]
proper fix

4 years agofix use after free
Remi Collet [Mon, 9 Mar 2020 08:19:57 +0000 (09:19 +0100)]
fix use after free

4 years agoFix #50678 files extracted by ZipArchive class lost their original modified time
Remi Collet [Mon, 9 Mar 2020 06:09:50 +0000 (07:09 +0100)]
Fix #50678 files extracted by ZipArchive class lost their original modified time

4 years agoRegenerate reflection stubs
Máté Kocsis [Sat, 7 Mar 2020 19:26:06 +0000 (20:26 +0100)]
Regenerate reflection stubs

4 years agoMerge branch 'PHP-7.4'
Christoph M. Becker [Fri, 6 Mar 2020 16:53:30 +0000 (17:53 +0100)]
Merge branch 'PHP-7.4'

* PHP-7.4:
  PHP-7.4 is now 7.4.5-dev

4 years agoPHP-7.4 is now 7.4.5-dev
Christoph M. Becker [Fri, 6 Mar 2020 16:49:55 +0000 (17:49 +0100)]
PHP-7.4 is now 7.4.5-dev

4 years agoMerge branch 'PHP-7.4'
Christoph M. Becker [Fri, 6 Mar 2020 15:41:34 +0000 (16:41 +0100)]
Merge branch 'PHP-7.4'

* PHP-7.4:
  Skip test on Windows if privileges are insufficient

4 years agoMerge branch 'PHP-7.3' into PHP-7.4
Christoph M. Becker [Fri, 6 Mar 2020 15:40:14 +0000 (16:40 +0100)]
Merge branch 'PHP-7.3' into PHP-7.4

* PHP-7.3:
  Skip test on Windows if privileges are insufficient

4 years agoSkip test on Windows if privileges are insufficient
Christoph M. Becker [Fri, 6 Mar 2020 15:38:18 +0000 (16:38 +0100)]
Skip test on Windows if privileges are insufficient

4 years agoRemove unnecessary uses of CHECK_SILENT
Nikita Popov [Fri, 6 Mar 2020 15:34:15 +0000 (16:34 +0100)]
Remove unnecessary uses of CHECK_SILENT

If no error is passed, it is always silent.

4 years agoRemove NO_ACCESS flag for zend_is_callable()
Nikita Popov [Fri, 6 Mar 2020 15:29:17 +0000 (16:29 +0100)]
Remove NO_ACCESS flag for zend_is_callable()

We may add support for fake_scope if necessary.

4 years agoMerge branch 'PHP-7.4'
Nikita Popov [Fri, 6 Mar 2020 10:43:58 +0000 (11:43 +0100)]
Merge branch 'PHP-7.4'

* PHP-7.4:
  Fix community job

4 years agoFix community job
Nikita Popov [Fri, 6 Mar 2020 09:54:16 +0000 (10:54 +0100)]
Fix community job

Marco broke things again.

4 years agoMerge branch 'PHP-7.4'
Nikita Popov [Fri, 6 Mar 2020 10:17:06 +0000 (11:17 +0100)]
Merge branch 'PHP-7.4'

* PHP-7.4:
  Add test for bug #63816

4 years agoAdd test for bug #63816
Nikita Popov [Fri, 6 Mar 2020 10:16:20 +0000 (11:16 +0100)]
Add test for bug #63816

This has been fixed in PHP 7.4, add a test for it.

4 years agoFixed bug #62609: Allow implementing Traversable in abstract class
Nikita Popov [Fri, 6 Mar 2020 10:08:59 +0000 (11:08 +0100)]
Fixed bug #62609: Allow implementing Traversable in abstract class

Master only, as this depends on fixes to calling order of
interface implementation handlers.

4 years ago[ci skip] fix for #72374 is no more a BC break
Remi Collet [Fri, 6 Mar 2020 09:29:16 +0000 (10:29 +0100)]
[ci skip] fix for #72374 is no more a BC break

4 years agobetter fix for #72374
Remi Collet [Thu, 5 Mar 2020 14:26:26 +0000 (15:26 +0100)]
better fix for #72374

4 years agoMerge branch 'PHP-7.4'
Christoph M. Becker [Fri, 6 Mar 2020 08:12:03 +0000 (09:12 +0100)]
Merge branch 'PHP-7.4'

* PHP-7.4:
  Fix #75673: SplStack::unserialize() behavior

4 years agoMerge branch 'PHP-7.3' into PHP-7.4
Christoph M. Becker [Fri, 6 Mar 2020 08:10:43 +0000 (09:10 +0100)]
Merge branch 'PHP-7.3' into PHP-7.4

* PHP-7.3:
  Fix #75673: SplStack::unserialize() behavior

4 years agoFix #75673: SplStack::unserialize() behavior
Christoph M. Becker [Thu, 5 Mar 2020 13:57:27 +0000 (14:57 +0100)]
Fix #75673: SplStack::unserialize() behavior

Even though `SplStack::unserialize()` is not supposed to be called on
an already constructed instance, it is probably better if the method
clears the stack before actually unserializing.

4 years agoFix another memory leak in dom_zvals_to_fragment.
Benjamin Eberlei [Thu, 5 Mar 2020 23:03:13 +0000 (00:03 +0100)]
Fix another memory leak in dom_zvals_to_fragment.

4 years ago[ci skip] Tweeks to release-process.md
Christoph M. Becker [Thu, 5 Mar 2020 17:06:10 +0000 (18:06 +0100)]
[ci skip] Tweeks to release-process.md

As discussed with Derick and Remi.

4 years agoupgrade information about changs in Zip
Remi Collet [Thu, 5 Mar 2020 13:03:20 +0000 (14:03 +0100)]
upgrade information about changs in Zip

4 years agodrop old constant with bad name, kept until now for BC
Remi Collet [Thu, 5 Mar 2020 12:46:34 +0000 (13:46 +0100)]
drop old constant with bad name, kept until now for BC

4 years ago- make status, statusSys properties and
Remi Collet [Thu, 5 Mar 2020 09:57:26 +0000 (10:57 +0100)]
- make status, statusSys properties and
  ZipArchive::getStatusString() method   available after archive is closed

4 years agoNEWS
Remi Collet [Wed, 4 Mar 2020 14:31:38 +0000 (15:31 +0100)]
NEWS

4 years agoadd lastId property to ZipArchive
Remi Collet [Wed, 4 Mar 2020 14:29:59 +0000 (15:29 +0100)]
add lastId property to ZipArchive

4 years agoUse separate typedef for bucket comparison function
Nikita Popov [Wed, 4 Mar 2020 11:35:49 +0000 (12:35 +0100)]
Use separate typedef for bucket comparison function

Avoid performing the same casting dance inside each sort compare
function.

4 years agoMerge branch 'PHP-7.4'
Christoph M. Becker [Wed, 4 Mar 2020 11:16:13 +0000 (12:16 +0100)]
Merge branch 'PHP-7.4'

* PHP-7.4:
  Fix intermittent test failures of windows_mb_path tests

4 years agoFix intermittent test failures of windows_mb_path tests
Christoph M. Becker [Wed, 4 Mar 2020 11:11:44 +0000 (12:11 +0100)]
Fix intermittent test failures of windows_mb_path tests

Some of these tests create, use and later remove the same folder, so if
these are run in parallel, they may fail due to race conditions[1].  As
quick fix we add appropriate CONFLICTS clauses to prevent parallel
execution of the respective test groups.

[1] <https://ci.appveyor.com/project/php/php-src/builds/31213037/job/48rp13i0frf5t9hl#L5480>

4 years agoImplement interfaces after all methods available
Nikita Popov [Wed, 4 Mar 2020 09:10:36 +0000 (10:10 +0100)]
Implement interfaces after all methods available

The place where interface implementation handlers is called is
currently ill-defined: If the class implements interfaces itself,
the handlers for both the parent interfaces and the new interfaces
will be called after all methods are registered (post trait use).
If the class does not implement interfaces, then the parent
interface handlers are called early during inheritance (before
methods are inherited).

This commit moves the calls to always occur after all methods are
available. For userland classes this will be post trait import,
at the time where interfaces get implemented (whether the class
itself defines additional interfaces or not). For internal classes
it will be at the end of inheritance, as internal class declarations
do not have proper finalization.

This allows us to simplify the logic for implementing the magic
Iterator / IteratorAggregate interfaces. In particularly we can
now also automatically detect whether an extension of
IteratorAggregate can safely reuse a custom get_iterator handler,
or whether it needs to switch to the userland mechanism. The
Iterator case continues to rely on ZEND_ACC_REUSE_GET_ITERATOR
for this purpose, as a wholesale replacement is not possible there.

4 years agoPDO_OCI: Add test of the phpinfo output
Cameron Porter [Tue, 3 Mar 2020 02:35:28 +0000 (20:35 -0600)]
PDO_OCI: Add test of the phpinfo output

4 years agozip_file_replace don't need ZIP_FL_OVERWRITE
Remi Collet [Wed, 4 Mar 2020 08:22:24 +0000 (09:22 +0100)]
zip_file_replace don't need ZIP_FL_OVERWRITE

4 years agoRemove empty "interface gets implemented" handlers
Nikita Popov [Tue, 3 Mar 2020 16:06:15 +0000 (17:06 +0100)]
Remove empty "interface gets implemented" handlers

4 years agoSmall code cleanup
Nikita Popov [Tue, 3 Mar 2020 14:00:15 +0000 (15:00 +0100)]
Small code cleanup

I found what the modifier code does with XOR pretty confusing.
It's just removing the PPP bits...

Also remove an outdated reference to OVERLOADED_FUNCTION.

4 years agoResolve trait alias refers to earlier
Nikita Popov [Tue, 3 Mar 2020 13:21:33 +0000 (14:21 +0100)]
Resolve trait alias refers to earlier

Make sure all trait method references are converted to absolute
method references in advance. This regresses one error message
that I don't think is particularly valuable.

4 years agoMerge branch 'PHP-7.4'
Remi Collet [Tue, 3 Mar 2020 12:06:46 +0000 (13:06 +0100)]
Merge branch 'PHP-7.4'

* PHP-7.4:
  this test needs json

4 years agothis test needs json
Remi Collet [Tue, 3 Mar 2020 12:06:31 +0000 (13:06 +0100)]
this test needs json