Skip to content

Commit

Permalink
Merge branch 'PHP-8.4'
Browse files Browse the repository at this point in the history
* PHP-8.4:
  Fix phpGH-16727: Opcache bad signal 139 crash in ZTS bookworm (frankenphp)
  • Loading branch information
nielsdos committed Nov 11, 2024
2 parents 234219d + 382be92 commit dfba04e
Showing 1 changed file with 7 additions and 1 deletion.
8 changes: 7 additions & 1 deletion Zend/zend_compile.c
Original file line number Diff line number Diff line change
Expand Up @@ -9163,7 +9163,13 @@ static void zend_compile_class_decl(znode *result, zend_ast *ast, bool toplevel)
}

opline->op1_type = IS_CONST;
LITERAL_STR(opline->op1, lcname);
/* It's possible that `lcname` is not an interned string because it was not yet in the interned string table.
* However, by this point another thread may have caused `lcname` to be added in the interned string table.
* This will cause `lcname` to get freed once it is found in the interned string table. If we were to use
* LITERAL_STR() here we would not change the `lcname` pointer to the new value, and it would point to the
* now-freed string. This will cause issues when we use `lcname` in the code below. We solve this by using
* zend_add_literal_string() which gives us the new value. */
opline->op1.constant = zend_add_literal_string(&lcname);

if (decl->flags & ZEND_ACC_ANON_CLASS) {
opline->opcode = ZEND_DECLARE_ANON_CLASS;
Expand Down

0 comments on commit dfba04e

Please sign in to comment.