@@ -3230,63 +3230,57 @@ void zend_mm_observer_sync_flag(bool enabled_observer) {
3230
3230
#endif
3231
3231
}
3232
3232
3233
- ZEND_API bool zend_mm_observer_enabled (zend_mm_heap * heap , zend_mm_observer * node ) {
3234
- #if ZEND_MM_CUSTOM
3233
+ zend_mm_heap_observer * zend_mm_observer_find_heap_observer (zend_mm_heap * heap , zend_mm_observer * node ) {
3235
3234
if (heap == NULL ) {
3236
3235
heap = AG (mm_heap );
3237
3236
if (heap == NULL ) {
3238
- return false ;
3237
+ return NULL ;
3239
3238
}
3240
3239
}
3241
3240
zend_mm_heap_observer * current = heap -> observers ;
3242
3241
while (current != NULL ) {
3243
3242
if (current -> observer == node ) {
3244
- return current -> enabled ;
3243
+ return current ;
3245
3244
}
3246
3245
current = current -> next ;
3247
3246
}
3247
+ return NULL ;
3248
+ }
3249
+
3250
+ ZEND_API bool zend_mm_observer_enabled (zend_mm_heap * heap , zend_mm_observer * node ) {
3251
+ #if ZEND_MM_CUSTOM
3252
+ zend_mm_heap_observer * heap_observer = zend_mm_observer_find_heap_observer (heap , node );
3253
+ if (heap_observer == NULL ) {
3254
+ return false;
3255
+ }
3256
+ return heap_observer -> enabled ;
3248
3257
#endif
3249
3258
return false;
3250
3259
}
3251
3260
3252
- ZEND_API bool zend_mm_observer_enable (zend_mm_heap * heap , zend_mm_observer * node ) {
3261
+ ZEND_API bool zend_mm_observer_set_state (zend_mm_heap * heap , zend_mm_observer * node , bool state ) {
3253
3262
#if ZEND_MM_CUSTOM
3254
- if (heap == NULL ) {
3255
- heap = AG (mm_heap );
3256
- if (heap == NULL ) {
3257
- return false;
3258
- }
3259
- }
3260
- zend_mm_heap_observer * current = heap -> observers ;
3261
- while (current != NULL ) {
3262
- if (current -> observer == node ) {
3263
- current -> enabled = true;
3264
- zend_mm_observer_sync_flag (true);
3265
- return true;
3266
- }
3267
- current = current -> next ;
3263
+ zend_mm_heap_observer * heap_observer = zend_mm_observer_find_heap_observer (heap , node );
3264
+ if (heap_observer == NULL ) {
3265
+ false;
3268
3266
}
3267
+ heap_observer -> enabled = state ;
3268
+ zend_mm_observer_sync_flag (state );
3269
+ return true;
3270
+ #endif
3271
+ return false;
3272
+ }
3273
+
3274
+ ZEND_API bool zend_mm_observer_enable (zend_mm_heap * heap , zend_mm_observer * node ) {
3275
+ #if ZEND_MM_CUSTOM
3276
+ return zend_mm_observer_set_state (heap , node , true);
3269
3277
#endif
3270
3278
return false;
3271
3279
}
3272
3280
3273
3281
ZEND_API bool zend_mm_observer_disable (zend_mm_heap * heap , zend_mm_observer * node ) {
3274
3282
#if ZEND_MM_CUSTOM
3275
- if (heap == NULL ) {
3276
- heap = AG (mm_heap );
3277
- if (heap == NULL ) {
3278
- return false;
3279
- }
3280
- }
3281
- zend_mm_heap_observer * current = heap -> observers ;
3282
- while (current != NULL ) {
3283
- if (current -> observer == node ) {
3284
- current -> enabled = false;
3285
- zend_mm_observer_sync_flag (false);
3286
- return true;
3287
- }
3288
- current = current -> next ;
3289
- }
3283
+ return zend_mm_observer_set_state (heap , node , false);
3290
3284
#endif
3291
3285
return false;
3292
3286
}
0 commit comments