1
0
mirror of https://github.com/php/php-src.git synced 2026-03-26 09:12:14 +01:00
Commit Graph

380 Commits

Author SHA1 Message Date
Nikita Popov
a1e2c8870e Merge branch 'PHP-7.4' 2019-07-22 17:26:01 +02:00
Nikita Popov
d59aac58b3 Report errors from stream read and write operations
The php_stream_read() and php_stream_write() functions now return
an ssize_t value, with negative results indicating failure. Functions
like fread() and fwrite() will return false in that case.

As a special case, EWOULDBLOCK and EAGAIN on non-blocking streams
should not be regarded as error conditions, and be reported as
successful zero-length reads/writes instead. The handling of EINTR
remains unclear and is internally inconsistent (e.g. some code-paths
will automatically retry on EINTR, while some won't).

I'm landing this now to make sure the stream wrapper ops API changes
make it into 7.4 -- however, if the user-facing changes turn out to
be problematic we have the option of clamping negative returns to
zero in php_stream_read() and php_stream_write() to restore the
old behavior in a relatively non-intrusive manner.
2019-07-22 17:17:28 +02:00
Christoph M. Becker
8e22d7c785 Merge branch 'PHP-7.4'
* PHP-7.4:
  Fix TsHashTable related race conditions
2019-07-08 10:32:39 +02:00
Christoph M. Becker
98b6330ab4 Fix TsHashTable related race conditions
Although TsHashTable and the according API are supposed to easily make
a HashTable thread-safe, they do not; for instance, there can be race
conditions between finding and updating entries.  We therefore avoid
the usage of TsHashTable in favor of a HashTable with our own mutex
management.

The patch has been provided by krakjoe@php.net; I only did some minor
fixes and tweaks.
2019-07-08 10:31:36 +02:00
Christoph M. Becker
2c49354ac2 Merge branch 'PHP-7.4'
* PHP-7.4:
  Fix memory leak in COM ctor
2019-06-29 14:51:40 +02:00
Christoph M. Becker
8357a696ab Fix memory leak in COM ctor
We have to free strings returned from php_com_olestring_to_string().
2019-06-29 14:51:13 +02:00
Nikita Popov
45a0656e95 Remove get() object handler
Now that set() is gone, there is little point in keeping get(), as
it is essentially just a different way of writing cast_object()
now.

Closes GH-4202.
2019-05-29 17:15:19 +02:00
Nikita Popov
31a516cf96 Remove set() object handler 2019-05-29 10:00:06 +02:00
Dmitry Stogov
b2cdde0826 Merge branch 'PHP-7.4'
* PHP-7.4:
  Replace ZVAL_COPY() and ZVAL_COPY_VALUE() for IS_OBJECT by cheaper macros
2019-05-28 20:19:15 +03:00
Dmitry Stogov
83804519df Replace ZVAL_COPY() and ZVAL_COPY_VALUE() for IS_OBJECT by cheaper macros 2019-05-28 20:10:02 +03:00
Nikita Popov
60b724cbda Merge branch 'PHP-7.4' 2019-04-15 14:34:32 +02:00
Nikita Popov
0c8a2d8d2a Fix saproxy_property_write signature 2019-04-15 14:33:47 +02:00
Christoph M. Becker
ef25de3e4e Merge branch 'PHP-7.4'
* PHP-7.4:
  Fix #77578: Crash when php unload
2019-03-18 19:27:38 +01:00
Christoph M. Becker
fb51f2c7ba Merge branch 'PHP-7.3' into PHP-7.4
* PHP-7.3:
  Fix #77578: Crash when php unload
2019-03-18 19:26:08 +01:00
Christoph M. Becker
a529826d95 Merge branch 'PHP-7.2' into PHP-7.3
* PHP-7.2:
  Fix #77578: Crash when php unload
2019-03-18 19:24:56 +01:00
Christoph M. Becker
41bc51ce2d Fix #77578: Crash when php unload
Since we're putting `ITypeLib *`s into the hash, we're getting
`ITypeLib *`s back, not `ITypeLib **`s.
2019-03-18 19:21:38 +01:00
Peter Kokot
6426420f61 Merge branch 'PHP-7.4'
* PHP-7.4:
  Replace dirname(__FILE__) by __DIR__ in tests
2019-03-15 23:36:47 +01:00
Fabien Villepinte
26dfce7f36 Replace dirname(__FILE__) by __DIR__ in tests 2019-03-15 22:55:30 +01:00
Joe Watkins
99230784f5 Merge branch 'PHP-7.4'
* PHP-7.4:
  zend_weakrefs
2019-03-12 00:37:28 +01:00
Joe Watkins
6529d7acd9 zend_weakrefs 2019-03-12 00:35:35 +01:00
Nikita Popov
bbdc5d1da6 Merge branch 'PHP-7.4' 2019-03-11 10:01:16 +01:00
c9s
9f6f6fe219 Remove function_table var from the caller
function_table var is not used in call_user_function macro anymore
hence replace the usage with NULL
2019-03-11 10:00:39 +01:00
Peter Kokot
2968a1d7f2 Merge branch 'PHP-7.4'
* PHP-7.4:
  Remove legacy AC_CHECK_TYPE calls for uint and ulong
2019-03-06 22:50:46 +01:00
Peter Kokot
bebcdcc745 Remove legacy AC_CHECK_TYPE calls for uint and ulong
The AC_CHECK_TYPE was refactored in more recent versions of Autoconf
and the call with two arguments is obsolete and not recommended anymore.

This patch also refactors some leftovers of using ulong and uint which
are not standard nor common usages of types in C.

The ulong can be used as zend_ulong and uint usage is actually
`unsigned int`.

The usage of HAVE_ULONG removed since it is not used in current code
base.

Legacy edgecase for some legacy HPUX systems removed:
- sys/stream.h header is not checked and the HAVE_SYS_STREAM_H is
  not defined with current build system.

- flags are unsigned int
- max_allowed_packet changed to unsigned int
2019-03-06 22:49:16 +01:00
Christoph M. Becker
60eee27757 Merge branch 'PHP-7.4'
* PHP-7.4:
  Avoid potentially superfluous string reallocation
2019-02-22 10:35:46 +01:00
Christoph M. Becker
427ebce629 Avoid potentially superfluous string reallocation
If we're not going to register the constant, it makes no sense to
allocate a `zend_string` and free it shortly after.
2019-02-22 10:35:19 +01:00
Christoph M. Becker
f04cf7a587 Remove ability to import case-insensitive constants from typelibs
According to commit 23a5be3[1], we remove the ability to import case-
insensitive constants, but do not remove the now superfluous parameter
and ini setting.

[1] <http://git.php.net/?p=php-src.git;a=commit;h=23a5be3696f4d92e1b18fd59f3ac63c6a15ea12a>
2019-02-19 16:54:52 +01:00
Christoph M. Becker
93886f44a8 Merge branch 'PHP-7.4'
* PHP-7.4:
  Fix #77626: Persistence confusion in php_com_import_typelib()
2019-02-15 18:57:59 +01:00
Christoph M. Becker
f1588d841c Merge branch 'PHP-7.3' into PHP-7.4
* PHP-7.3:
  Fix #77626: Persistence confusion in php_com_import_typelib()
2019-02-15 18:57:17 +01:00
Christoph M. Becker
767fa3dc02 Fix #77626: Persistence confusion in php_com_import_typelib()
We apply only the most minimal fix here, and will cater to the
unnecessary re-allocation for PHP-7.4.

We don't need to add a regression test, since bug39606.phpt and
bug77621.phpt already show the misbehavior.
2019-02-15 18:56:24 +01:00
Christoph M. Becker
5740336dea Merge branch 'PHP-7.4'
* PHP-7.4:
  Deprecate marking typelibs to load constants case-insensitively
2019-02-15 16:25:15 +01:00
Christoph M. Becker
0520eb8772 Deprecate marking typelibs to load constants case-insensitively
This is an amendment to commit fae2246[1] which missed this opportunity
to still introduce case-insensitive constants without a deprecation
warning.

[1] <http://git.php.net/?p=php-src.git;a=commit;h=fae22461f95dfe8153fb74a53b9c5daeec47387f>
2019-02-15 16:24:54 +01:00
Christoph M. Becker
27d9800b1d Merge branch 'PHP-7.4'
* PHP-7.4:
  Deprecate case-insensitive constants via typelib import
2019-02-15 13:08:31 +01:00
Christoph M. Becker
fae22461f9 Deprecate case-insensitive constants via typelib import
As of PHP 7.3.0, case-insensitive constants are deprecated.  We catch
up on this with regard to ext/com_dotnet, which allows to import
constants from typelibs, by triggering a deprecation notice whenever
`com_load_typelib()` is called with `$case_sensitive` being `false`,
and whenever `com.autoregister_casesensitive` is set to `false`,
regardless of whether there are actually constants in the typelib which
would be imported.
2019-02-15 13:07:56 +01:00
Christoph M. Becker
920438d624 Merge branch 'PHP-7.4'
* PHP-7.4:
  Fix #77621: Already defined constants are not properly reported
2019-02-15 00:39:40 +01:00
Christoph M. Becker
c62e106610 Merge branch 'PHP-7.3' into PHP-7.4
* PHP-7.3:
  Fix #77621: Already defined constants are not properly reported
2019-02-15 00:39:10 +01:00
Christoph M. Becker
8946ad3000 Merge branch 'PHP-7.2' into PHP-7.3
* PHP-7.2:
  Fix #77621: Already defined constants are not properly reported
2019-02-15 00:37:39 +01:00
Christoph M. Becker
de738496c2 Fix #77621: Already defined constants are not properly reported
We must not check uninitialized values (i.e. `c.value`), and we have to
use proper types for printf-style formats (i.e. `char *` instead of
`zend_string *`).
2019-02-15 00:35:21 +01:00
Dmitry Stogov
f45e0ce928 Remove ZEND_OVERLOADED_FUNCTION and corresponding call_method object handler 2019-02-07 21:05:46 +03:00
Christoph M. Becker
a1608b40bf Fix type confusion 2019-02-04 14:40:35 +01:00
Dmitry Stogov
db00790234 ext/com_dotnet support for new object handlers API 2019-02-04 13:20:25 +03:00
Dmitry Stogov
91ef4124e5 Refactor zend_object_handlers API to pass zend_object* and zend_string* insted of zval(s). 2019-02-04 13:20:25 +03:00
Peter Kokot
623911f993 Merge branch 'PHP-7.4'
* PHP-7.4:
  Remove local variables
2019-02-03 21:23:18 +01:00
Peter Kokot
92ac598aab Remove local variables
This patch removes the so called local variables defined per
file basis for certain editors to properly show tab width, and
similar settings. These are mainly used by Vim and Emacs editors
yet with recent changes the once working definitions don't work
anymore in Vim without custom plugins or additional configuration.
Neither are these settings synced across the PHP code base.

A simpler and better approach is EditorConfig and fixing code
using some code style fixing tools in the future instead.

This patch also removes the so called modelines for Vim. Modelines
allow Vim editor specifically to set some editor configuration such as
syntax highlighting, indentation style and tab width to be set in the
first line or the last 5 lines per file basis. Since the php test
files have syntax highlighting already set in most editors properly and
EditorConfig takes care of the indentation settings, this patch removes
these as well for the Vim 6.0 and newer versions.

With the removal of local variables for certain editors such as
Emacs and Vim, the footer is also probably not needed anymore when
creating extensions using ext_skel.php script.

Additionally, Vim modelines for setting php syntax and some editor
settings has been removed from some *.phpt files.  All these are
mostly not relevant for phpt files neither work properly in the
middle of the file.
2019-02-03 21:03:00 +01:00
Zeev Suraski
0cf7de1c70 Remove yearly range from copyright notice 2019-01-30 11:03:12 +02:00
Zeev Suraski
38c337f22e Remove year range from copyright notice 2019-01-30 11:00:23 +02:00
Nikita Popov
6c73b50cf6 Remove static calls to non-static methods 2019-01-30 09:19:02 +01:00
Nikita Popov
e219ec144e Implement typed properties
RFC: https://wiki.php.net/rfc/typed_properties_v2

This is a squash of PR #3734, which is a squash of PR #3313.

Co-authored-by: Bob Weinand <bobwei9@hotmail.com>
Co-authored-by: Joe Watkins <krakjoe@php.net>
Co-authored-by: Dmitry Stogov <dmitry@zend.com>
2019-01-11 15:49:06 +01:00
Christoph M. Becker
7cad44be11 Merge branch 'PHP-7.3'
* PHP-7.3:
  Use zend_empty_array
2018-11-26 15:35:30 +01:00
Christoph M. Becker
07d6dfbfe4 Use zend_empty_array
No need to define our own `com_dotnet_object_properties` as empty hash,
since we can use `zend_empty_array` instead as of PHP 7.3.0.

Cf. <https://github.com/php/php-src/pull/3672#issuecomment-440467704>.
2018-11-26 15:33:58 +01:00