From 16be2c4b231e7b4e6d626a118818f4283e1ae03a Mon Sep 17 00:00:00 2001 From: Alan Cox Date: Thu, 14 Dec 2017 11:48:30 +0000 Subject: [PATCH] kernel: avoid switch in lseek Not all our compilers do the smart thing with this, and we get better code using if statements on those that don't. --- Kernel/syscall_fs.c | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/Kernel/syscall_fs.c b/Kernel/syscall_fs.c index c4b1605a..0fe1bf61 100644 --- a/Kernel/syscall_fs.c +++ b/Kernel/syscall_fs.c @@ -44,21 +44,18 @@ arg_t _lseek(void) o = &of_tab[udata.u_files[file]]; p = o->o_ptr; - switch (flag) { - case 0: + if (flag == 0) p = n; - break; - case 1: + else if (flag == 1) p += n; - break; - case 2: + else if (flag == 2) p = ino->c_node.i_size + n; - break; - default: + else goto bad; - } + if (p < 0) goto bad; + o->o_ptr = p; uput(&p, offset, sizeof(n)); return 0; -- 2.34.1