- nsmp->next=nsmpools[poolid].first.next;
- nsmp->prev=&nsmpools[poolid].first;
- if (nsmpools[poolid].first.next)
- nsmpools[poolid].first.next->prev=nsmp;
- nsmpools[poolid].first.next=nsmp;
+ if (nsmpools[poolid].blocks) {
+ nsmpools[poolid].blocks->prev = nsmp;
+ }
+ nsmp->next=nsmpools[poolid].blocks;
+ nsmp->prev=NULL;
+ nsmpools[poolid].blocks=nsmp;
+
+ VALGRIND_MEMPOOL_ALLOC(nsmp, nsmp->data, nsmp->size);
+
+ nsmp->redzone = REDZONE_MAGIC;
+ VALGRIND_MAKE_MEM_NOACCESS(&nsmp->redzone, sizeof(nsmp->redzone));