Bug 64070 fix, traits aliasing of collided methods#277
Closed
nikita2206 wants to merge 3 commits intophp:masterfrom
Closed
Bug 64070 fix, traits aliasing of collided methods#277nikita2206 wants to merge 3 commits intophp:masterfrom
nikita2206 wants to merge 3 commits intophp:masterfrom
Conversation
Zend/zend_compile.c
Outdated
Member
There was a problem hiding this comment.
Variable declarations have to happen at the top of the scope (C89). Also this should use alias->alias_len. Also I think you forgot to alloc/copy the NUL terminator.
Maybe just write fn_copy.common.function_name = estrndup(alias->alias, alias->alias_len) instead?
Apart from that, can't say whether patch is right or not. Don't know traits well enough.
Contributor
Author
|
@nikic thanks, corrected. |
Member
|
@nikita2206 Why did you choose to use |
Contributor
Author
|
@nikic fixed |
Contributor
Author
|
@zend-dev Oh, I see, didn't check what was in hash_key. Closing. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Here's a description https://bugs.php.net/bug.php?id=64070
Basically the problem can be described so:
We have a trait Foo that has a method bar()
We have a trait Bar that has a method bar()
Bar uses Foo, and to avoid collisions, it aliases Foo::bar() as foo()
Now the problem: when Foo::bar() copied to a Bar with alias foo(), its function_name (zend_function.common.function_name) remains as "bar". So when some other class or trait uses Bar, it receives Foo::bar() as bar, not as foo() and that causes a problem.