1
0
mirror of https://github.com/php/php-src.git synced 2026-04-28 02:33:17 +02:00
Commit Graph

118596 Commits

Author SHA1 Message Date
Alex Dowad f152fece02 Test setting SplDoublyLinkedList iterator mode to IT_MODE_LIFO 2020-05-12 17:24:35 +02:00
Alex Dowad d4d0852c23 SplDoublyLinkedList uses iteration flags in iterator struct
The 'flags' field in spl_dllist_it was formerly unused. This means that if one started to
iterate over an SplDoublyLinkedList using 'foreach', and then *changed* the iteration mode
halfway, the 'foreach' loop would start iterating in the opposite direction. Probably this
was not what was intended.

Therefore, use the 'flags' field in spl_dllist_it for iteration via 'foreach'. For explicit
iteration using methods like '::next()' and '::current()', continue to use the flags in
the SplDoublyLinkedList object itself.
2020-05-12 17:22:31 +02:00
Alex Dowad 9999e7faa3 Remove useless prototype for spl_dllist_get_iterator 2020-05-12 17:21:21 +02:00
Nikita Popov f83a23e59d Display errors in shutdown function timeout test 2020-05-12 17:14:16 +02:00
Alex Dowad f0960879e4 zend_timeout is not a signal handler function
The 'int dummy' parameter to this function makes it appear that it was intended as a
signal handler, but it is not being used as such. So remove the redundant parameter.
2020-05-12 17:13:46 +02:00
Nikita Popov 53f5cfd99e Drop multi_convert_* APIs
These are no longer used internally, and I'd rather they weren't
used externally either.
2020-05-12 17:10:06 +02:00
Rod Elias 682e2f6c20 Trim trailing whitespaces and fix code style
Closes GH-5554.
2020-05-12 17:00:11 +02:00
Gerard Roche 16f23cd159 run-tests: remove use of FILE_BINARY constant
The FILE_BINARY (and FILE_TEXT) constants are not really valid or useful
constants. It looks like they were added in 5.2.7 and have "no effect,
and are only available for forward compatibility."

See: https://www.php.net/manual/en/filesystem.constants.php

The default value of the file_put_contents() flags parameter is 0 and
FILE_BINARY is set to 0, so removing it doesn't change functionality.

P.S. Maybe those constants should be deprecated or removed in 8.0.

Closes GH-5556.
2020-05-12 16:59:25 +02:00
Nikita Popov f07fbfb8a9 Remove zend_qsort
This has been superseded by zend_sort and is no longer used.
2020-05-12 16:57:53 +02:00
Christoph M. Becker 125682f13a Merge branch 'PHP-7.4'
* PHP-7.4:
  Skip test on big-endian architectures
2020-05-12 13:33:06 +02:00
Christoph M. Becker 8623a85cb9 Skip test on big-endian architectures
Due to the memory layout on BE architectures, the address would be
`0x2a00000000` instead of `0x2a` on little-endian architectures.
2020-05-12 13:31:53 +02:00
Dmitry Stogov 650ab370c7 Avoid useless manual instruction encoding 2020-05-12 14:24:13 +03:00
Dmitry Stogov 60090adc6a Move EG(vm_interrupt) checks at the end of the trace loops 2020-05-12 13:35:38 +03:00
Christoph M. Becker 9dcf494e36 Merge branch 'PHP-7.4'
* PHP-7.4:
  Fix #79489: .user.ini does not inherit
2020-05-12 11:49:04 +02:00
Christoph M. Becker 4b0d5e0faf Merge branch 'PHP-7.3' into PHP-7.4
* PHP-7.3:
  Fix #79489: .user.ini does not inherit
2020-05-12 11:48:36 +02:00
Christoph M. Becker bdba0cd3d2 Fix #79489: .user.ini does not inherit
On Windows, PATH_TRANSLATED may contain backslashes as well as slashes,
so we must not only check for `DEFAULT_SLASH`.
2020-05-12 11:47:47 +02:00
Christoph M. Becker cdd0a90992 Merge branch 'PHP-7.4'
* PHP-7.4:
  [ci skip] Update NEWS
2020-05-12 11:19:10 +02:00
Christoph M. Becker 6cb3d5e2c2 Merge branch 'PHP-7.3' into PHP-7.4
* PHP-7.3:
  [ci skip] Update NEWS
2020-05-12 11:17:33 +02:00
Christoph M. Becker 85e241c35c [ci skip] Update NEWS 2020-05-12 11:16:55 +02:00
Remi Collet 107ef83dd6 Merge branch 'PHP-7.4'
* PHP-7.4:
  bump version to 7.2.32-dev
  Update NEWS
2020-05-12 09:19:51 +02:00
Remi Collet 43f6f263aa Merge branch 'PHP-7.3' into PHP-7.4
* PHP-7.3:
  bump version to 7.2.32-dev
  Update NEWS
2020-05-12 09:19:36 +02:00
Remi Collet 8f8f32cfaf Merge branch 'PHP-7.2' into PHP-7.3
* PHP-7.2:
  bump version to 7.2.32-dev
  Update NEWS
2020-05-12 09:19:11 +02:00
Remi Collet 4cf8be71df bump version to 7.2.32-dev 2020-05-12 09:16:01 +02:00
Stanislav Malyshev b4afd21428 Update NEWS 2020-05-11 14:28:51 -07:00
Stanislav Malyshev c317c420b0 Merge branch 'PHP-7.4'
* PHP-7.4:
  Fix #78876: Long variables cause OOM and temp files are not cleaned
  Fix #78875: Long filenames cause OOM and temp files are not cleaned
  Update NEWS for 7.2.31
  Update CREDITS for PHP 7.2.30
  Update NEWS for PHP 7.2.30
2020-05-11 14:21:25 -07:00
Stanislav Malyshev 355e36e4f6 Merge branch 'PHP-7.3' into PHP-7.4
* PHP-7.3:
  Fix #78876: Long variables cause OOM and temp files are not cleaned
  Fix #78875: Long filenames cause OOM and temp files are not cleaned
  Update NEWS for 7.2.31
  Update CREDITS for PHP 7.2.30
  Update NEWS for PHP 7.2.30
2020-05-11 14:20:47 -07:00
Stanislav Malyshev f43041250f Merge branch 'PHP-7.2' into PHP-7.3
* PHP-7.2:
  Fix #78876: Long variables cause OOM and temp files are not cleaned
  Fix #78875: Long filenames cause OOM and temp files are not cleaned
  Update NEWS for 7.2.31
  Update CREDITS for PHP 7.2.30
  Update NEWS for PHP 7.2.30
2020-05-11 14:20:41 -07:00
Christoph M. Becker 3c8582ca4b Fix #78876: Long variables cause OOM and temp files are not cleaned
We use the proper type for size calculations, which is `size_t`.
2020-05-11 13:48:40 -07:00
Christoph M. Becker 1c9bd513ac Fix #78875: Long filenames cause OOM and temp files are not cleaned
We must not cast `size_t` to `int` (unless the `size_t` value is
guaranteed to be less than or equal to `INT_MAX`).  In this case we can
declare `array_len` as `size_t` in the first place.
2020-05-11 13:47:38 -07:00
George Peter Banyard 7dd332f110 Refactor mb_substitute_character()
Using the new Fast ZPP API for string|int|null

This also fixes Bug #79448 which was too disruptive to fix in PHP 7.x
2020-05-11 17:30:01 +02:00
Nikita Popov 28af364d2a Deprecate old ReflectionParameter type declaration APIs
This deprecates:

    ReflectionParameter::isArray()
    ReflectionParameter::isCallable()
    ReflectionParameter::getClass()

These APIs have been superseded by ReflectionParameter::getType()
since PHP 7.0. Types introduced since that time are not available
through the old APIs, and their behavior is getting increasingly
confusing. This is how they interact with PHP 8 union types:

 * isArray() will return true if the type is array or ?array,
   but not any other union type
 * Same for isCallable().
 * getClass() will return a class for T|int etc, as long as the
   union only contains a single type. T1|T2 will return null.

This behavior is not particularly reasonable or useful, and will
get more confusing as new type system extensions are added.

Closes GH-5209.
2020-05-11 17:01:40 +02:00
George Peter Banyard 4865592525 Remove old ARG_COUNT() macro
Use ZEND_NUM_ARGS() instead.

Clsoes GH-5551
2020-05-11 16:52:04 +02:00
Christoph M. Becker 43eca196e7 Merge branch 'PHP-7.4'
* PHP-7.4:
  Fix #79571: FFI: var_dumping unions may segfault
2020-05-11 16:25:30 +02:00
Christoph M. Becker d5300873c5 Fix #79571: FFI: var_dumping unions may segfault
We must not attempt to access arbitrary union members when retrieving
debug info, because that may not be valid.  Therefore we do no longer
dereference pointer types inside of unions, but report their address as
string in `%p` format instead.
2020-05-11 16:24:46 +02:00
Christoph M. Becker 6549891602 Update AppVeyor for enchant-2
Cf. <https://github.com/winlibs/enchant/commit/df5a4586e09d67bf2c208c7dfd0517657d06910e>
2020-05-11 16:18:03 +02:00
Nikita Popov 5d93eab620 Don't reset SIGG(running) when calling zend_on_timeout
This is only an internal callback nowadays and does not actually
run any user code. It must be async signal safe.
2020-05-11 15:05:01 +02:00
Nikita Popov 091d53c131 Use standard key behavior in array_column()
array_column() reimplements array key handling in a way that does
not match standard array key behavior in PHP. Avoid this by making
use of the standard API.

Of course, there is a minor backwards compatibilty break here,
e.g. people could be relying on objects getting cast to string
instead of throwing.

Closes GH-5487.
2020-05-11 14:16:24 +02:00
Nikita Popov b111674383 Only use ifunc resolvers if __builtin_cpu_supports+init available
If either of them is not available, the use of zend_cpu_supports()
inside ifunc resolvers may not be safe.
2020-05-11 12:43:38 +02:00
Nikita Popov 5dc9418a97 Reapply "Remove configure checks for supported instruction sets"
I reverted this previously for 7.4 because of bug #78769. Relanding
it now for master, because I still believe that this change is
right, and if it causes complications, those indicate a bug elsewhere.

---

These were checking whether the instruction set is supported by
the host CPU, however they were only used to condition on whether
this instruction set is targeted at all. It would still use dynamic
dispatch (e.g. based on ifunc resolvers) to select the actual
implementation. Whether the target is guaranteed to support the
instruction set without dispatch is determined based on pre-defined
macros like __SSE2__.

This removes the configure-time builtin cpu checks to remove
confusion. Additionally this allows targeting an architecture that
is newer than the host architecture.
2020-05-11 12:22:28 +02:00
Nikita Popov a0abc26ef7 Add get_resource_id() function
Behavior is same as for (int) $resource, just under a clearer
name. Also type-safe, in that the parameter actually needs to
be a resource.

Closes GH-5427.
2020-05-11 12:04:16 +02:00
Xinchen Hui d5d99ce8d1 Merge branch 'sse2_urlencode' of https://github.com/laruence/php-src
* 'sse2_urlencode' of https://github.com/laruence/php-src:
  drop use of extract_epi16
  Use SSE2 instructions do url_encode
2020-05-11 18:02:48 +08:00
Christoph M. Becker 74f3bfc6eb Use supported printf format on Win64
Commit aaa1f90[1] dropped support for the custom `I` specifier, so we
must no longer use it for `ZEND_ADDR_FMT`; otherwise there are
segfaults when printing memory leaks, and maybe elsewhere.

[1] <http://git.php.net/?p=php-src.git;a=commit;h=aaa1f90e3f90c24098fa55a7b868fdca0b89ee25>
2020-05-11 10:49:44 +02:00
Nikita Popov 89b4a46d56 Merge branch 'PHP-7.4'
* PHP-7.4:
  Fix default sendmail path when not found during build
2020-05-11 10:46:07 +02:00
Nikita Popov d050d74477 Merge branch 'PHP-7.3' into PHP-7.4
* PHP-7.3:
  Fix default sendmail path when not found during build
2020-05-11 10:46:00 +02:00
Indrek Ardel 517431892b Fix default sendmail path when not found during build
Closes GH-5548.
2020-05-11 10:45:23 +02:00
Nikita Popov 32b3235287 Merge branch 'PHP-7.4'
* PHP-7.4:
  Don't check directory atime in lstat_stat_variation10.phpt test
2020-05-11 10:23:06 +02:00
Alex Dowad 1e3196a159 Don't check directory atime in lstat_stat_variation10.phpt test
This is a funny one. I discovered that lstat_stat_variation10.phpt was failing every
now and again when the PHP test suite was run on my dev PC. The output from the failing
test showed that the atime (access time) of the directory created in the test was changing
between these lines:

    $old_stat = stat($dirname);
    clearstatcache();
    sleep(1);
    var_dump( is_dir($dirname) );
    $new_stat = stat($dirname);

Could is_dir() be accessing the directory and changing the atime? strace showed that is_dir
was only issuing a single stat() syscall. Could stat() change the atime? No, no, that would
just be perverse. Nobody would be stupid enough to implement the kernel in that way.

Checked the kernel source, found that the function called when atime needs to be updated
appears to be touch_atime(). Broke out the BCC kernel tracing tools and ran this one
while running the flaky test case in a loop:

    sudo trace -I<kernel src dir>/include/linux/path.h -I<same>/include/linux/dcache.h 'touch_atime(struct path *path) "%s", path->dentry->d_name.name'

Inspecting the results showed that something called "git_thread" was occcasionally updating
the atime on the directory in question!! What on earth...???

The PID shown by trace revealed that this was a background thread for Sublime Text 3.
Sublime now has git integration and shows when there are untracked or modified files. It
seems that it uses a background thread to regularly scan the project directory and look
for new and modified files. This was causing the atime to change.

Even though other developers may not be running ST3, there are any number of reasons why
a background process might recurse through various directories and could cause the atime
to change unexpectedly. Therefore, update the test case so it doesn't fail in such cases.

Closes GH-5553.
2020-05-11 10:22:42 +02:00
Nikita Popov 1809714603 Fix use-after-free in sysvsem 2020-05-11 10:21:31 +02:00
Rod Elias 7c2b143778 Add pkg-config to the build list
Closes GH-5550.

[ci skip]
2020-05-11 10:19:18 +02:00
Nikita Popov b452d5923d Fix bug68996.phpt test
The function name gets printed here now, with illegal chars
substituted in the arg. This slipped through previously, because
the test only runs under USE_ZEND_ALLOC=0. We remove that check
as well, because the test behaves the same regardless of which
allocator is used, even if the original bug only reproduces under
USE_ZEND_ALLOC=0.
2020-05-09 11:53:39 +02:00