merge
This commit is contained in:
commit
7265a09524
|
@ -1109,13 +1109,15 @@ syssemacquire(ulong *arg)
|
||||||
long *addr;
|
long *addr;
|
||||||
Segment *s;
|
Segment *s;
|
||||||
|
|
||||||
validaddr(arg[0], sizeof(long), 1);
|
|
||||||
evenaddr(arg[0]);
|
evenaddr(arg[0]);
|
||||||
addr = (long*)arg[0];
|
addr = (long*)arg[0];
|
||||||
block = arg[1];
|
block = arg[1];
|
||||||
|
|
||||||
if((s = seg(up, (ulong)addr, 0)) == nil)
|
s = seg(up, (ulong)addr, 0);
|
||||||
|
if(s == nil || (s->type&SG_RONLY) != 0 || (ulong)addr+sizeof(long) > s->top){
|
||||||
|
validaddr((ulong)addr, sizeof(long), 1);
|
||||||
error(Ebadarg);
|
error(Ebadarg);
|
||||||
|
}
|
||||||
if(*addr < 0)
|
if(*addr < 0)
|
||||||
error(Ebadarg);
|
error(Ebadarg);
|
||||||
return semacquire(s, addr, block);
|
return semacquire(s, addr, block);
|
||||||
|
@ -1128,13 +1130,15 @@ systsemacquire(ulong *arg)
|
||||||
ulong ms;
|
ulong ms;
|
||||||
Segment *s;
|
Segment *s;
|
||||||
|
|
||||||
validaddr(arg[0], sizeof(long), 1);
|
|
||||||
evenaddr(arg[0]);
|
evenaddr(arg[0]);
|
||||||
addr = (long*)arg[0];
|
addr = (long*)arg[0];
|
||||||
ms = arg[1];
|
ms = arg[1];
|
||||||
|
|
||||||
if((s = seg(up, (ulong)addr, 0)) == nil)
|
s = seg(up, (ulong)addr, 0);
|
||||||
|
if(s == nil || (s->type&SG_RONLY) != 0 || (ulong)addr+sizeof(long) > s->top){
|
||||||
|
validaddr((ulong)addr, sizeof(long), 1);
|
||||||
error(Ebadarg);
|
error(Ebadarg);
|
||||||
|
}
|
||||||
if(*addr < 0)
|
if(*addr < 0)
|
||||||
error(Ebadarg);
|
error(Ebadarg);
|
||||||
return tsemacquire(s, addr, ms);
|
return tsemacquire(s, addr, ms);
|
||||||
|
@ -1146,13 +1150,15 @@ syssemrelease(ulong *arg)
|
||||||
long *addr, delta;
|
long *addr, delta;
|
||||||
Segment *s;
|
Segment *s;
|
||||||
|
|
||||||
validaddr(arg[0], sizeof(long), 1);
|
|
||||||
evenaddr(arg[0]);
|
evenaddr(arg[0]);
|
||||||
addr = (long*)arg[0];
|
addr = (long*)arg[0];
|
||||||
delta = arg[1];
|
delta = arg[1];
|
||||||
|
|
||||||
if((s = seg(up, (ulong)addr, 0)) == nil)
|
s = seg(up, (ulong)addr, 0);
|
||||||
|
if(s == nil || (s->type&SG_RONLY) != 0 || (ulong)addr+sizeof(long) > s->top){
|
||||||
|
validaddr((ulong)addr, sizeof(long), 1);
|
||||||
error(Ebadarg);
|
error(Ebadarg);
|
||||||
|
}
|
||||||
/* delta == 0 is a no-op, not a release */
|
/* delta == 0 is a no-op, not a release */
|
||||||
if(delta < 0 || *addr < 0)
|
if(delta < 0 || *addr < 0)
|
||||||
error(Ebadarg);
|
error(Ebadarg);
|
||||||
|
|
|
@ -339,7 +339,7 @@ findfat(Fat *fat, int drive, ulong xbase, ulong lba)
|
||||||
return -1;
|
return -1;
|
||||||
if(buf[0x1fe] != 0x55 || buf[0x1ff] != 0xAA)
|
if(buf[0x1fe] != 0x55 || buf[0x1ff] != 0xAA)
|
||||||
return -1;
|
return -1;
|
||||||
if(lba == 0){
|
if(lba == 0 && (drive & 0x80) == 0){ /* floppy */
|
||||||
fat->drive = drive;
|
fat->drive = drive;
|
||||||
fat->partlba = 0;
|
fat->partlba = 0;
|
||||||
if(!conffat(fat, buf))
|
if(!conffat(fat, buf))
|
||||||
|
|
|
@ -1016,9 +1016,11 @@ mothon(Www *w, int on)
|
||||||
plrtstr(&t->next, 0, 0, t->font, strdup("->"), PL_HOT, ap);
|
plrtstr(&t->next, 0, 0, t->font, strdup("->"), PL_HOT, ap);
|
||||||
t->next->next = x;
|
t->next->next = x;
|
||||||
} else {
|
} else {
|
||||||
t->next = x->next;
|
if(x) {
|
||||||
x->next = nil;
|
t->next = x->next;
|
||||||
freetext(x);
|
x->next = nil;
|
||||||
|
freetext(x);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
updtext(w);
|
updtext(w);
|
||||||
|
|
Loading…
Reference in a new issue