Skip to content

Commit bcb1dbf

Browse files
committed
Merge branch 'PHP-7.2'
* PHP-7.2: Fixed bug #76337
2 parents d2d78cb + 5681f65 commit bcb1dbf

File tree

3 files changed

+15
-0
lines changed

3 files changed

+15
-0
lines changed

Zend/tests/bug76337.phpt

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
--TEST--
2+
Bug 76337: segmentation fault when an extension use zend_register_class_alias() and opcache enabled
3+
--SKIPIF--
4+
<?php if (!class_exists('_ZendTestClass') || !extension_loaded('Zend OPcache')) die('skip');
5+
--INI--
6+
opcache.enable=1
7+
opcache.enable_cli=1
8+
--FILE--
9+
<?php
10+
var_dump(class_exists('_ZendTestClassAlias'));
11+
--EXPECT--
12+
bool(true)

Zend/zend_API.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2816,6 +2816,7 @@ ZEND_API int zend_register_class_alias_ex(const char *name, size_t name_len, zen
28162816

28172817
zend_assert_valid_class_name(lcname);
28182818

2819+
lcname = zend_new_interned_string(lcname);
28192820
ce = zend_hash_add_ptr(CG(class_table), lcname, ce);
28202821
zend_string_release(lcname);
28212822
if (ce) {

ext/zend_test/test.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,8 @@ PHP_MINIT_FUNCTION(zend_test)
200200
zend_test_trait = zend_register_internal_class(&class_entry);
201201
zend_test_trait->ce_flags |= ZEND_ACC_TRAIT;
202202
zend_declare_property_null(zend_test_trait, "testProp", sizeof("testProp")-1, ZEND_ACC_PUBLIC);
203+
204+
zend_register_class_alias("_ZendTestClassAlias", zend_test_class);
203205
return SUCCESS;
204206
}
205207

0 commit comments

Comments
 (0)