summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--mrbgems/mruby-cmath/src/cmath.c2
-rw-r--r--mrbgems/mruby-method/src/method.c16
2 files changed, 13 insertions, 5 deletions
diff --git a/mrbgems/mruby-cmath/src/cmath.c b/mrbgems/mruby-cmath/src/cmath.c
index 8b0c4d04a..de59adf96 100644
--- a/mrbgems/mruby-cmath/src/cmath.c
+++ b/mrbgems/mruby-cmath/src/cmath.c
@@ -92,7 +92,7 @@ CXDIVc(mrb_complex a, mrb_complex b)
#else
-#if defined(__cplusplus) && defined(__APPLE__)
+#if defined(__cplusplus) && (defined(__APPLE__) || (defined(__clang__) && (defined(__FreeBSD__) || defined(__OpenBSD__))))
#ifdef MRB_USE_FLOAT32
typedef std::complex<float> mrb_complex;
diff --git a/mrbgems/mruby-method/src/method.c b/mrbgems/mruby-method/src/method.c
index 18fcaa03a..85e8872e2 100644
--- a/mrbgems/mruby-method/src/method.c
+++ b/mrbgems/mruby-method/src/method.c
@@ -46,10 +46,18 @@ args_unshift(mrb_state *mrb, mrb_value obj)
if (ci->n < 15) {
mrb_assert(ci->nk == 0 || ci->nk == 15);
- argv[0] = mrb_ary_new_from_values(mrb, ci->n, argv);
- argv[1] = argv[ci->n]; // keyword or block
- if (ci->nk == 15) {
- argv[2] = argv[ci->n + 1]; // block
+ mrb_value args = mrb_ary_new_from_values(mrb, ci->n, argv);
+ if (ci->nk == 0) {
+ mrb_value block = argv[ci->n];
+ argv[0] = args;
+ argv[1] = block;
+ }
+ else {
+ mrb_value keyword = argv[ci->n];
+ mrb_value block = argv[ci->n + 1];
+ argv[0] = args;
+ argv[1] = keyword;
+ argv[2] = block;
}
ci->n = 15;
}