From c4c37b2069cc8f51965314ca27b8180046d1ea2b Mon Sep 17 00:00:00 2001 From: Ryan Lopopolo Date: Thu, 23 Jun 2022 21:38:55 -0700 Subject: [PATCH 1/3] Fix mismatched braces in `extern "C"` blocks when compiling as C++ When compiling mruby with `-DMRB_USE_CXX_EXCEPTION`, clang fails to compile and emits these warnings: vendor/mruby/src/vm.c:3066:1: error: extraneous closing brace ('}') } /* end of extern "C" */ ^ vendor/mruby/src/vm.c:3072:7: error: expected '}' #endif ^ vendor/mruby/src/vm.c:3070:12: note: to match this '{' extern "C" { ^ 2 errors generated. Fixup the implementation of the `extern "C"` block in `vm.c`. --- src/vm.c | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/vm.c b/src/vm.c index 831205f55..f6cf2baa1 100644 --- a/src/vm.c +++ b/src/vm.c @@ -27,9 +27,6 @@ extern "C" { #endif void abort(void); -#if defined(__cplusplus) -} /* extern "C" { */ -#endif #endif #define STACK_INIT_SIZE 128 @@ -3082,7 +3079,4 @@ mrb_top_run(mrb_state *mrb, const struct RProc *proc, mrb_value self, mrb_int st } /* end of extern "C" */ # endif mrb_int mrb_jmpbuf::jmpbuf_id = 0; -# if !defined(MRB_USE_CXX_ABI) -extern "C" { -# endif #endif From 3af82fbb51e512ad79a0051570493ee4af9fa12f Mon Sep 17 00:00:00 2001 From: Ryan Lopopolo Date: Thu, 23 Jun 2022 21:54:53 -0700 Subject: [PATCH 2/3] Respect MRB_USE_CXX_ABI #define --- src/vm.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/vm.c b/src/vm.c index f6cf2baa1..358d34e64 100644 --- a/src/vm.c +++ b/src/vm.c @@ -27,6 +27,15 @@ extern "C" { #endif void abort(void); +#if defined(__cplusplus) +} /* extern "C" { */ +#endif +#endif + +#if defined(__cplusplus) +# if !defined(MRB_USE_CXX_ABI) +extern "C" { +# endif #endif #define STACK_INIT_SIZE 128 From 8a5e6f47f28a73d2d37907aa9e680f36c7144d34 Mon Sep 17 00:00:00 2001 From: Ryan Lopopolo Date: Thu, 23 Jun 2022 22:25:15 -0700 Subject: [PATCH 3/3] Match #if at end of vm.c --- src/vm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vm.c b/src/vm.c index 358d34e64..25f43b0ed 100644 --- a/src/vm.c +++ b/src/vm.c @@ -32,7 +32,7 @@ void abort(void); #endif #endif -#if defined(__cplusplus) +#if defined(MRB_USE_CXX_EXCEPTION) && defined(__cplusplus) # if !defined(MRB_USE_CXX_ABI) extern "C" { # endif