diff --git a/kernel/syscall/skeleton.cc b/kernel/syscall/skeleton.cc index a139503..afe1da3 100644 --- a/kernel/syscall/skeleton.cc +++ b/kernel/syscall/skeleton.cc @@ -66,16 +66,16 @@ size_t read(Vault &vault, uint32_t id, void *buf, size_t len) { (void)id; size_t read_cnt = 0; - while(read_cnt <= len){ + while(read_cnt < len){ Key key; vault.keys_sem.p(vault); vault.keys.consume(key); if(key.valid()) ((char*)buf)[read_cnt++] = key.ascii(); else - return read_cnt; + break; } - return len; + return read_cnt; } void sleep(Vault &vault, size_t ms) { diff --git a/kernel/user/app2/kappl.cc b/kernel/user/app2/kappl.cc index 8c714b5..7f85175 100644 --- a/kernel/user/app2/kappl.cc +++ b/kernel/user/app2/kappl.cc @@ -15,7 +15,7 @@ void KeyboardApplication::action() { // NOLINT while(1){ char msg[11]; int len; - len = read(0, msg, 10); + len = read(0, msg, 1); if(len){ write(0, msg, len); memcpy(&cmd_buff[bufferpos], msg, len);