From be77b6890c5f6b956553c0432554e5912a30528f Mon Sep 17 00:00:00 2001 From: Martin Mares Date: Tue, 16 May 2000 15:02:33 +0000 Subject: Poisoning: take there... --- lib/slab.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/lib/slab.c b/lib/slab.c index 3c81e9f..75a55c6 100644 --- a/lib/slab.c +++ b/lib/slab.c @@ -108,7 +108,7 @@ slab_dump(resource *r) struct slab { resource r; - unsigned obj_size, head_size, objs_per_slab, num_empty_heads; + unsigned obj_size, head_size, objs_per_slab, num_empty_heads, data_size; list empty_heads, partial_heads, full_heads; }; @@ -146,6 +146,7 @@ sl_new(pool *p, unsigned size) unsigned int align = sizeof(struct sl_alignment); if (align < sizeof(int)) align = sizeof(int); + s->data_size = size; size += OFFSETOF(struct sl_obj, u.data); if (size < sizeof(struct sl_obj)) size = sizeof(struct sl_obj); @@ -198,6 +199,9 @@ okay: goto full_partial; h->first_free = o->u.next; h->num_full++; +#ifdef POISON + memset(o->u.data, 0xcd, s->data_size); +#endif return o->u.data; full_partial: @@ -226,7 +230,7 @@ sl_free(slab *s, void *oo) struct sl_head *h = o->slab; #ifdef POISON - memset(o, 0xdb, s->obj_size); + memset(oo, 0xdb, s->data_size); #endif o->u.next = h->first_free; h->first_free = o; -- cgit v1.2.3