Skip to content

Commit b94b97f

Browse files
committed
Merge branch 'PHP-8.0' into PHP-8.1
* PHP-8.0: Fix #81380 observer may not be initialized properly
2 parents 3dfdf96 + c884a5a commit b94b97f

File tree

2 files changed

+11
-4
lines changed

2 files changed

+11
-4
lines changed

NEWS

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ PHP NEWS
55
- Core:
66
. Fixed bug #75941 (Fix compile failure on Solaris with clang). (Jaromír
77
Doleček)
8+
. Fixed bug #81380 (Observer may not be initialized properly). (krakjoe)
89

910
30 Sep 2021, PHP 8.1.0RC3
1011

Zend/zend_observer.c

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -44,11 +44,11 @@ zend_llist zend_observer_fiber_init;
4444
zend_llist zend_observer_fiber_switch;
4545
zend_llist zend_observer_fiber_destroy;
4646

47-
int zend_observer_fcall_op_array_extension = -1;
47+
int zend_observer_fcall_op_array_extension;
4848

49-
ZEND_TLS zend_arena *fcall_handlers_arena = NULL;
50-
ZEND_TLS zend_execute_data *first_observed_frame = NULL;
51-
ZEND_TLS zend_execute_data *current_observed_frame = NULL;
49+
ZEND_TLS zend_arena *fcall_handlers_arena;
50+
ZEND_TLS zend_execute_data *first_observed_frame;
51+
ZEND_TLS zend_execute_data *current_observed_frame;
5252

5353
// Call during minit/startup ONLY
5454
ZEND_API void zend_observer_fcall_register(zend_observer_fcall_init init) {
@@ -78,12 +78,18 @@ ZEND_API void zend_observer_startup(void) {
7878
zend_llist_init(&zend_observer_fiber_init, sizeof(zend_observer_fiber_init_handler), NULL, 1);
7979
zend_llist_init(&zend_observer_fiber_switch, sizeof(zend_observer_fiber_switch_handler), NULL, 1);
8080
zend_llist_init(&zend_observer_fiber_destroy, sizeof(zend_observer_fiber_destroy_handler), NULL, 1);
81+
82+
zend_observer_fcall_op_array_extension = -1;
8183
}
8284

8385
ZEND_API void zend_observer_activate(void) {
8486
if (ZEND_OBSERVER_ENABLED) {
8587
fcall_handlers_arena = zend_arena_create(4096);
88+
} else {
89+
fcall_handlers_arena = NULL;
8690
}
91+
first_observed_frame = NULL;
92+
current_observed_frame = NULL;
8793
}
8894

8995
ZEND_API void zend_observer_deactivate(void) {

0 commit comments

Comments
 (0)