From 225e3b011fca20bf679b10ab310a1435fc270c4e Mon Sep 17 00:00:00 2001 From: nobu Date: Tue, 13 Jan 2015 03:47:41 +0000 Subject: range.c: reduce argument evaluations * range.c (BSEARCH_CHECK): get rid of conversion of the argument multiple times. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49227 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- range.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'range.c') 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; \ -- cgit v1.2.3