main: change some PHP globals to zend_string* and uint32_t - #22814
Open
Girgias wants to merge 6 commits into
Open
main: change some PHP globals to zend_string* and uint32_t#22814Girgias wants to merge 6 commits into
Girgias wants to merge 6 commits into
Conversation
Girgias
force-pushed
the
2026-07-php_globals_zstr_conversion
branch
from
July 19, 2026 22:34
d0b5cc4 to
9cc5fe0
Compare
Girgias
marked this pull request as ready for review
July 20, 2026 08:54
Girgias
force-pushed
the
2026-07-php_globals_zstr_conversion
branch
from
July 20, 2026 09:14
9cc5fe0 to
41e2f2a
Compare
devnexen
reviewed
Jul 29, 2026
|
|
||
| /* Call unserialize callback */ | ||
| ZVAL_STRING(&user_func, PG(unserialize_callback_func)); | ||
| ZVAL_STR(&user_func, PG(unserialize_callback_func)); |
Member
There was a problem hiding this comment.
A test along these lines
function unserialize_cb_original($name)
{
ini_set('unserialize_callback_func', 'unserialize_cb_changed');
}
function unserialize_cb_changed($name)
{
}
ini_set('unserialize_callback_func', 'unserialize_cb_original');
unserialize('O:3:"FOO":0:{}');
var_dump(ini_get('unserialize_callback_func'));
ini_restore('unserialize_callback_func');
var_dump(ini_get('unserialize_callback_func'));
along side with USE_ZEND_ALLOC=0 USE_TRACKED_ALLOC=1 should highlight the underlying refcount issue here.
Member
Author
There was a problem hiding this comment.
I added the test to master and it still seems to work just fine?
Member
Author
There was a problem hiding this comment.
I see the issue as we are zval_dtor the zval... and yet it doesn't fail when not copying... I'm confused.
Member
There was a problem hiding this comment.
ah right ... I m afraid this is going to bite us down the road, I would prefer it copies wdyt ?
Member
Author
There was a problem hiding this comment.
Agreed, let me amend the commit.
This prevents a reallocation
As this is the expected type for lineno everywhere else in the engine
This remove a strlen() computation.
While at it clarify path concatenation code by using the zend_string_concat{2|3} APIs rather than a memcpy and strncpy calls
Allows us to convert a strcmp() call to zend_string_equals_literal() which is less confusing
This prevents a reallocation
Girgias
force-pushed
the
2026-07-php_globals_zstr_conversion
branch
from
July 29, 2026 14:31
41e2f2a to
67e3c4b
Compare
devnexen
approved these changes
Jul 29, 2026
devnexen
reviewed
Jul 29, 2026
| case 0: | ||
| filename = zend_string_concat3( | ||
| ZSTR_VAL(PG(doc_root)), ZSTR_LEN(PG(doc_root)), | ||
| ZEND_STRL("/"), |
Member
There was a problem hiding this comment.
nit: I just realise I wonder if PHP_DIR_SEPARATOR is not more appropriate
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.
No description provided.