From c6f0452d135fa637bdfbc838473e82a89c7875fe Mon Sep 17 00:00:00 2001 From: Jonas Minnberg Date: Sun, 12 Dec 2021 16:14:53 +0100 Subject: [PATCH] Added comments about removal of objects[] Made mrb_get_args_v() static --- include/mruby/gc.h | 2 ++ src/class.c | 2 +- src/gc.c | 4 ++++ 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/include/mruby/gc.h b/include/mruby/gc.h index db2d5ad4a..b8cc64a27 100644 --- a/include/mruby/gc.h +++ b/include/mruby/gc.h @@ -48,6 +48,8 @@ typedef struct mrb_heap_page { struct mrb_heap_page *free_next; struct mrb_heap_page *free_prev; mrb_bool old:1; + /* Flexible array members area a C99 feature, not C++ compatible */ + /* void* objects[]; */ } mrb_heap_page; #ifdef _MSC_VER diff --git a/src/class.c b/src/class.c index d624f0db0..35449c9d3 100644 --- a/src/class.c +++ b/src/class.c @@ -869,7 +869,7 @@ mrb_block_given_p(mrb_state *mrb) return !mrb_nil_p(b); } -mrb_int mrb_get_args_v(mrb_state *mrb, mrb_args_format format, void** ptr, va_list ap); +static mrb_int mrb_get_args_v(mrb_state *mrb, mrb_args_format format, void** ptr, va_list ap); /* retrieve arguments from mrb_state. diff --git a/src/gc.c b/src/gc.c index 0e7f1cfcb..9e130f804 100644 --- a/src/gc.c +++ b/src/gc.c @@ -214,6 +214,10 @@ mrb_static_assert(MRB_GC_RED <= GC_COLOR_MASK); #define other_white_part(s) ((s)->current_white_part ^ GC_WHITES) #define is_dead(s, o) (((o)->color & other_white_part(s) & GC_WHITES) || (o)->tt == MRB_TT_FREE) +/* We have removed `objects[]` from `mrb_heap_page` since it was not C++ + * compatible. Using array index to get pointer after structure instead. */ + +/* #define objects(p) ((RVALUE *)p->objects) */ #define objects(p) ((RVALUE *)&p[1]) mrb_noreturn void mrb_raise_nomemory(mrb_state *mrb);