Skip to content

Commit 0eb45bc

Browse files
committed
Merge branch 'PHP-8.1'
* PHP-8.1: Fix #81380 observer may not be initialized properly
2 parents 23e6856 + b94b97f commit 0eb45bc

File tree

2 files changed

+13
-4
lines changed

2 files changed

+13
-4
lines changed

NEWS

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,7 @@ PHP NEWS
22
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
33
?? ??? ????, PHP 8.2.0alpha1
44

5+
- Core:
6+
. Fixed bug #81380 (Observer may not be initialized properly). (krakjoe)
7+
58
<<< NOTE: Insert NEWS from last stable release here prior to actual release! >>>

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)