summaryrefslogtreecommitdiff
path: root/os/port/xalloc.c
diff options
context:
space:
mode:
authorCharles.Forsyth <devnull@localhost>2007-04-07 09:40:13 +0000
committerCharles.Forsyth <devnull@localhost>2007-04-07 09:40:13 +0000
commitb5eeadad52f7e620402f85c9606f45be13323b8d (patch)
tree1c6edd4b3d7fc9277266c66b4dab2593f66b19a0 /os/port/xalloc.c
parent9dc22068e29604f4b484e746112a9a4efe6fd57f (diff)
20070407-1039 os/port changes
Diffstat (limited to 'os/port/xalloc.c')
-rw-r--r--os/port/xalloc.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/os/port/xalloc.c b/os/port/xalloc.c
index 73310089..286881c2 100644
--- a/os/port/xalloc.c
+++ b/os/port/xalloc.c
@@ -163,9 +163,14 @@ xmerge(void *vp, void *vq)
{
Xhdr *p, *q;
- p = vp;
- if((uchar*)vp+p->size == (uchar*)vq) {
- q = vq;
+ p = (Xhdr*)(((ulong)vp - offsetof(Xhdr, data[0])));
+ q = (Xhdr*)(((ulong)vq - offsetof(Xhdr, data[0])));
+ if(p->magix != Magichole || q->magix != Magichole) {
+ xsummary();
+ panic("xmerge(%#p, %#p) bad magic %#lux, %#lux\n",
+ vp, vq, p->magix, q->magix);
+ }
+ if((uchar*)p+p->size == (uchar*)q) {
p->size += q->size;
return 1;
}