diff options
| -rw-r--r-- | include/mruby.h | 4 | ||||
| -rw-r--r-- | src/gc.c | 6 | ||||
| -rw-r--r-- | src/state.c | 8 |
3 files changed, 9 insertions, 9 deletions
diff --git a/include/mruby.h b/include/mruby.h index d2a5b7449..8a586eeb0 100644 --- a/include/mruby.h +++ b/include/mruby.h @@ -41,7 +41,7 @@ typedef int32_t mrb_code; struct mrb_state; -typedef void* (*mrb_allocf) (struct mrb_state *mrb, void*, size_t); +typedef void* (*mrb_allocf) (struct mrb_state *mrb, void*, size_t, void *ud); #ifndef MRB_ARENA_SIZE #define MRB_ARENA_SIZE 1024 @@ -205,7 +205,7 @@ mrb_value mrb_str_new_cstr(mrb_state*, const char*); mrb_value mrb_str_new2(mrb_state *mrb, const char *p); mrb_state* mrb_open(void); -mrb_state* mrb_open_allocf(mrb_allocf); +mrb_state* mrb_open_allocf(mrb_allocf, void *ud); void mrb_close(mrb_state*); int mrb_checkstack(mrb_state*,int); @@ -153,11 +153,11 @@ mrb_realloc(mrb_state *mrb, void *p, size_t len) { void *p2; - p2 = (mrb->allocf)(mrb, p, len); + p2 = (mrb->allocf)(mrb, p, len, mrb->ud); if (!p2 && len > 0 && mrb->heaps) { mrb_garbage_collect(mrb); - p2 = (mrb->allocf)(mrb, p, len); + p2 = (mrb->allocf)(mrb, p, len, mrb->ud); } return p2; } @@ -188,7 +188,7 @@ mrb_calloc(mrb_state *mrb, size_t nelem, size_t len) void* mrb_free(mrb_state *mrb, void *p) { - return (mrb->allocf)(mrb, p, 0); + return (mrb->allocf)(mrb, p, 0, mrb->ud); } #ifndef MRB_HEAP_PAGE_SIZE diff --git a/src/state.c b/src/state.c index 181cd00e0..41a851380 100644 --- a/src/state.c +++ b/src/state.c @@ -14,9 +14,9 @@ void mrb_init_core(mrb_state*); void mrb_init_ext(mrb_state*); mrb_state* -mrb_open_allocf(mrb_allocf f) +mrb_open_allocf(mrb_allocf f, void *ud) { - mrb_state *mrb = (mrb_state *)(f)(NULL, NULL, sizeof(mrb_state)); + mrb_state *mrb = (mrb_state *)(f)(NULL, NULL, sizeof(mrb_state), ud); if (mrb == NULL) return NULL; memset(mrb, 0, sizeof(mrb_state)); @@ -30,7 +30,7 @@ mrb_open_allocf(mrb_allocf f) } static void* -allocf(mrb_state *mrb, void *p, size_t size) +allocf(mrb_state *mrb, void *p, size_t size, void *ud) { if (size == 0) { free(p); @@ -44,7 +44,7 @@ allocf(mrb_state *mrb, void *p, size_t size) mrb_state* mrb_open() { - mrb_state *mrb = mrb_open_allocf(allocf); + mrb_state *mrb = mrb_open_allocf(allocf, NULL); return mrb; } |
