diff --git a/Part3/09_memory/kernel/kernel.c b/Part3/09_memory/kernel/kernel.c index b2b2daa..e78ea74 100644 --- a/Part3/09_memory/kernel/kernel.c +++ b/Part3/09_memory/kernel/kernel.c @@ -39,7 +39,11 @@ if (sstrlen(input, 15) > 4) { char *number = input + 4; u32 result = digit_conver(number); - if (result < 10000 || result == -1) { + int nDigits = floor(log10(abs(result))) + 1; + if (sstrlen(*number, 15) > nDigits + 4) { + kprint("There is a limit"); + } + if (result < 10000) { kprint("That memory address is reserved by the Kernel, addresses must be 10000+"); } else { umem_head = add_node( umem_head, result, 0x100, true, global_id++); @@ -120,8 +124,7 @@ int digit = (hexChar >= '0' && hexChar <= '9') ? (hexChar - '0') : (10 + (hexChar - 'A')); result = result * 16 + digit; } else { - kprint("Invalid hex input\n"); - return -1; + break; } hexString++; }