Poisoning: take there...
This commit is contained in:
parent
d6796e7b54
commit
be77b6890c
1 changed files with 6 additions and 2 deletions
|
@ -108,7 +108,7 @@ slab_dump(resource *r)
|
||||||
|
|
||||||
struct slab {
|
struct slab {
|
||||||
resource r;
|
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;
|
list empty_heads, partial_heads, full_heads;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -146,6 +146,7 @@ sl_new(pool *p, unsigned size)
|
||||||
unsigned int align = sizeof(struct sl_alignment);
|
unsigned int align = sizeof(struct sl_alignment);
|
||||||
if (align < sizeof(int))
|
if (align < sizeof(int))
|
||||||
align = sizeof(int);
|
align = sizeof(int);
|
||||||
|
s->data_size = size;
|
||||||
size += OFFSETOF(struct sl_obj, u.data);
|
size += OFFSETOF(struct sl_obj, u.data);
|
||||||
if (size < sizeof(struct sl_obj))
|
if (size < sizeof(struct sl_obj))
|
||||||
size = sizeof(struct sl_obj);
|
size = sizeof(struct sl_obj);
|
||||||
|
@ -198,6 +199,9 @@ okay:
|
||||||
goto full_partial;
|
goto full_partial;
|
||||||
h->first_free = o->u.next;
|
h->first_free = o->u.next;
|
||||||
h->num_full++;
|
h->num_full++;
|
||||||
|
#ifdef POISON
|
||||||
|
memset(o->u.data, 0xcd, s->data_size);
|
||||||
|
#endif
|
||||||
return o->u.data;
|
return o->u.data;
|
||||||
|
|
||||||
full_partial:
|
full_partial:
|
||||||
|
@ -226,7 +230,7 @@ sl_free(slab *s, void *oo)
|
||||||
struct sl_head *h = o->slab;
|
struct sl_head *h = o->slab;
|
||||||
|
|
||||||
#ifdef POISON
|
#ifdef POISON
|
||||||
memset(o, 0xdb, s->obj_size);
|
memset(oo, 0xdb, s->data_size);
|
||||||
#endif
|
#endif
|
||||||
o->u.next = h->first_free;
|
o->u.next = h->first_free;
|
||||||
h->first_free = o;
|
h->first_free = o;
|
||||||
|
|
Loading…
Reference in a new issue