mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
Remove do { ... } while(0) hacks from MRB_TRY macros.
Because it can swallow `break` etc. if they are used in loops.
This commit is contained in:
@@ -15,9 +15,9 @@
|
||||
|
||||
#if defined(MRB_ENABLE_CXX_EXCEPTION) && defined(__cplusplus)
|
||||
|
||||
#define MRB_TRY(buf) do { try {
|
||||
#define MRB_TRY(buf) try {
|
||||
#define MRB_CATCH(buf) } catch(mrb_jmpbuf_impl e) { if (e != (buf)->impl) { throw e; }
|
||||
#define MRB_END_EXC(buf) } } while(0)
|
||||
#define MRB_END_EXC(buf) }
|
||||
|
||||
#define MRB_THROW(buf) throw((buf)->impl)
|
||||
typedef mrb_int mrb_jmpbuf_impl;
|
||||
@@ -34,9 +34,9 @@ typedef mrb_int mrb_jmpbuf_impl;
|
||||
#define MRB_LONGJMP longjmp
|
||||
#endif
|
||||
|
||||
#define MRB_TRY(buf) do { if (MRB_SETJMP((buf)->impl) == 0) {
|
||||
#define MRB_TRY(buf) if (MRB_SETJMP((buf)->impl) == 0) {
|
||||
#define MRB_CATCH(buf) } else {
|
||||
#define MRB_END_EXC(buf) } } while(0)
|
||||
#define MRB_END_EXC(buf) }
|
||||
|
||||
#define MRB_THROW(buf) MRB_LONGJMP((buf)->impl, 1);
|
||||
#define mrb_jmpbuf_impl jmp_buf
|
||||
|
||||
Reference in New Issue
Block a user