• Russ Cox's avatar
    syscall: fix a few Linux system calls · bf68f662
    Russ Cox authored
    These functions claimed to return error (an interface)
    and be implemented entirely in assembly, but it's not
    possible to create an interface from assembly
    (at least not easily).
    
    In reality the functions were written to return an errno uintptr
    despite the Go prototype saying error.
    When the errno was 0, they coincidentally filled out a nil error
    by writing the 0 to the type word of the interface.
    If the errno was ever non-zero, the functions would
    create a non-nil error that would crash when trying to
    call err.Error().
    
    Luckily these functions (Seek, Time, Gettimeofday) pretty
    much never fail, so it was all kind of working.
    
    Found by go vet.
    
    LGTM=bradfitz, r
    R=golang-codereviews, bradfitz, r
    CC=golang-codereviews
    https://golang.org/cl/99320043
    bf68f662
syscall_unix_test.go 7.95 KB