diff --git a/src/ft_read.s b/src/ft_read.s index 8b2fb73..a645b77 100644 --- a/src/ft_read.s +++ b/src/ft_read.s @@ -5,11 +5,13 @@ section .text global ft_read ft_read: + cmp rsi, 0 ; check if the buffer is NULL + je .exit ; if true go to exit mov rax, 0 ; syscall 0 is for read syscall ; call the system call read cmp rax, 0 ; check if the return value of syscall jl .error ; jump if the syscall return less than 0 - ret ; return the value of the syscall + jmp .exit ; jump to exit .error: mov rdi, rax ; stock errno value in rdi @@ -17,4 +19,7 @@ ft_read: call __errno_location ; rax = &errno mov [rax], edi ; stock the errno return in the address of rax mov rax, -1 ; set the value of rax to -1 - ret ; return with -1 (and errno value) + jmp .exit ; jump to exit + +.exit: + ret