- Timestamp:
- Jul 9, 2020, 8:51:43 AM (4 years ago)
- Location:
- EcnlProtoTool/trunk/mruby-2.1.1
- Files:
-
- 1 edited
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
EcnlProtoTool/trunk/mruby-2.1.1/mrbgems/mruby-error/src/exception.c
r331 r439 9 9 struct mrb_jmpbuf c_jmp; 10 10 mrb_value result = mrb_nil_value(); 11 int ai = mrb_gc_arena_save(mrb); 11 12 12 13 if (state) { *state = FALSE; } … … 23 24 } MRB_END_EXC(&c_jmp); 24 25 26 mrb_gc_arena_restore(mrb, ai); 25 27 mrb_gc_protect(mrb, result); 26 28 return result; … … 33 35 struct mrb_jmpbuf c_jmp; 34 36 mrb_value result; 37 int ai = mrb_gc_arena_save(mrb); 35 38 36 39 MRB_TRY(&c_jmp) { … … 40 43 } MRB_CATCH(&c_jmp) { 41 44 mrb->jmp = prev_jmp; 45 mrb_gc_arena_restore(mrb, ai); 42 46 ensure(mrb, e_data); 43 47 MRB_THROW(mrb->jmp); /* rethrow catched exceptions */ 44 48 } MRB_END_EXC(&c_jmp); 45 49 50 mrb_gc_arena_restore(mrb, ai); 51 mrb_gc_protect(mrb, result); 46 52 ensure(mrb, e_data); 53 mrb_gc_arena_restore(mrb, ai); 47 54 mrb_gc_protect(mrb, result); 48 55 return result; … … 65 72 mrb_bool error_matched = FALSE; 66 73 mrb_int i; 74 int ai = mrb_gc_arena_save(mrb); 67 75 68 76 MRB_TRY(&c_jmp) { … … 83 91 84 92 mrb->exc = NULL; 93 mrb_gc_arena_restore(mrb, ai); 85 94 result = rescue(mrb, r_data); 86 95 } MRB_END_EXC(&c_jmp); 87 96 97 mrb_gc_arena_restore(mrb, ai); 88 98 mrb_gc_protect(mrb, result); 89 99 return result;
Note:
See TracChangeset
for help on using the changeset viewer.