• Keith Randall's avatar
    cgo: adjust return value location to account for stack copies. · 1b6807bb
    Keith Randall authored
    During a cgo call, the stack can be copied.  This copy invalidates
    the pointer that cgo has into the return value area.  To fix this
    problem, pass the address of the location containing the stack
    top value (which is in the G struct).  For cgo functions which
    return values, read the stktop before and after the cgo call to
    compute the adjustment necessary to write the return value.
    
    Fixes #8771
    
    LGTM=iant, rsc
    R=iant, rsc, khr
    CC=golang-codereviews
    https://golang.org/cl/144130043
    1b6807bb
callback_c.c 1.13 KB