X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fcompiler%2Fx86%2Fcall.lisp;h=b0bbd96441847c135c5359453c2b51dc170076b0;hb=37b1ed8e9b6faa84832b8251998b5d0eb1f6b307;hp=58100b73e2d37bd710ca955efb06773bf2e7dde3;hpb=20102d9bd3c62691cc2c27725ff7ffdcab54ab2b;p=sbcl.git diff --git a/src/compiler/x86/call.lisp b/src/compiler/x86/call.lisp index 58100b7..b0bbd96 100644 --- a/src/compiler/x86/call.lisp +++ b/src/compiler/x86/call.lisp @@ -1202,7 +1202,10 @@ ;; Problem: this might leave some &more args outside esp, so ;; clamp the movement for now. If fixed > frame-size, reset ;; esp to the end of the current &more args (which *should* - ;; be a noop?) + ;; be a noop?), and only set esp to its final value after the + ;; stack-stack memmove loop. Otherwise, an unlucky signal + ;; could end up overwriting the &more arguments before they're + ;; moved in their final place. (inst lea ebx-tn (make-ea :dword :base ebp-tn :disp (* n-word-bytes