#
36f5d719 |
| 01-Jul-2021 |
Nikita Popov |
Fix leak on foreach by ref assign to property In this case we ended up creating an ASSIGN_OBJ_REF with VAR result operand, which was not freed. Fix this by implementing assign_r
Fix leak on foreach by ref assign to property In this case we ended up creating an ASSIGN_OBJ_REF with VAR result operand, which was not freed. Fix this by implementing assign_ref_znode the same was as assign_znode, i.e. performing an assignment with result and then freeing the result, which will result mark the result as UNUSED. This is more robust than the special handling for result == NULL that was used before. This fixes one of the issues reported in bug #81190.
show more ...
|
#
e0d6c3f7 |
| 04-Nov-2020 |
Nikita Popov |
Fix dynamic function definition in preload script We should use normal function renaming if the function is declared during preloading itself, rather than afterwards. This fixes
Fix dynamic function definition in preload script We should use normal function renaming if the function is declared during preloading itself, rather than afterwards. This fixes a regression introduced by 68f80be9d1380de731930187250a7ed6b55ae196.
show more ...
|
#
68f80be9 |
| 28-Oct-2020 |
Dmitry Stogov |
Fixed run-time binding of preloaded dynamically declared function
|
#
971e5c51 |
| 07-Jul-2020 |
Nikita Popov |
Fixed bug #79783 Make sure we don't drop the by-reference check when passing the result of a VM builtin function.
|
#
c5caa051 |
| 26-Jun-2020 |
Nikita Popov |
Fixed bug #79740
|
#
4f47ba99 |
| 19-May-2020 |
Nikita Popov |
Fix bug #79603, by retrying on RTD key collision This is a non-intrusive fix for 7.4, still trying to find a good solution for master. Closes GH-5597.
|
#
c5159b38 |
| 12-Mar-2020 |
Dmitry Stogov |
Check asserts early
|
#
2dddab01 |
| 12-Mar-2020 |
Dmitry Stogov |
Avoid "Anonymous class wasn't preloaded" error by lazely loading of not preloaded part of a preloaded script
|
#
2eb33818 |
| 23-Jan-2020 |
Nikita Popov |
Fixed bug #79155 Make sure we only unset the NULLABLE flag temporarily for class resolution, as the same type may be compiled multiple types.
|
#
d89cd0bb |
| 17-Dec-2019 |
Dmitry Stogov |
Property names of internal classes from temporary extensins, loaded by dl(), may be emalloc-ed strings.
|
#
0f2cdbf2 |
| 11-Dec-2019 |
Nikita Popov |
Introduce extra counter to avoid RTD key collisions Also generate a fatal error if a collision occurs in zend_compile. This is not perfect, because collisions might still be introdu
Introduce extra counter to avoid RTD key collisions Also generate a fatal error if a collision occurs in zend_compile. This is not perfect, because collisions might still be introduced via opcache, if one file is included multiple times during a request, invalidate in the meantime and recompiled by different processes. This still needs to be addressed, but this patch fixes the much more common case of collisions occuring when opcache is not used. Fixes bug #78903.
show more ...
|
#
be89a5c7 |
| 12-Dec-2019 |
Nikita Popov |
Fixed bug #78950: Preloading trait method with static variables We need to make sure that trait methods with static variables allocate a separate MAP slot for the static variables pointe
Fixed bug #78950: Preloading trait method with static variables We need to make sure that trait methods with static variables allocate a separate MAP slot for the static variables pointer, rather than working in-place.
show more ...
|
#
502cd7b1 |
| 11-Dec-2019 |
Nikita Popov |
Revert "Fixed bug #78903: Conflict in RTD key for closures results in crash" This reverts commit b55033fa18afd9bb60fc4537270266d808ec0868. This breaks ext/opcache/tests/bug65915.php
Revert "Fixed bug #78903: Conflict in RTD key for closures results in crash" This reverts commit b55033fa18afd9bb60fc4537270266d808ec0868. This breaks ext/opcache/tests/bug65915.phpt.
show more ...
|
#
b55033fa |
| 11-Dec-2019 |
Nikita Popov |
Fixed bug #78903: Conflict in RTD key for closures results in crash I wasn't able to create a simple reproducer for this. General approach is the same as for anonymous classes: If the ke
Fixed bug #78903: Conflict in RTD key for closures results in crash I wasn't able to create a simple reproducer for this. General approach is the same as for anonymous classes: If the key is already used, reuse the old definition.
show more ...
|
#
20ef51db |
| 10-Dec-2019 |
Dmitry Stogov |
Fixed bug #78937 (Preloading unlinkable anonymous class can segfault)
|
#
3f86adb0 |
| 09-Dec-2019 |
Nikita Popov |
Fixed bug #78935: Check that all linked classes can be preloaded During preloading, check that all classes that have been included as part of the preload script itself (rather than throu
Fixed bug #78935: Check that all linked classes can be preloaded During preloading, check that all classes that have been included as part of the preload script itself (rather than through opcache_compile_file) can actually be preloaded, i.e. satisfy Windows restrictions, have resolved initializers and resolved property types. When resolving initializers and property types, also autoload additional classes. Because of this, the resolution runs in a loop.
show more ...
|
#
32c1f375 |
| 09-Dec-2019 |
Nikita Popov |
Fixed bug #78926: Handle class table reallocation on failed link When we change back the bucket key on a class linking failure, make sure to reload the bucket pointer, as the class table
Fixed bug #78926: Handle class table reallocation on failed link When we change back the bucket key on a class linking failure, make sure to reload the bucket pointer, as the class table may have been reallocated in the meantime. Also remove a bogus bucket key change in anon class registration: We don't actually rename the class in this case anymore, the RTD key is already the final name.
show more ...
|
#
249e4909 |
| 06-Dec-2019 |
Nikita Popov |
Fix constant evaluation of && and || The "return" in the for loop should have been a break on the switch, otherwise the result is just ignored... but because it prevents evaluation o
Fix constant evaluation of && and || The "return" in the for loop should have been a break on the switch, otherwise the result is just ignored... but because it prevents evaluation of the other operand, it also violates the invariant that everything has been constant evaluated, resulting in an assertion failure. The for loop isn't correct in any case though, because it's not legal to determine the result based on just the second operand, as the first one may have a side-effect that cannot be optimized away.
show more ...
|
Revision tags: php-7.3.13RC1, php-7.2.26RC1, php-7.4.0, php-7.2.25, php-7.3.12 |
|
#
c3f23642 |
| 12-Nov-2019 |
Dmitry Stogov |
ws
|
Revision tags: php-7.4.0RC6, php-7.3.12RC1, php-7.2.25RC1, php-7.4.0RC5, php-7.1.33, php-7.2.24, php-7.3.11, php-7.4.0RC4 |
|
#
bea832cb |
| 08-Oct-2019 |
Nikita Popov |
Don't check type of simple parameter default values After fixing the int->double coercion case, this is already verified at compile-time, so there is no need to redo this type check on
Don't check type of simple parameter default values After fixing the int->double coercion case, this is already verified at compile-time, so there is no need to redo this type check on every call. Only perform the type check every time for the case of AST default values.
show more ...
|
#
9004102b |
| 08-Oct-2019 |
Nikita Popov |
Fixed bug #78648
|
Revision tags: php-7.3.11RC1, php-7.2.24RC1 |
|
#
239e2dda |
| 04-Oct-2019 |
Nikita Popov |
Make sure T_ERROR is returned for all lexer exceptions This originally manifested as a leak in oss-fuzz #18000. The following is a reduced test case: <?php [
Make sure T_ERROR is returned for all lexer exceptions This originally manifested as a leak in oss-fuzz #18000. The following is a reduced test case: <?php [ 5 => 1, "foo" > 1, " " => "" == 0 ]; <<<BAR $x BAR; Because this particular error condition did not return T_ERROR, EG(exception) was set while performing binary operation constant evaluation, which checks exceptions for cast failures. Instead of adding this indirect test case, I'm adding an assertion that the lexer has to return T_ERROR if EG(exception) is set.
show more ...
|
#
9659562c |
| 04-Oct-2019 |
Nikita Popov |
Fix use-after-free with delayed interned memoized const operand We should addref CONST operands during memoization, as they might be destroyed by later compilation, e.g. through internin
Fix use-after-free with delayed interned memoized const operand We should addref CONST operands during memoization, as they might be destroyed by later compilation, e.g. through interning.
show more ...
|
#
f26b60a5 |
| 04-Oct-2019 |
Nikita Popov |
Fix crash when unpacking into array literal with string keys
|
#
a5d3620d |
| 02-Oct-2019 |
Nikita Popov |
Fix segfault with __COMPILER_HALT_OFFSET__ and trailing {} Fixes OSS-Fuzz #17895.
|