MCPcopy Create free account
hub / github.com/Tencent/UnLua / pb_poolalloc

Function pb_poolalloc

Plugins/UnLuaExtensions/LuaProtobuf/Source/src/pb.h:830–847  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

828}
829
830PB_API void *pb_poolalloc(pb_Pool *pool) {
831 void *obj = pool->freed;
832 if (obj == NULL) {
833 size_t objsize = pool->obj_size, offset;
834 void *newpage = malloc(PB_POOLSIZE);
835 if (newpage == NULL) return NULL;
836 offset = ((PB_POOLSIZE - sizeof(void*)) / objsize - 1) * objsize;
837 for (; offset > 0; offset -= objsize) {
838 void **entry = (void**)((char*)newpage + offset);
839 *entry = pool->freed, pool->freed = (void*)entry;
840 }
841 *(void**)((char*)newpage + PB_POOLSIZE - sizeof(void*)) = pool->pages;
842 pool->pages = newpage;
843 return newpage;
844 }
845 pool->freed = *(void**)obj;
846 return obj;
847}
848
849PB_API void pb_poolfree(pb_Pool *pool, void *obj)
850{ *(void**)obj = pool->freed, pool->freed = obj; }

Callers 2

pb_newtypeFunction · 0.85
pb_newfieldFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected