Exemplo n.º 1
0
void phpdbg_set_sigsafe_mem(char *buffer) {
	phpdbg_signal_safe_mem *mem = &PHPDBG_G(sigsafe_mem);
	const zend_mm_handlers phpdbg_handlers = {
		zend_mm_mem_alloc,
		zend_mm_mem_free,
		NULL,
		NULL,
	};

	mem->mem = buffer;
	mem->allocated = 0;

	mem->heap = zend_mm_startup_ex(&phpdbg_handlers, NULL, 0);

	mem->old_heap = zend_mm_set_heap(mem->heap);
}
Exemplo n.º 2
0
	return NULL;
}

static void zend_mm_mem_free(zend_mm_storage *storage, void *ptr, size_t size) {
}

void phpdbg_set_sigsafe_mem(char *buffer TSRMLS_DC) {
	phpdbg_signal_safe_mem *mem = &PHPDBG_G(sigsafe_mem);
	mem->mem = buffer;
	mem->allocated = 0;

	mem->storage.chunk_alloc = zend_mm_mem_alloc;
	mem->storage.chunk_free = zend_mm_mem_free;

	mem->heap = zend_mm_startup_ex(&mem->storage);

	mem->old_heap = zend_mm_set_heap(mem->heap TSRMLS_CC);
}

zend_mm_heap *phpdbg_original_heap_sigsafe_mem(TSRMLS_D) {
	return PHPDBG_G(sigsafe_mem).old_heap;
}

void phpdbg_clear_sigsafe_mem(TSRMLS_D) {
	zend_mm_set_heap(phpdbg_original_heap_sigsafe_mem(TSRMLS_C) TSRMLS_CC);
	PHPDBG_G(sigsafe_mem).mem = NULL;
}

zend_bool phpdbg_active_sigsafe_mem(TSRMLS_D) {
	return !!PHPDBG_G(sigsafe_mem).mem;