Skip to content

Conversation

nielsdos
Copy link
Member

@nielsdos nielsdos commented Sep 23, 2024

The frameless function handlers do not update the op variables when handling the result is undefined. In this case this causes propagating an UNDEF value into a temporary, which results in an extra undefined variable warning for a temporary in this case.

The original issue also reports a crash in some cases, which is also fixed by this patch.

Please note, CI fails on Linux x64 right now but is unrelated

@nielsdos nielsdos requested a review from dstogov as a code owner September 23, 2024 18:12
…fined CVs

The frameless function handlers do not update the op variables when
handling the result is undefined. In this case this causes propagating
an UNDEF value into a temporary, which results in an extra undefined
variable warning for a temporary in this case.

The original issue also reports a crash in some cases, which is also
fixed by this patch.
if (opline->op1_type == IS_CV && (op1_info & MAY_BE_UNDEF)) {
zend_jit_zval_check_undef(jit, op1_ref, opline->op1.var, opline, 1);
op1_ref = zend_jit_zval_check_undef(jit, op1_ref, opline->op1.var, opline, 1);
op1_info |= MAY_BE_NULL;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It may make sense to reset MAY_BE_UNDEF flag, but most probably this won't make any difference.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Right of course, I'll update this and when CI passes merge this.

@nielsdos nielsdos closed this in daba40c Sep 24, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Segmentation fault with frameless functions and undefined CVs

2 participants