diff options
| author | usa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-07-08 17:19:01 +0000 |
|---|---|---|
| committer | usa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-07-08 17:19:01 +0000 |
| commit | 33d7ba8085d10ee228222f2d2e249e77d5b06ce0 (patch) | |
| tree | ead1d991e5e1f87a98252c8b2fb4d31e0ca590c1 /cont.c | |
| parent | e5f2b0236f759e89f0db28375482e72d668d15e0 (diff) | |
| download | ruby-33d7ba8085d10ee228222f2d2e249e77d5b06ce0.tar.gz ruby-33d7ba8085d10ee228222f2d2e249e77d5b06ce0.tar.xz ruby-33d7ba8085d10ee228222f2d2e249e77d5b06ce0.zip | |
* cont.c (cont_restore_1): workaround for x64-mswin64's SEH.
git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@12725 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'cont.c')
| -rw-r--r-- | cont.c | 9 |
1 files changed, 9 insertions, 0 deletions
@@ -237,6 +237,15 @@ cont_restore_1(rb_context_t *cont) th->first_proc = sth->first_proc; /* restore machine stack */ +#ifdef _M_AMD64 + { + /* workaround for x64 SEH */ + jmp_buf buf; + setjmp(buf); + ((_JUMP_BUFFER*)(&cont->jmpbuf))->Frame = + ((_JUMP_BUFFER*)(&buf))->Frame; + } +#endif if (cont->machine_stack_src) { MEMCPY(cont->machine_stack_src, cont->machine_stack, VALUE, cont->machine_stack_size); |
