summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@felloff.net>2015-01-09 02:45:14 +0100
committercinap_lenrek <cinap_lenrek@felloff.net>2015-01-09 02:45:14 +0100
commit212db4135d10039effb12ab708f8ea7d61c32b1c (patch)
tree3a3257b4ea9d05be3d235dbd7dd54830f207c2b9
parent97d6d9ddaada7a5576ade7c6dcf4e428e236f0a0 (diff)
parentef9c5b4cc711a285947c16c7d1020f13acf7f7e7 (diff)
merge
-rw-r--r--sys/src/libc/port/pool.c18
1 files changed, 10 insertions, 8 deletions
diff --git a/sys/src/libc/port/pool.c b/sys/src/libc/port/pool.c
index 468607828..ddd223634 100644
--- a/sys/src/libc/port/pool.c
+++ b/sys/src/libc/port/pool.c
@@ -123,7 +123,7 @@ enum {
static uchar datamagic[] = { 0xFE, 0xF1, 0xF0, 0xFA };
-#define Poison (void*)0xCafeBabe
+#define Poison ((void*)-0x35014542) /* cafebabe */
#define _B2D(a) ((void*)((uchar*)a+sizeof(Bhdr)))
#define _D2B(v) ((Alloc*)((uchar*)v-sizeof(Bhdr)))
@@ -197,12 +197,12 @@ checklist(Free *t)
Free *q;
for(q=t->next; q!=t; q=q->next){
- assert(q->size == t->size);
- assert(q->next==nil || q->next->prev==q);
- assert(q->prev==nil || q->prev->next==q);
- // assert(q->left==nil);
- // assert(q->right==nil);
assert(q->magic==FREE_MAGIC);
+ assert(q->size==t->size);
+ assert(q->left==Poison);
+ assert(q->right==Poison);
+ assert(q->next!=nil && q->next!=Poison && q->next->prev==q);
+ assert(q->prev!=nil && q->prev!=Poison && q->prev->next==q);
}
}
@@ -211,8 +211,10 @@ checktree(Free *t, int a, int b)
{
assert(t->magic==FREE_MAGIC);
assert(a < t->size && t->size < b);
- assert(t->next==nil || t->next->prev==t);
- assert(t->prev==nil || t->prev->next==t);
+ assert(t->left!=Poison);
+ assert(t->right!=Poison);
+ assert(t->next!=nil && t->next!=Poison && t->next->prev==t);
+ assert(t->prev!=nil && t->prev!=Poison && t->prev->next==t);
checklist(t);
if(t->left)
checktree(t->left, a, t->size);