This commit is contained in:
cinap_lenrek 2013-09-25 20:27:34 +02:00
commit 7265a09524
3 changed files with 19 additions and 11 deletions

View file

@ -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);

View file

@ -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))

View file

@ -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);