diff --git a/range.c b/range.c index f4ab7e1344..ae16ae4dd5 100644 --- a/range.c +++ b/range.c @@ -587,8 +587,9 @@ range_bsearch(VALUE range) * (-1...0.0).bsearch to yield -0.0. */ -#define BSEARCH_CHECK(val) \ +#define BSEARCH_CHECK(expr) \ do { \ + VALUE val = (expr); \ VALUE v = rb_yield(val); \ if (FIXNUM_P(v)) { \ if (FIX2INT(v) == 0) return val; \