Fix GH-21687: assertion failure in zend_enum_fetch_case_name after array_walk#25
Closed
Fix GH-21687: assertion failure in zend_enum_fetch_case_name after array_walk#25
Conversation
… array_walk array_walk() wraps object properties in IS_REFERENCE when passing them to the callback. For enum objects, this converts the name property from IS_STRING to IS_REFERENCE in-place. A subsequent var_dump() calls zend_enum_fetch_case_name() which asserts IS_STRING on the property, triggering an assertion failure. Dereference through IS_REFERENCE in both zend_enum_fetch_case_name() and zend_enum_fetch_case_value() before accessing the value. Closes phpGH-21687
Owner
Author
|
Submitted upstream as php#21690 |
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.
Fixes php#21687
array_walk()wraps object properties inIS_REFERENCEwhen passing them to the callback. For enum objects, this converts the name property fromIS_STRINGtoIS_REFERENCEin-place. A subsequentvar_dump()callszend_enum_fetch_case_name()which assertsIS_STRINGon the property, triggering an assertion failure.Derefs through
IS_REFERENCEin bothzend_enum_fetch_case_name()andzend_enum_fetch_case_value()before accessing the value.