func: void *sl_alloc0(struct ws_memory_slab *mem_chunk) return memset ( sl_alloc ( mem_chunk ) , '\0' , ( mem_chunk -> item_size ) ) ; void *sl_alloc(struct ws_memory_slab *mem_chunk) emem_chunk_t * chunk ; void * ptr ; if ( mem_chunk -> freed != ( ( void * ) 0 ) )  ptr = mem_chunk -> freed; return ptr ; if ( ! ( chunk = mem_chunk -> chunk_list ) || chunk -> amount_free < ( ( guint ) ( mem_chunk -> item_size ) ) )  size_t alloc_size = ( mem_chunk -> item_size * mem_chunk -> count ) ; alloc_size = alloc_size + ( pagesize - 1 ) & ( ~ ( pagesize - 1 ) ); chunk = emem_create_chunk ( alloc_size ); static emem_chunk_t *emem_create_chunk(size_t size) emem_chunk_t * npc ; npc = ( ( emem_chunk_t * ) ( g_malloc_n ( 1 , sizeof ( emem_chunk_t ) ) ) ); npc -> next = ( ( void * ) 0 ); npc -> canary_last = ( ( void * ) 0 ); npc -> amount_free = npc -> amount_free_init = ( ( unsigned int ) size ); npc -> free_offset = npc -> free_offset_init = 0; return npc ; chunk -> next = mem_chunk -> chunk_list; ptr = ( chunk -> buf + chunk -> free_offset ); return ptr ; 