From fc9a91c4a69532d22dc12775c28c5a32d9935f4b Mon Sep 17 00:00:00 2001 From: take_cheeze Date: Thu, 17 Jul 2014 21:48:17 +0900 Subject: [PATCH] Add field `allocf_ud` to replace current `ud`. Since some use it as `mrb_state` associated user data. --- include/mruby.h | 1 + src/gc.c | 6 +++--- src/state.c | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/include/mruby.h b/include/mruby.h index 5c99052c15..c4466de4c9 100644 --- a/include/mruby.h +++ b/include/mruby.h @@ -112,6 +112,7 @@ typedef struct mrb_state { struct mrb_jmpbuf *jmp; mrb_allocf allocf; /* memory allocation function */ + void *allocf_ud; /* auxiliary data of allocf */ struct mrb_context *c; struct mrb_context *root_c; diff --git a/src/gc.c b/src/gc.c index 8e982de6dd..84dee49580 100644 --- a/src/gc.c +++ b/src/gc.c @@ -171,10 +171,10 @@ mrb_realloc_simple(mrb_state *mrb, void *p, size_t len) { void *p2; - p2 = (mrb->allocf)(mrb, p, len, mrb->ud); + p2 = (mrb->allocf)(mrb, p, len, mrb->allocf_ud); if (!p2 && len > 0 && mrb->heaps) { mrb_full_gc(mrb); - p2 = (mrb->allocf)(mrb, p, len, mrb->ud); + p2 = (mrb->allocf)(mrb, p, len, mrb->allocf_ud); } return p2; @@ -240,7 +240,7 @@ mrb_calloc(mrb_state *mrb, size_t nelem, size_t len) void mrb_free(mrb_state *mrb, void *p) { - (mrb->allocf)(mrb, p, 0, mrb->ud); + (mrb->allocf)(mrb, p, 0, mrb->allocf_ud); } #ifndef MRB_HEAP_PAGE_SIZE diff --git a/src/state.c b/src/state.c index ff0182f22b..bd6e7e5533 100644 --- a/src/state.c +++ b/src/state.c @@ -37,7 +37,7 @@ mrb_open_core(mrb_allocf f, void *ud) if (mrb == NULL) return NULL; *mrb = mrb_state_zero; - mrb->ud = ud; + mrb->allocf_ud = ud; mrb->allocf = f; mrb->current_white_part = MRB_GC_WHITE_A; mrb->atexit_stack_len = 0;