From c2444b84249a53175c5b720099f64ea580daf315 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Tue, 1 Sep 2020 18:01:49 +0900 Subject: Redefine `CHECKPOINT_*` macros. By definition `mrb_assert()` called only when `MRB_DEBUG` is defined too. But make I wanted to make clear that the local variable `current_checkpoint_tag` is only accessed when `MRB_DEBUG` is set by wrapping with `DEBUG_ONLY_EXPR()`. --- src/vm.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/vm.c b/src/vm.c index 5f781e8bb..68725798b 100644 --- a/src/vm.c +++ b/src/vm.c @@ -919,8 +919,7 @@ prepare_tagged_break(mrb_state *mrb, uint32_t tag, const struct RProc *proc, mrb #define CHECKPOINT_RESTORE(tag) \ do { \ - DEBUG_ONLY_EXPR(int current_checkpoint_tag); \ - DEBUG_ONLY_EXPR(current_checkpoint_tag = (tag)); \ + DEBUG_ONLY_EXPR(int current_checkpoint_tag = (tag)); \ if (FALSE) { \ CHECKPOINT_LABEL_MAKE(tag): \ DEBUG_ONLY_EXPR(current_checkpoint_tag = (tag)); \ @@ -929,12 +928,12 @@ prepare_tagged_break(mrb_state *mrb, uint32_t tag, const struct RProc *proc, mrb #define CHECKPOINT_MAIN(tag) \ } while (0); \ } \ - mrb_assert((tag) == current_checkpoint_tag); \ + DEBUG_ONLY_EXPR(mrb_assert((tag) == current_checkpoint_tag)); \ do { #define CHECKPOINT_END(tag) \ } while (0); \ - mrb_assert((tag) == current_checkpoint_tag); \ + DEBUG_ONLY_EXPR(mrb_assert((tag) == current_checkpoint_tag)); \ } while (0) #ifdef MRB_DEBUG -- cgit v1.2.3