History log of /PHP-7.4/Zend/zend_compile.c (Results 1 – 25 of 2214)
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
# 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.


12345678910>>...89