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

16243 Commits

Author SHA1 Message Date
Nikita Popov 18c4408fa5 Merge branch 'PHP-8.0'
* PHP-8.0:
  Declare may_retry_reparse_point on windows only
2020-10-26 12:41:19 +01:00
Nikita Popov 26bd857999 Merge branch 'PHP-7.4' into PHP-8.0
* PHP-7.4:
  Declare may_retry_reparse_point on windows only
2020-10-26 12:41:12 +01:00
Nikita Popov 31aca85572 Merge branch 'PHP-7.3' into PHP-7.4
* PHP-7.3:
  Declare may_retry_reparse_point on windows only
2020-10-26 12:40:56 +01:00
Nikita Popov 824cbc2781 Declare may_retry_reparse_point on windows only 2020-10-26 12:40:45 +01:00
Christoph M. Becker ed64d1b5a9 Merge branch 'PHP-8.0'
* PHP-8.0:
  Fix #80258: Windows Deduplication Enabled, randon permission errors
2020-10-26 11:22:55 +01:00
Christoph M. Becker 0abcb9fb69 Merge branch 'PHP-7.4' into PHP-8.0
* PHP-7.4:
  Fix #80258: Windows Deduplication Enabled, randon permission errors
2020-10-26 11:22:39 +01:00
Christoph M. Becker ac2e9587fb Merge branch 'PHP-7.3' into PHP-7.4
* PHP-7.3:
  Fix #80258: Windows Deduplication Enabled, randon permission errors
2020-10-26 11:21:52 +01:00
Christoph M. Becker 848e24f24d Fix #80258: Windows Deduplication Enabled, randon permission errors
A recent bug fix regarding symlinks claimed:

> After resolving reparse points, the path still may be a reparse
> point; in that case we have to resolve that reparse point as well.

While that is basically correct, some reparse points may point to
inaccessible system folders (e.g. `IO_REPARSE_TAG_DEDUP` points to
"\System Volume Information").  Since we don't know details about
arbitrary reparse points, and are mainly interested in nested symlinks,
we take a step back, and only resolve `IO_REPARSE_TAG_SYMLINK` for now.

Close GH-6354.
2020-10-26 11:21:14 +01:00
Máté Kocsis 09f4f305ec Merge branch 'PHP-8.0' 2020-10-23 16:34:40 +02:00
Máté Kocsis 47bbfe1fc0 Require stubs to declare return types for magic methods when possible
Closes GH-6376
2020-10-23 16:33:16 +02:00
Nikita Popov a876577ebe Merge branch 'PHP-8.0'
* PHP-8.0:
  Make GC default threshold handling consistent
2020-10-23 10:31:55 +02:00
Nikita Popov 0fb2374e06 Make GC default threshold handling consistent
While the initial threshold is set to 10001 roots, the threshold
adjustment logic may then set it to 10000. The exact value really
doesn't matter, but we should make it consistent.
2020-10-23 10:30:07 +02:00
Nikita Popov a185cc839f Merge branch 'PHP-8.0'
* PHP-8.0:
  Don't allow passing unknown named params to class without ctor
2020-10-23 09:47:36 +02:00
Nikita Popov 078df4d144 Don't allow passing unknown named params to class without ctor
See also https://externals.io/message/112083.

Closes GH-6364.
2020-10-23 09:46:55 +02:00
Máté Kocsis 65c4a78805 Merge branch 'PHP-8.0' 2020-10-22 19:03:04 +02:00
Máté Kocsis a8e92e361f Run arginfo/ZPP verification tests in strict mode as well
Closes GH-6370
2020-10-22 19:01:40 +02:00
Nikita Popov 3f0e94e3c7 Accept zend_string in highlight_string API 2020-10-22 14:35:40 +02:00
Nikita Popov a58e371cef Remove unused single.leaf member 2020-10-22 10:42:26 +02:00
Nikita Popov ff82234948 Merge branch 'PHP-8.0'
* PHP-8.0:
  Simplify and fix generator tree management
2020-10-22 10:27:01 +02:00
Nikita Popov dd4a080133 Simplify and fix generator tree management
This makes a number of related changes to the generator tree
management, that should hopefully make it easier to understand,
more robust and faster for the common linear-chain case. Fixes
https://bugs.php.net/bug.php?id=80240, which was the original
motivation here.

 * Generators now only add a ref to their direct parent.
 * Nodes only store their children, not their leafs, which avoids
   any need for leaf updating. This means it's no longer possible
   to fetch the child for a certain leaf, which is something we
   only needed in one place (update_current). If multi-children
   nodes are involved, this will require doing a walk in the other
   direction (from leaf to root). It does not affect the common
   case of single-child nodes.
 * The root/leaf pointers are now seen as a pair. One leaf generator
   can point to the current root. If a different leaf generator is
   used, we'll move the root pointer over to that one. Again, this
   is a cache to make the common linear chain case fast, trees may
   need to scan up the parent link.

Closes GH-6344.
2020-10-22 10:25:25 +02:00
Nikita Popov d1845ac008 Merge branch 'PHP-8.0'
* PHP-8.0:
  Fixed bug #80255
2020-10-19 15:14:57 +02:00
Nikita Popov d3812ca41b Fixed bug #80255
This was a copy&paste mistake, target_block was used where
follow_block was intended. Also update copy&paste mistakes in
the comments.
2020-10-19 15:13:53 +02:00
Nikita Popov 808029c049 Merge branch 'PHP-8.0'
* PHP-8.0:
  Make sure output start filename is not freed early
2020-10-16 17:29:22 +02:00
Nikita Popov 97202d9d84 Make sure output start filename is not freed early
As filenames are no longer interned, we need to keep a reference
to the zend_string to make sure it isn't freed.

To avoid a nominal source compatibility break, create a new member
in the globals.
2020-10-16 17:27:52 +02:00
Nikita Popov 60ece88c28 Merge branch 'PHP-8.0'
* PHP-8.0:
  Fix leak when setting dynamic property on generator
2020-10-16 16:58:58 +02:00
Nikita Popov 28e21d80b0 Fix leak when setting dynamic property on generator 2020-10-16 16:58:27 +02:00
Nikita Popov a9b986a970 Merge branch 'PHP-8.0'
* PHP-8.0:
  Fix bug #80055
2020-10-15 14:24:44 +02:00
Nikita Popov 4ece62fba9 Fix bug #80055
We need to perform trait scope fixup for both methods involved
in the inheritance check. For that purpose we already need to
thread through a separate fn scope through the entire inheritance
checking machinery.
2020-10-15 14:24:25 +02:00
Nikita Popov 100ac24084 Merge branch 'PHP-8.0'
* PHP-8.0:
  Skip arginfo test under msan
2020-10-15 10:46:40 +02:00
Nikita Popov b2700811f3 Skip arginfo test under msan
Msan is missing interceptors for some functions that result in
false positives.
2020-10-15 10:40:23 +02:00
Nikita Popov 1fc31979a4 Merge branch 'PHP-8.0'
* PHP-8.0:
  More arginfo/zpp verification
2020-10-14 16:26:27 +02:00
Nikita Popov 0832376411 More arginfo/zpp verification
Run all functions with a varying number of null arguments, which
helps us flush out all kinds of bugs.

Closes GH-5881.
2020-10-14 16:26:09 +02:00
Nikita Popov 5070549577 Sanity check zpp max argument count
This would have prevented 9b4094c.

Closes GH-6334.
2020-10-14 10:06:55 +02:00
Nikita Popov 796d06b8ab Merge branch 'PHP-8.0'
* PHP-8.0:
  Fix handling of throwing undef var in verify return
2020-10-13 11:45:43 +02:00
Nikita Popov 1748b8111e Fix handling of throwing undef var in verify return
If we have an undefined variable and null is not accepted by the
return type, we want to throw just the undef var error.

In this case this lead to an infinite loop, because we overwrite
the exception opline in SAVE_OPLINE and it does not get reset
when chaining into a previous exception. Add an assertiong to
catch this case earlier.
2020-10-13 11:43:43 +02:00
Christoph M. Becker 2d01a89ad1 7.3.25 is next 2020-10-13 09:52:46 +02:00
Nikita Popov c0b4dea858 Merge branch 'PHP-8.0'
* PHP-8.0:
  Fixed bug #80225
2020-10-12 16:35:20 +02:00
Nikita Popov f9b7609d17 Fixed bug #80225
Namespaced and declares have a different interpretation of what
"first statement" means.
2020-10-12 16:35:09 +02:00
Nikita Popov 14830ab2a3 Merge branch 'PHP-8.0'
* PHP-8.0:
  Detect self-addition of array more accurately
  Deindirect source elements in zend_hash_merge
2020-10-12 11:25:36 +02:00
Nikita Popov 66ecee6243 Merge branch 'PHP-7.4' into PHP-8.0
* PHP-7.4:
  Detect self-addition of array more accurately
  Deindirect source elements in zend_hash_merge
2020-10-12 11:25:27 +02:00
Nikita Popov 5a7f9afb99 Merge branch 'PHP-7.3' into PHP-7.4
* PHP-7.3:
  Detect self-addition of array more accurately
  Deindirect source elements in zend_hash_merge
2020-10-12 11:24:59 +02:00
Nikita Popov 3c4dd73c02 Detect self-addition of array more accurately
While the zvals may be different, they may still point to the
same array.

Fixes oss-fuzz #26245.
2020-10-12 11:24:31 +02:00
Nikita Popov e304468e57 Deindirect source elements in zend_hash_merge
If the RHS has INDIRECT elements, we do not those to be added to
the LHS verbatim. As we're using UPDATE_INDIRECT, we might even
create a nested INDIRECT that way.

This is a side-quest of oss-fuzz #26245.
2020-10-12 11:24:27 +02:00
Nikita Popov 57721d6172 Merge branch 'PHP-8.0'
* PHP-8.0:
  Avoid non-object in FE_FREE
2020-10-12 09:47:22 +02:00
Nikita Popov d953cd1862 Merge branch 'PHP-7.4' into PHP-8.0
* PHP-7.4:
  Avoid non-object in FE_FREE
2020-10-12 09:46:38 +02:00
Nikita Popov 304141e8f8 Avoid non-object in FE_FREE
Even if the properties HT is empty, make sure we still leave an
object in the FE_RESET result, so our type inference results
stay correct.
2020-10-12 09:45:52 +02:00
George Peter Banyard 49783e35f0 Add compiler flags which aren't included in -Wall or -Wextra
Adds the following compiler flags:
 . -Wduplicated-cond
 . -Wlogical-op
 . -Wformat-truncation
 . -fno-common

Closes GH-6199
2020-10-10 17:26:49 +01:00
Nikita Popov 5c39ac8ef5 Merge branch 'PHP-8.0'
* PHP-8.0:
  Fixed bug #80186
2020-10-09 17:02:40 +02:00
Nikita Popov 623bf39e9c Merge branch 'PHP-7.4' into PHP-8.0
* PHP-7.4:
  Fixed bug #80186
2020-10-09 17:02:20 +02:00
Nikita Popov 15443f8af4 Fixed bug #80186
Early exit in FE_RESET if get_properties() returns empty array,
as we cannot add HT iterators to zend_empty_array.
2020-10-09 16:56:08 +02:00