summaryrefslogtreecommitdiffhomepage
path: root/include
diff options
context:
space:
mode:
authorKazuho Oku <[email protected]>2016-01-01 06:24:49 +0900
committerKazuho Oku <[email protected]>2016-01-01 06:24:49 +0900
commitf4bb329c748a9c1de2a373b5ddeb1e4baf6ac8d8 (patch)
treecdac85223eb687a91298863d4e46c4c34d4678c2 /include
parent38b9c2d3085e6d300ec36b5a38e31f8b4927c4fc (diff)
downloadmruby-f4bb329c748a9c1de2a373b5ddeb1e4baf6ac8d8.tar.gz
mruby-f4bb329c748a9c1de2a373b5ddeb1e4baf6ac8d8.zip
use _setjmp/_longjmp on OS X
Diffstat (limited to 'include')
-rw-r--r--include/mruby/throw.h12
1 files changed, 10 insertions, 2 deletions
diff --git a/include/mruby/throw.h b/include/mruby/throw.h
index 7f720d512..77ef5ac21 100644
--- a/include/mruby/throw.h
+++ b/include/mruby/throw.h
@@ -20,11 +20,19 @@ typedef mrb_int mrb_jmpbuf_impl;
#include <setjmp.h>
-#define MRB_TRY(buf) do { if (setjmp((buf)->impl) == 0) {
+#if defined(__APPLE__)
+#define MRB_SETJMP _setjmp
+#define MRB_LONGJMP _longjmp
+#else
+#define MRB_SETJMP setjmp
+#define MRB_LONGJMP longjmp
+#endif
+
+#define MRB_TRY(buf) do { if (MRB_SETJMP((buf)->impl) == 0) {
#define MRB_CATCH(buf) } else {
#define MRB_END_EXC(buf) } } while(0)
-#define MRB_THROW(buf) longjmp((buf)->impl, 1);
+#define MRB_THROW(buf) MRB_LONGJMP((buf)->impl, 1);
#define mrb_jmpbuf_impl jmp_buf
#endif