Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit a954662

Browse files
extract zend_mm_observer_find_heap_observer
1 parent 285563a commit a954662

File tree

2 files changed

+29
-34
lines changed

2 files changed

+29
-34
lines changed

‎Zend/zend_alloc.c‎

Lines changed: 28 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -3230,63 +3230,57 @@ void zend_mm_observer_sync_flag(bool enabled_observer) {
32303230
#endif
32313231
}
32323232

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) {
32353234
if (heap == NULL) {
32363235
heap = AG(mm_heap);
32373236
if (heap == NULL) {
3238-
return false;
3237+
return NULL;
32393238
}
32403239
}
32413240
zend_mm_heap_observer *current = heap->observers;
32423241
while (current != NULL) {
32433242
if (current->observer == node) {
3244-
return current->enabled;
3243+
return current;
32453244
}
32463245
current = current->next;
32473246
}
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;
32483257
#endif
32493258
return false;
32503259
}
32513260

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, boolstate) {
32533262
#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;
32683266
}
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);
32693277
#endif
32703278
return false;
32713279
}
32723280

32733281
ZEND_API bool zend_mm_observer_disable(zend_mm_heap *heap, zend_mm_observer *node) {
32743282
#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);
32903284
#endif
32913285
return false;
32923286
}

‎Zend/zend_alloc.h‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -296,6 +296,7 @@ void zend_mm_observers_unregister(void);
296296

297297
// thread local
298298
ZEND_API bool zend_mm_observer_enabled(zend_mm_heap*, zend_mm_observer*);
299+
ZEND_API bool zend_mm_observer_set_state(zend_mm_heap *heap, zend_mm_observer *node, bool state);
299300
ZEND_API bool zend_mm_observer_enable(zend_mm_heap*, zend_mm_observer*);
300301
ZEND_API bool zend_mm_observer_disable(zend_mm_heap*, zend_mm_observer*);
301302

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /