]> granicus.if.org Git - php/log
php
4 years agoAvoid useless REFCOUNTED check
Dmitry Stogov [Wed, 3 Jun 2020 09:11:39 +0000 (12:11 +0300)]
Avoid useless REFCOUNTED check

4 years agoFix #79665: ini_get() and opcache_get_configuration() inconsistency
Christoph M. Becker [Tue, 2 Jun 2020 12:58:26 +0000 (14:58 +0200)]
Fix #79665: ini_get() and opcache_get_configuration() inconsistency

Overriding the given INI values in modifier callbacks is not possible,
so instead of enforcing "normalized" internal values, we just reject
the attempted changes.

4 years agoUse cheaper zend_rethrow_exception() instead of zend_throw_exception_internal()
Dmitry Stogov [Wed, 3 Jun 2020 08:51:04 +0000 (11:51 +0300)]
Use cheaper zend_rethrow_exception() instead of zend_throw_exception_internal()

4 years agoMerge branch 'PHP-7.4'
Nikita Popov [Wed, 3 Jun 2020 08:17:27 +0000 (10:17 +0200)]
Merge branch 'PHP-7.4'

* PHP-7.4:
  Report len as -1 instead of INT_MAX

4 years agoReport len as -1 instead of INT_MAX
Nikita Popov [Wed, 3 Jun 2020 08:15:54 +0000 (10:15 +0200)]
Report len as -1 instead of INT_MAX

Per docs it should be -1. And would be on 32-bit systems, but
not on 64-bit systems.

4 years agoMerge branch 'PHP-7.4'
Nikita Popov [Wed, 3 Jun 2020 08:02:31 +0000 (10:02 +0200)]
Merge branch 'PHP-7.4'

* PHP-7.4:
  Skip new watch point test under asan

4 years agoSkip new watch point test under asan
Nikita Popov [Wed, 3 Jun 2020 08:01:57 +0000 (10:01 +0200)]
Skip new watch point test under asan

4 years agoHandle VM interrupts after DO_ICALL through side exits
Dmitry Stogov [Wed, 3 Jun 2020 07:58:17 +0000 (10:58 +0300)]
Handle VM interrupts after DO_ICALL through side exits

4 years ago%d out token IDs in test
Nikita Popov [Wed, 3 Jun 2020 07:57:01 +0000 (09:57 +0200)]
%d out token IDs in test

Avoid having to update this test any time token numbers shift.

4 years agoAvoid reference counting when RETURN CV
Dmitry Stogov [Tue, 2 Jun 2020 21:49:10 +0000 (00:49 +0300)]
Avoid reference counting when RETURN CV

4 years agoAdded missed helper
Dmitry Stogov [Tue, 2 Jun 2020 20:50:32 +0000 (23:50 +0300)]
Added missed helper

4 years agoSkip new test case on Windows when JIT is enabled
Christoph M. Becker [Tue, 2 Jun 2020 15:12:34 +0000 (17:12 +0200)]
Skip new test case on Windows when JIT is enabled

Cf. <http://git.php.net/?p=php-src.git;a=commit;h=c5cf0af8a98cbc574fd315bf9d78033b896886f3>.

4 years agoMerge branch 'PHP-7.4'
Christoph M. Becker [Tue, 2 Jun 2020 13:19:32 +0000 (15:19 +0200)]
Merge branch 'PHP-7.4'

* PHP-7.4:
  Fix #73927: phpdbg fails with windows error prompt at "watch array"

4 years agoFix #73927: phpdbg fails with windows error prompt at "watch array"
Christoph M. Becker [Wed, 27 May 2020 16:26:32 +0000 (18:26 +0200)]
Fix #73927: phpdbg fails with windows error prompt at "watch array"

We expect zvals, so we should request zvals.

We also suppress spurious watchpoint removal notices.

4 years agoTracing JIT support for indirect CV modification (may be incomplete)
Dmitry Stogov [Tue, 2 Jun 2020 12:55:18 +0000 (15:55 +0300)]
Tracing JIT support for indirect CV modification (may be incomplete)

4 years agoAfdded misse MAY_BE_ARRAY_* flags
Dmitry Stogov [Tue, 2 Jun 2020 12:54:44 +0000 (15:54 +0300)]
Afdded misse MAY_BE_ARRAY_* flags

4 years agoMerge branch 'PHP-7.4'
Christoph M. Becker [Tue, 2 Jun 2020 08:48:15 +0000 (10:48 +0200)]
Merge branch 'PHP-7.4'

* PHP-7.4:
  Fix #79664: PDOStatement::getColumnMeta fails on empty result set

4 years agoMerge branch 'PHP-7.3' into PHP-7.4
Christoph M. Becker [Tue, 2 Jun 2020 08:46:35 +0000 (10:46 +0200)]
Merge branch 'PHP-7.3' into PHP-7.4

* PHP-7.3:
  Fix #79664: PDOStatement::getColumnMeta fails on empty result set

4 years agoFix #79664: PDOStatement::getColumnMeta fails on empty result set
Christoph M. Becker [Tue, 2 Jun 2020 07:36:39 +0000 (09:36 +0200)]
Fix #79664: PDOStatement::getColumnMeta fails on empty result set

As its name suggests, `sqlite3_data_count` returns the number of
columns in the current row of the result set; we are interested in the
number of columns regardless of the current row, so we have to use
`sqlite3_column_count` instead.

4 years agoAdd some mixed types
Nikita Popov [Tue, 2 Jun 2020 08:15:50 +0000 (10:15 +0200)]
Add some mixed types

4 years agoFixed retutn type inference when return undefined variable
Dmitry Stogov [Mon, 1 Jun 2020 13:26:22 +0000 (16:26 +0300)]
Fixed retutn type inference when return undefined variable

4 years agoMerge branch 'PHP-7.4'
Christoph M. Becker [Mon, 1 Jun 2020 11:25:58 +0000 (13:25 +0200)]
Merge branch 'PHP-7.4'

* PHP-7.4:
  Fix #79650: php-win.exe 100% cpu lockup

4 years agoMerge branch 'PHP-7.3' into PHP-7.4
Christoph M. Becker [Mon, 1 Jun 2020 11:23:59 +0000 (13:23 +0200)]
Merge branch 'PHP-7.3' into PHP-7.4

* PHP-7.3:
  Fix #79650: php-win.exe 100% cpu lockup

4 years agoFix #79650: php-win.exe 100% cpu lockup
Christoph M. Becker [Sun, 31 May 2020 11:28:09 +0000 (13:28 +0200)]
Fix #79650: php-win.exe 100% cpu lockup

As of PHP 7.3.0, `sapi_cli_single_write()` is supposed to return `< 0`
on failure, but `fwrite()` returns a `size_t`, and signals error by
setting the stream's error indicator.  We have to cater to that.

4 years agoFixed tracing JIT for closure run_time_cache access
Dmitry Stogov [Fri, 29 May 2020 10:58:04 +0000 (13:58 +0300)]
Fixed tracing JIT for closure run_time_cache access

4 years agoFix php_get_args function info return type and add arg check
Ilija Tovilo [Sat, 30 May 2020 21:33:25 +0000 (23:33 +0200)]
Fix php_get_args function info return type and add arg check

Closes GH-5648.

4 years agoAdd UPGRADING note for pty support
Nikita Popov [Sun, 31 May 2020 15:05:42 +0000 (17:05 +0200)]
Add UPGRADING note for pty support

[ci skip]

4 years agoAdd UPGRADING note for xmlrpc unbundling
Nikita Popov [Sun, 31 May 2020 14:57:37 +0000 (16:57 +0200)]
Add UPGRADING note for xmlrpc unbundling

And drop other UPGRADING references to xmlrpc. I don't think it
makes sense to have those for extensions that are no longer
shipped...

[ci skip]

4 years agoFix some line overruns in UPGRADING
Nikita Popov [Sun, 31 May 2020 14:55:46 +0000 (16:55 +0200)]
Fix some line overruns in UPGRADING

[ci skip]

4 years agoMove upgrading note for mixed
Nikita Popov [Sun, 31 May 2020 14:48:14 +0000 (16:48 +0200)]
Move upgrading note for mixed

This should be in the "new features" section.

[ci skip]

4 years agoFix small typo in comment
Daniel Ruf [Sun, 31 May 2020 12:18:19 +0000 (14:18 +0200)]
Fix small typo in comment

4 years agoupdate node-fetch url
Moni [Sat, 30 May 2020 14:29:14 +0000 (16:29 +0200)]
update node-fetch url

4 years agoFix #79653 Unexpected error for ArrayIterator::ksort()
Máté Kocsis [Sat, 30 May 2020 09:06:49 +0000 (11:06 +0200)]
Fix #79653 Unexpected error for ArrayIterator::ksort()

Closes GH-5644

4 years agoUse ZPP callable check for spl_autoload_register.
George Peter Banyard [Thu, 26 Mar 2020 00:00:55 +0000 (01:00 +0100)]
Use ZPP callable check for spl_autoload_register.

This makes it always throw a TypeError, moreover this makes the
error message consistent.

Added a warning mentioning that the second parameter is now ignored
when passed false.

Closes GH-5301

4 years agoFix #79652 Ensure that the mixed type is displayed instead of the union of all types
Máté Kocsis [Fri, 29 May 2020 20:31:37 +0000 (22:31 +0200)]
Fix #79652 Ensure that the mixed type is displayed instead of the union of all types

Closes GH-56430

4 years agoUnbundle ext/xmlrpc
Christoph M. Becker [Fri, 29 May 2020 13:43:45 +0000 (15:43 +0200)]
Unbundle ext/xmlrpc

According to <https://wiki.php.net/rfc/unbundle_xmlprc> we unbundle
ext/xmlrpc.

4 years agoAdd upgrading notes about the deprecated functionality in ext/enchant
Máté Kocsis [Fri, 29 May 2020 13:15:27 +0000 (15:15 +0200)]
Add upgrading notes about the deprecated functionality in ext/enchant

[skip ci]

4 years agoConvert enchant resources to opaque objects
Máté Kocsis [Fri, 15 May 2020 06:38:02 +0000 (08:38 +0200)]
Convert enchant resources to opaque objects

Additionally, deprecate ENCHANT_MYSPELL and ENCHANT_ISPELL constants.
Closes GH-5577

Co-authored-by: Remi Collet <remi@php.net>
4 years agoSupport libzip 1.6 on Windows
Christoph M. Becker [Fri, 29 May 2020 11:42:18 +0000 (13:42 +0200)]
Support libzip 1.6 on Windows

4 years agoFix Windows build
Nikita Popov [Fri, 29 May 2020 10:58:31 +0000 (12:58 +0200)]
Fix Windows build

4 years agoFixed tracing JIT register allocator (failure on ext/opcache/tests/jit/assign_002...
Dmitry Stogov [Fri, 29 May 2020 10:27:47 +0000 (13:27 +0300)]
Fixed tracing JIT register allocator (failure on ext/opcache/tests/jit/assign_002.phpt)

4 years agoAllow tracing JIT generate code when function exits from VM (e.g. for magic __get...
Dmitry Stogov [Fri, 29 May 2020 10:25:59 +0000 (13:25 +0300)]
Allow tracing JIT generate code when function exits from VM (e.g. for magic __get/__set)

4 years agoRemove json checks in fuzzer SAPI
Nikita Popov [Fri, 29 May 2020 10:05:42 +0000 (12:05 +0200)]
Remove json checks in fuzzer SAPI

JSON is now always enabled

4 years agoDon't add guards that are not going to be checked
Dmitry Stogov [Fri, 29 May 2020 09:17:09 +0000 (12:17 +0300)]
Don't add guards that are not going to be checked

4 years agoFixed use-after-free in tracing JIT when recording closures and top-level op_arrays.
Dmitry Stogov [Thu, 28 May 2020 21:45:28 +0000 (00:45 +0300)]
Fixed use-after-free in tracing JIT when recording closures and top-level op_arrays.

4 years agoClean up calls to extension_loaded('json') in tests
Tyson Andre [Thu, 28 May 2020 16:53:12 +0000 (12:53 -0400)]
Clean up calls to extension_loaded('json') in tests

These are no longer needed after https://wiki.php.net/rfc/always_enable_json

Closes GH-5637

4 years agoFixed tracing JIT type inference for passing undefined CV by value
Dmitry Stogov [Thu, 28 May 2020 15:35:32 +0000 (18:35 +0300)]
Fixed tracing JIT type inference for passing undefined CV by value

4 years agoFixed incorrect trace type inference for top-level code
Dmitry Stogov [Thu, 28 May 2020 14:43:29 +0000 (17:43 +0300)]
Fixed incorrect trace type inference for top-level code

4 years agoFixed incorrect type inference
Dmitry Stogov [Thu, 28 May 2020 14:10:05 +0000 (17:10 +0300)]
Fixed incorrect type inference

4 years agoMerge branch 'PHP-7.4'
Christoph M. Becker [Thu, 28 May 2020 13:35:47 +0000 (15:35 +0200)]
Merge branch 'PHP-7.4'

* PHP-7.4:
  Fix PVS-Studio integration

4 years agoMerge branch 'PHP-7.3' into PHP-7.4
Christoph M. Becker [Thu, 28 May 2020 13:34:09 +0000 (15:34 +0200)]
Merge branch 'PHP-7.3' into PHP-7.4

* PHP-7.3:
  Fix PVS-Studio integration

4 years agoFix PVS-Studio integration
Christoph M. Becker [Thu, 28 May 2020 13:20:06 +0000 (15:20 +0200)]
Fix PVS-Studio integration

Without this configuration option, PVS-Studio looks for preprocessed
files (*.i), but these do not exists.

4 years agoBuild fix for newer versions of NetBSD.
David Carlier [Wed, 27 May 2020 22:26:13 +0000 (23:26 +0100)]
Build fix for newer versions of NetBSD.

its libutil contains newer conflicting apis as estrdup, emalloc.

Closes GH-5635

4 years agoEnsure Exception::getFile/getLine return type is correct
Nikita Popov [Thu, 28 May 2020 12:19:47 +0000 (14:19 +0200)]
Ensure Exception::getFile/getLine return type is correct

These return an untyped protected property, so we can't rely on
the type being correct.

Also add return types to the interface -- normally this would be
a no-go, but Throwable is a special interface that can only
be implemented internally, so we control all implementations.

4 years agoRun Symfony tests in per-component
Nicolas Grekas [Mon, 25 May 2020 11:33:50 +0000 (13:33 +0200)]
Run Symfony tests in per-component

4 years agoRe-enable Symfony test on PHP 8
Nicolas Grekas [Mon, 25 May 2020 08:20:30 +0000 (10:20 +0200)]
Re-enable Symfony test on PHP 8

4 years agoMake Exception::$previous a typed property
Nikita Popov [Thu, 28 May 2020 12:01:29 +0000 (14:01 +0200)]
Make Exception::$previous a typed property

Exception::$previous is a private property, so we can add a type:

    private ?Throwable $previous = null;

4 years agoMake Exception::$trace typed array property
Nikita Popov [Thu, 28 May 2020 10:23:37 +0000 (12:23 +0200)]
Make Exception::$trace typed array property

This is a private property, so we are allowed to add a type.
The new declaration of the property is:

    private array $trace = [];

This ensures that Exception::getTrace() does indeed return an array.

Userland code that was modifying the property through refleciton
may have to be adjusted to assign an array (instead of null,
for example).

Closes GH-5636.

4 years agoAvoid recording of uninitialized types.
Dmitry Stogov [Thu, 28 May 2020 11:39:41 +0000 (14:39 +0300)]
Avoid recording of uninitialized types.
VM doesn't set Z_TYPE() for IS_VAR when passes class_entry reference.

4 years agoAdd some mixed parameter types and fix UNKNOWN default values in ext/xmlrpc
Máté Kocsis [Thu, 28 May 2020 10:40:54 +0000 (12:40 +0200)]
Add some mixed parameter types and fix UNKNOWN default values in ext/xmlrpc

4 years agoExtract code for declaring Exception/Error properties
Nikita Popov [Thu, 28 May 2020 10:13:08 +0000 (12:13 +0200)]
Extract code for declaring Exception/Error properties

4 years agoConvert Exception::getMessage() result to string
Nikita Popov [Mon, 25 May 2020 10:10:41 +0000 (12:10 +0200)]
Convert Exception::getMessage() result to string

We specify that the return type of Exception::getMessage() is a
string. However, we don't currently ensure this, because
Exception::$message is a protected member that can be set to any
type. Fix this by performing an explicit type-cast.

This also requires a temporary refcount increment in the __toString()
object handler, because there is no additional owner of the object,
and it may get released prematurely as part of the __toString() call.

4 years agoSplit "opcache.jit_max_recursion_unroll" into "opcache.jit_max_recursive_calls" and...
Dmitry Stogov [Thu, 28 May 2020 09:28:05 +0000 (12:28 +0300)]
Split "opcache.jit_max_recursion_unroll" into "opcache.jit_max_recursive_calls" and "opcache.jit_max_recursive_returns".
It's possible to disable recording of "recursive return loops" setting opcache.jit_max_recursive_returns to 0.

4 years agoFix func info for sodium_crypto_aead_xchacha20poly1305_ietf_decrypt
Nicolas Grekas [Mon, 25 May 2020 12:40:18 +0000 (14:40 +0200)]
Fix func info for sodium_crypto_aead_xchacha20poly1305_ietf_decrypt

4 years agoMerge branch 'PHP-7.4'
Nikita Popov [Thu, 28 May 2020 08:20:12 +0000 (10:20 +0200)]
Merge branch 'PHP-7.4'

* PHP-7.4:
  Use automatic port assignment in socket_import/export test

4 years agoUse automatic port assignment in socket_import/export test
Nikita Popov [Thu, 28 May 2020 08:18:01 +0000 (10:18 +0200)]
Use automatic port assignment in socket_import/export test

4 years agoAdd a side exit on enter to function if it may be called with different number of...
Dmitry Stogov [Wed, 27 May 2020 22:22:32 +0000 (01:22 +0300)]
Add a side exit on enter to function if it may be called with different number of arguments.

4 years agoKeep information about SEND_UNPACK/SEND_ARRAY in call_info
Dmitry Stogov [Wed, 27 May 2020 19:15:14 +0000 (22:15 +0300)]
Keep information about SEND_UNPACK/SEND_ARRAY in call_info

4 years agoFixed tracing JIT support for ZEND_RETURN_BY_REF in CALL VM
Dmitry Stogov [Wed, 27 May 2020 15:04:16 +0000 (18:04 +0300)]
Fixed tracing JIT support for ZEND_RETURN_BY_REF in CALL VM

4 years agoFixed tracing JIT for CALL VM
Dmitry Stogov [Wed, 27 May 2020 14:05:06 +0000 (17:05 +0300)]
Fixed tracing JIT for CALL VM

4 years agoRevert "Fixed tracing JIT for CALL VM"
Dmitry Stogov [Wed, 27 May 2020 14:04:31 +0000 (17:04 +0300)]
Revert "Fixed tracing JIT for CALL VM"

This reverts commit 7f3a296f847de74f20f2e1fc64ad6ea706e33a12.

4 years agoalways build json statically
Remi Collet [Wed, 27 May 2020 13:36:07 +0000 (15:36 +0200)]
always build json statically

4 years ago[RFC] Always enable JSON support in php 8.0
Tyson Andre [Wed, 29 Apr 2020 22:35:52 +0000 (18:35 -0400)]
[RFC] Always enable JSON support in php 8.0

Currently, it's possible to disable the json extension with
`./configure --disable-json` (for historical reasons that no longer apply).
However, JSON is widely used in many use cases - web sites, logging output,
and as a data format that can be used to share data with many applications
and programming languages,
so I'd personally find it useful if it was always enabled.

Examples of where this would be useful:

- For internal classes to be able to implement `JsonSerializable`
  which currently requires a hard dependency on the JSON extension.
- For PHP users to publish single-file scripts that use json_encode and
  json_decode and don't require polyfills or less readable var_export output.
  (polyfills are less efficient and may have issues with recursive data
  structures)
- So that php-src's own modules, tools and test cases can start using JSON
  if it's a good choice for encoding a value. (same for PECLs)

https://wiki.php.net/rfc/jsond mentions that in PHP 5,

> The current Json Parser in the json extension does not have a free license
> which is a problem for many Linux distros.
> This has been referenced at Bug #63520.
> That results in not packaging json extension in the many Linux distributions.

Starting in php 7.0 with the switch to jsond,
It looks like licensing is no longer an issue.

Changes:

- Remove all flags related to JSON such as `configure --disable-json`
- Require that JSON be compiled statically instead of as a shared library

Examples of uses of JSON in various distros
(backwards incompatible changes such as changing packaging are typically
reserved for major versions, and 8.0 is a major version)

- JSON is required by `php-cli` or `php` in ubuntu:
  https://packages.ubuntu.com/focal/php/
- The php-json package has to be installed separately
  from the PHP binary in Fedora repos.

Closes GH-5495

4 years agoFixed tracing JIT for CALL VM
Dmitry Stogov [Wed, 27 May 2020 12:59:29 +0000 (15:59 +0300)]
Fixed tracing JIT for CALL VM

4 years agoMark several phpdbg tests as xfail
Christoph M. Becker [Tue, 26 May 2020 22:25:45 +0000 (00:25 +0200)]
Mark several phpdbg tests as xfail

Apparently, breakpoints and watchpoints are practically disabled if
run with OPcache JIT under Windows, so we mark the affected tests as
xfail in that case for the time being.

4 years agoAdd support for * width and precision in printf()
Nikita Popov [Tue, 21 Apr 2020 14:54:22 +0000 (16:54 +0200)]
Add support for * width and precision in printf()

If * is used for width/precision in printf, then the width/precision
is provided by a printf argument instead of being part of the format
string. Semantics generally match those of printf in C.

This can be used to easily reproduce PHP's float printing behavior:

    // Locale-sensitive using precision ini setting.
    // Used prior to PHP 8.0.
    sprintf("%.*G", (int) ini_get('precision'), $float);

    // Locale-insensitive using precision ini setting.
    // Used since to PHP 8.0.
    sprintf("%.*H", (int) ini_get('precision'), $float);

    // Locale-insensitive using serialize_precision ini setting.
    // Used in serialize(), json_encode() etc.
    sprintf("%.*H", (int) ini_get('serialize_precision'), $float);

Closes GH-5432.

4 years agoMerge branch 'PHP-7.4'
Dmitry Stogov [Wed, 27 May 2020 08:27:34 +0000 (11:27 +0300)]
Merge branch 'PHP-7.4'

* PHP-7.4:
  Fixed possible usage of uninitialized value

4 years agoMerge branch 'PHP-7.3' into PHP-7.4
Dmitry Stogov [Wed, 27 May 2020 08:26:25 +0000 (11:26 +0300)]
Merge branch 'PHP-7.3' into PHP-7.4

* PHP-7.3:
  Fixed possible usage of uninitialized value

4 years agoFixed possible usage of uninitialized value
Dmitry Stogov [Wed, 27 May 2020 08:25:18 +0000 (11:25 +0300)]
Fixed possible usage of uninitialized value

4 years agoAdd support for %h and %H in printf()
Nikita Popov [Wed, 22 Apr 2020 13:02:21 +0000 (15:02 +0200)]
Add support for %h and %H in printf()

These are locale-independent variants of %g and %G.

Closes GH-5436.

4 years agoReturn empty array instead of null from enchant APIs
Nikita Popov [Wed, 13 May 2020 13:29:30 +0000 (15:29 +0200)]
Return empty array instead of null from enchant APIs

Closes GH-5566.

4 years agoFixed JIT for ext/opcache/tests/bool_not_cv.phpt with opcache.jit=1202
Dmitry Stogov [Wed, 27 May 2020 07:57:33 +0000 (10:57 +0300)]
Fixed JIT for ext/opcache/tests/bool_not_cv.phpt with opcache.jit=1202

4 years agoTweak style and grammar in proc_open.c
Alex Dowad [Tue, 26 May 2020 13:37:09 +0000 (15:37 +0200)]
Tweak style and grammar in proc_open.c

4 years agoAvoid compiler warnings in proc_open.c
Alex Dowad [Tue, 26 May 2020 13:34:52 +0000 (15:34 +0200)]
Avoid compiler warnings in proc_open.c

We are getting a lot of compiler warnings when building on Appveyor CI (Windows).
Fix some of them.

Closes GH-5629

4 years agoFixed JIT for ext/opcache/tests/jit/cmp_004.phpt with opcache.jit=1201
Dmitry Stogov [Wed, 27 May 2020 06:59:12 +0000 (09:59 +0300)]
Fixed JIT for ext/opcache/tests/jit/cmp_004.phpt with opcache.jit=1201

4 years agoSet proper jit_extension for inherited methods
Dmitry Stogov [Wed, 27 May 2020 06:58:03 +0000 (09:58 +0300)]
Set proper jit_extension for inherited methods

4 years agoLet's try to fix the JIT compiler warning
Máté Kocsis [Tue, 26 May 2020 18:56:29 +0000 (20:56 +0200)]
Let's try to fix the JIT compiler warning

4 years agoImprove type error messages when an object is given
Máté Kocsis [Mon, 25 May 2020 17:28:15 +0000 (19:28 +0200)]
Improve type error messages when an object is given

From now on, we always display the given object's type instead of just reporting "object".
Additionally, make the format of return type errors match the format of argument errors.

Closes GH-5625

4 years agoFix picky builds
Christoph M. Becker [Tue, 26 May 2020 16:37:29 +0000 (18:37 +0200)]
Fix picky builds

Due to `-Werror=maybe-uninitialized` a bogus warning may be thrown, so
we initialize the variable to work-around that.

4 years agoMerge branch 'PHP-7.4'
Christoph M. Becker [Tue, 26 May 2020 15:46:56 +0000 (17:46 +0200)]
Merge branch 'PHP-7.4'

* PHP-7.4:
  Enable phpdbg tests on AppVeyor
  Make phpdbg test portable
  Fix several mostly Windows related phpdbg bugs
  Fix #73926: phpdbg will not accept input on restart execution

4 years agoEnable phpdbg tests on AppVeyor
Christoph M. Becker [Mon, 25 May 2020 22:16:36 +0000 (00:16 +0200)]
Enable phpdbg tests on AppVeyor

4 years agoMake phpdbg test portable
Christoph M. Becker [Mon, 25 May 2020 22:13:54 +0000 (00:13 +0200)]
Make phpdbg test portable

4 years agoFix several mostly Windows related phpdbg bugs
Christoph M. Becker [Mon, 25 May 2020 17:12:24 +0000 (19:12 +0200)]
Fix several mostly Windows related phpdbg bugs

* Properly initialize PHPDBG_G(watch_tmp)

  Otherwise that may cause segfaults in ZTS builds.

* Deactivate potentially remaining watchpoints after REPL

  Otherwise the memory could still be protected, resulting in segfaults
  during shutdown.

* NULL zend_handlers_table after freeing

  As of commit 4130fe4[1], the `zend_handlers_table` is explicitly
  freed in the `zend_vm_dtor()`.  Since phpdbg (and maybe some other
  SAPIs) may restart the engine afterwards, we have to make sure that
  the table is also NULLed.

* Only set context option if there is a context

  In other words, we must not follow the null pointer.

* Cater to file handles without attached console

  File handles do not necessarily have an attached console (for
  instance, pipes do not), in which case `GetConsoleScreenBufferInfo()`
  fails.  In this case we set a default value (`40`) for lines like on
  other systems.

[1] <http://git.php.net/?p=php-src.git;a=commit;h=4130fe437a5db7ead1444d3748bd0fbad9829cb2>

4 years agoFix #73926: phpdbg will not accept input on restart execution
Christoph M. Becker [Tue, 19 May 2020 12:45:47 +0000 (14:45 +0200)]
Fix #73926: phpdbg will not accept input on restart execution

We are more liberal, and accept Windows line endings (CRLF) as well.

4 years agoMerge branch 'PHP-7.4'
Christoph M. Becker [Tue, 26 May 2020 15:21:29 +0000 (17:21 +0200)]
Merge branch 'PHP-7.4'

* PHP-7.4:
  Fix #79595: zend_init_fpu() alters FPU precision

4 years agoFix #79595: zend_init_fpu() alters FPU precision
Christoph M. Becker [Tue, 26 May 2020 06:57:31 +0000 (08:57 +0200)]
Fix #79595: zend_init_fpu() alters FPU precision

On startup, PHP deliberately changes the floating point control word to
enforce binary64 format for the calculations for best consistency
across platforms.  However, this is unnessary for x86_64 architectures,
because in this case SSE instructions are used by default, and there is
no good reason to pass `-mfpmath=i387` or such.

Therefore, we can skip the modification, which has the benefit that
system libraries are free to work in the mode of their liking.

4 years agoFixed JIT for integer overflow checks
Dmitry Stogov [Tue, 26 May 2020 14:59:15 +0000 (17:59 +0300)]
Fixed JIT for integer overflow checks

4 years agoFix variable type
Nikita Popov [Tue, 26 May 2020 13:58:00 +0000 (15:58 +0200)]
Fix variable type

This is no longer a boolean.

4 years agoAllow generators to have a real return type of `mixed` or `object`
Tyson Andre [Mon, 25 May 2020 20:38:08 +0000 (16:38 -0400)]
Allow generators to have a real return type of `mixed` or `object`

Fixes an edge case overlooked in
https://github.com/php/php-src/pull/5313

Generators are objects, so `object` should have also been allowed in addition to
`iterable` and `Traversable`

Closes GH-5626

4 years agoMerge branch 'PHP-7.4'
Derick Rethans [Tue, 26 May 2020 13:20:24 +0000 (14:20 +0100)]
Merge branch 'PHP-7.4'