Hi! blockio():
- small code cleanup and optimization. - many variables (like `ret') moved deeply (by adding curly braces) - for BC this noticeably decreases stack usage.
--- Begin Message ---diff -ruNp old/kernel/dsk.c new/kernel/dsk.c --- old/kernel/dsk.c 2004-06-11 04:24:14.000000000 +0000 +++ new/kernel/dsk.c 2004-06-11 04:29:24.000000000 +0000 @@ -721,12 +721,8 @@ STATIC WORD Genblkdev(rqptr rp, ddt * pd STATIC WORD blockio(rqptr rp, ddt * pddt) { - ULONG start, size; - WORD ret; - UWORD done; - + ULONG start; int action; - bpb *pbpb; switch (rp->r_command) { @@ -748,23 +744,20 @@ STATIC WORD blockio(rqptr rp, ddt * pddt tmark(pddt); start = (rp->r_start != HUGECOUNT ? rp->r_start : rp->r_huge); - pbpb = hd(pddt->ddt_descflags) ? &pddt->ddt_defbpb : &pddt->ddt_bpb; - size = (pbpb->bpb_nsize ? pbpb->bpb_nsize : pbpb->bpb_huge); - - if (start >= size || start + rp->r_count > size) { - return 0x0408; + const bpb *pbpb = hd(pddt->ddt_descflags) ? &pddt->ddt_defbpb : &pddt->ddt_bpb; + ULONG size = (pbpb->bpb_nsize ? pbpb->bpb_nsize : pbpb->bpb_huge); + if (start >= size || rp->r_count > size - start) + return 0x0408; } - start += pddt->ddt_offset; - - ret = LBA_Transfer(pddt, action, - rp->r_trans, - start, rp->r_count, &done); - rp->r_count = done; - if (ret != 0) { - return dskerr(ret); + UWORD done; + int ret = LBA_Transfer(pddt, action, rp->r_trans, + start + pddt->ddt_offset, rp->r_count, &done); + rp->r_count = done; + if (ret) + return dskerr(ret); } return S_DONE; }
--- End Message ---
