1
0
mirror of https://github.com/php/php-src.git synced 2026-03-24 00:02:20 +01:00
Commit Graph

145440 Commits

Author SHA1 Message Date
ndossche
614b22ab46 Add array size maximum to array_diff()
This silences some reports about the equivalence to array_merge()'s
issue. However, this is different as no packed fill is used in this
code, so it doesn't have the same bug that array_merge() had.

Closes GH-21449.
2026-03-21 10:20:11 +01:00
Máté Kocsis
30b2d77cd3 Merge branch 'PHP-8.5'
* PHP-8.5:
  Fix replacement of class signatures when a packagesynopsis element is present
2026-03-20 23:30:35 +01:00
Máté Kocsis
6932260386 Fix replacement of class signatures when a packagesynopsis element is present
So far, the gen_stub.php --replace-classsynopses subcommand didn't take the packagesynopsis element into account, causing some bugs: the wrong element was tried to be replaced (classynopsis instead of packagesynopsis) with the wrong content (the classname without the namespace: e.g. \Exception instead of \FFI\Exception).
2026-03-20 23:30:01 +01:00
Daniel Scherzer
36e1469fe1 gen_stub: use first class callables where possible 2026-03-20 14:44:28 -07:00
Daniel Scherzer
362f5fdb09 gen_stub: use match rather than switch when possible 2026-03-20 14:44:28 -07:00
Daniel Scherzer
ef5771dce2 gen_stub: use real readonly modifier 2026-03-20 14:44:27 -07:00
Daniel Scherzer
b83dd1055b gen_stub: use real mixed type 2026-03-20 14:44:10 -07:00
Arnaud Le Blanc
2e20074310 Merge branch 'PHP-8.5'
* PHP-8.5:
  Fix GH-20875: Propagate IN_GET guard in get_property_ptr_ptr for lazy proxies
2026-03-20 15:45:55 +01:00
Arnaud Le Blanc
5485f8ee40 Merge branch 'PHP-8.4' into PHP-8.5
* PHP-8.4:
  Fix GH-20875: Propagate IN_GET guard in get_property_ptr_ptr for lazy proxies
2026-03-20 15:45:42 +01:00
Ilia Alshanetsky
9ec303edde Fix GH-20875: Propagate IN_GET guard in get_property_ptr_ptr for lazy proxies
zend_std_get_property_ptr_ptr() was the only property handler that did
not propagate the IN_GET guard to the underlying object when forwarding
from a lazy proxy after initialization. This caused __get to be called
on the underlying object when it shouldn't be, leading to assertion
failures.

The same guard-copying pattern already existed in read_property,
write_property, unset_property, and has_property since commit
26f5009e91 (GH-18039).

Also fixes GH-20873 and GH-20854.

Closes GH-20875
2026-03-20 15:44:21 +01:00
Ilija Tovilo
e39b6b9697 Merge branch 'PHP-8.5'
* PHP-8.5:
  Use default branch for symfony/laravel when possible
  Fix Laravel build for PHP 8.2
2026-03-20 14:50:13 +01:00
Ilija Tovilo
f134227e5d Merge branch 'PHP-8.4' into PHP-8.5
* PHP-8.4:
  Use default branch for symfony/laravel when possible
  Fix Laravel build for PHP 8.2
2026-03-20 14:50:08 +01:00
Ilija Tovilo
69b455c89e Merge branch 'PHP-8.3' into PHP-8.4
* PHP-8.3:
  Use default branch for symfony/laravel when possible
  Fix Laravel build for PHP 8.2
2026-03-20 14:50:02 +01:00
Ilija Tovilo
d1c39a5bd9 Merge branch 'PHP-8.2' into PHP-8.3
* PHP-8.2:
  Use default branch for symfony/laravel when possible
  Fix Laravel build for PHP 8.2
2026-03-20 14:49:54 +01:00
Ilija Tovilo
272cf1fb2d Use default branch for symfony/laravel when possible
This way we don't have to keep bumping when new branches release, we just need
to pin to old versions when incompatibilities pop up.
2026-03-20 13:32:42 +01:00
Ilija Tovilo
183d2a617f Fix Laravel build for PHP 8.2
Laravel 13.x dropped support for PHP 8.2. Fall back to 12.x for 8.2.

Closes GH-21473
2026-03-20 13:14:43 +01:00
Gina Peter Banyard
38cbbee4aa Zend: add const qualifiers to the majority of compare functions (#21304)
This sadly does not include zend_compare() and functions relying on it because the default compare object hook (zend_std_compare_objects()) relies on zend_compare(), and adds recursion protections to OP1.
Thus making it seems difficult or even impossible for zend_compare to take const parameters.
2026-03-19 20:36:19 +00:00
Ilija Tovilo
8c42cf473e Merge branch 'PHP-8.5'
* PHP-8.5:
  Fix expected output for bug52820.phpt
2026-03-19 13:19:07 +01:00
Ilija Tovilo
f7753608cc Merge branch 'PHP-8.4' into PHP-8.5
* PHP-8.4:
  Fix expected output for bug52820.phpt
2026-03-19 13:19:01 +01:00
Ilija Tovilo
b97dd3318d Merge branch 'PHP-8.3' into PHP-8.4
* PHP-8.3:
  Fix expected output for bug52820.phpt
2026-03-19 13:18:54 +01:00
Ilija Tovilo
551809576b Merge branch 'PHP-8.2' into PHP-8.3
* PHP-8.2:
  Fix expected output for bug52820.phpt
2026-03-19 13:18:36 +01:00
Ilija Tovilo
b8b5fb074d Fix expected output for bug52820.phpt
Newer versions of curl seem to omit the "Closing connection ..." message. Make
the entire line optional.
2026-03-19 13:15:57 +01:00
Giovanni Giacobbi
103e35df7d ext/session: code refactoring - improve readability and consistency 2026-03-19 10:48:05 +00:00
Giovanni Giacobbi
d63fb997e2 ext/session: code cleanup - use single empty line except for sections 2026-03-19 10:48:05 +00:00
Giovanni Giacobbi
adba504ea8 ext/session: code cleanup - space after control flow keywords 2026-03-19 10:48:05 +00:00
Giovanni Giacobbi
3b20ccda19 ext/session: code cleanup - don't use tabs for alignments 2026-03-19 10:48:05 +00:00
Giovanni Giacobbi
a6802737b3 ext/session: code cleanup - use consistent pointer declarations 2026-03-19 10:48:05 +00:00
Giovanni Giacobbi
7b16f81651 ext/session: code cleanup - use tab for indent 2026-03-19 10:48:05 +00:00
Dmitry Stogov
db37779940 Merge branch 'PHP-8.5'
* PHP-8.5:
  Fix GH-21411: opcache_compile_file() fails to early-bind classes without parents (#21412)
2026-03-19 11:13:41 +03:00
Dmitry Stogov
aa9964eebb Merge branch 'PHP-8.4' into PHP-8.5
* PHP-8.4:
  Fix GH-21411: opcache_compile_file() fails to early-bind classes without parents (#21412)
2026-03-19 11:13:30 +03:00
Rasmus Lerdorf
1a79ea47c5 Fix GH-21411: opcache_compile_file() fails to early-bind classes without parents (#21412) 2026-03-19 11:12:45 +03:00
Tim Düsterhus
ab043eefa4 [skip ci] Update versioned binary name in bug_report.yml template
Use `php8.5` instead of `php8.3`, matching the example output.

Following 769258f561.
2026-03-18 21:47:48 +01:00
Tim Düsterhus
769258f561 [skip ci] Update php -v placeholder in bug_report.yml template
PHP 8.3 is out of active support. Show a supported version in the example.
2026-03-18 21:46:12 +01:00
Arshid
9b022c4c5c ext/standard: replace RETVAL_EMPTY_ARRAY() + return with RETURN_EMPTY_ARRAY() (#21464) 2026-03-18 05:30:03 +00:00
ndossche
e6db18b74c Merge branch 'PHP-8.5'
* PHP-8.5:
  [ci skip] Update JIT news
2026-03-17 08:53:46 +01:00
ndossche
cefdfc9f5c Merge branch 'PHP-8.4' into PHP-8.5
* PHP-8.4:
  [ci skip] Update JIT news
2026-03-17 08:53:41 +01:00
ndossche
ae863ea4f8 [ci skip] Update JIT news
Closes GH-21395.
2026-03-17 08:53:10 +01:00
ndossche
a16ace8ee7 Merge branch 'PHP-8.5'
* PHP-8.5:
  Fix GH-21454: Missing write lock validation in SplHeap
2026-03-17 08:47:51 +01:00
ndossche
c9a6743b59 Merge branch 'PHP-8.4' into PHP-8.5
* PHP-8.4:
  Fix GH-21454: Missing write lock validation in SplHeap
2026-03-17 08:47:46 +01:00
ndossche
8796d75365 Fix GH-21454: Missing write lock validation in SplHeap
Closes GH-21448.
2026-03-17 08:47:20 +01:00
Dmitry Stogov
8cf917990c Merge branch 'PHP-8.5'
* PHP-8.5:
  Update IR (#21462)
2026-03-16 22:55:42 +03:00
Dmitry Stogov
0b2d8136e3 Merge branch 'PHP-8.4' into PHP-8.5
* PHP-8.4:
  Update IR (#21462)
2026-03-16 22:55:26 +03:00
Dmitry Stogov
a5637221ee Update IR (#21462)
IR commit: 7fed7999743ba6a5ffc5535e786725d5577f6f34
2026-03-16 22:55:03 +03:00
Dmitry Stogov
c43880587b Update IR (#21462)
IR commit: 7fed7999743ba6a5ffc5535e786725d5577f6f34
2026-03-16 22:52:40 +03:00
Dmitry Stogov
0bd3a6b7f2 Merge branch 'PHP-8.5'
* PHP-8.5:
  Fix support for TAILCALL VM
  Fix GH-21267: JIT infinite loop on FETCH_OBJ_R with IS_UNDEF property (#21368)
2026-03-16 21:58:32 +03:00
Dmitry Stogov
00ff93d660 Fix support for TAILCALL VM 2026-03-16 21:57:40 +03:00
Dmitry Stogov
81504d3db7 Merge branch 'PHP-8.4' into PHP-8.5
* PHP-8.4:
  Fix GH-21267: JIT infinite loop on FETCH_OBJ_R with IS_UNDEF property (#21368)
2026-03-16 21:32:27 +03:00
Ilia Alshanetsky
e1a3a4c9a4 Fix GH-21267: JIT infinite loop on FETCH_OBJ_R with IS_UNDEF property (#21368)
When the JIT defers the IS_UNDEF check for FETCH_OBJ_R to the result
type guard, the deoptimization escape path dispatches to opline->handler
via the trace_escape stub. If opline->handler has been overwritten with
JIT code (e.g. a function entry trace), this creates an infinite loop.

Fix by dispatching to the original VM handler (orig_handler from the
trace extension) instead of going through the trace_escape stub. This
avoids the extra IS_UNDEF guard on every property read while correctly
handling the rare IS_UNDEF case during deoptimization.

Also set current_op_array in zend_jit_trace_exit_to_vm so that the
blacklisted exit deoptimizer can resolve orig_handler, covering the
case where side trace compilation is exhausted.

Closes GH-21368.
2026-03-16 21:31:49 +03:00
Daniel Scherzer
25f62cfa1f gen_stub: simplify with early returns 2026-03-16 09:53:51 -07:00
Daniel Scherzer
f1dd3f2f30 gen_stub: move generateArgInfoCode() into FileInfo
Reduce the number of global functions by moving it to instance method
`FileInfo::generateArgInfoCode()`.

In the process, make the following parts of `FileInfo` private:

- `$funcInfos`
- `$generateFunctionEntries`
- `$declarationPrefix`
- `$generateClassEntries`
- `$generateCEnums`
- `::getMinimumPhpVersionIdCompatibility()`
2026-03-16 09:53:51 -07:00