Skip to content

Commit c884a5a

Browse files
committed
Fix #81380 observer may not be initialized properly
1 parent 41df5c0 commit c884a5a

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 #81435 (Observer current_observed_frame may point to an old
77
(overwritten) frame). (Bob)
8+
. Fixed bug #81380 (Observer may not be initialized properly). (krakjoe)
89

910
- DOM:
1011
. Fixed bug #81433 (DOMElement::setIdAttribute() called twice may remove ID).

Zend/zend_observer.c

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,11 +41,11 @@ typedef struct _zend_observer_fcall_data {
4141
zend_llist zend_observers_fcall_list;
4242
zend_llist zend_observer_error_callbacks;
4343

44-
int zend_observer_fcall_op_array_extension = -1;
44+
int zend_observer_fcall_op_array_extension;
4545

46-
ZEND_TLS zend_arena *fcall_handlers_arena = NULL;
47-
ZEND_TLS zend_execute_data *first_observed_frame = NULL;
48-
ZEND_TLS zend_execute_data *current_observed_frame = NULL;
46+
ZEND_TLS zend_arena *fcall_handlers_arena;
47+
ZEND_TLS zend_execute_data *first_observed_frame;
48+
ZEND_TLS zend_execute_data *current_observed_frame;
4949

5050
// Call during minit/startup ONLY
5151
ZEND_API void zend_observer_fcall_register(zend_observer_fcall_init init) {
@@ -72,12 +72,18 @@ ZEND_API void zend_observer_fcall_register(zend_observer_fcall_init init) {
7272
ZEND_API void zend_observer_startup(void) {
7373
zend_llist_init(&zend_observers_fcall_list, sizeof(zend_observer_fcall_init), NULL, 1);
7474
zend_llist_init(&zend_observer_error_callbacks, sizeof(zend_observer_error_cb), NULL, 1);
75+
76+
zend_observer_fcall_op_array_extension = -1;
7577
}
7678

7779
ZEND_API void zend_observer_activate(void) {
7880
if (ZEND_OBSERVER_ENABLED) {
7981
fcall_handlers_arena = zend_arena_create(4096);
82+
} else {
83+
fcall_handlers_arena = NULL;
8084
}
85+
first_observed_frame = NULL;
86+
current_observed_frame = NULL;
8187
}
8288

8389
ZEND_API void zend_observer_deactivate(void) {

0 commit comments

Comments
 (0)