From 975d52d804b8dda4d2f6831506913d0dcf46fe45 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Mon, 29 Apr 2013 09:11:38 +0900 Subject: fix memory leaks in mruby-random --- mrbgems/mruby-random/src/random.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/mrbgems/mruby-random/src/random.c b/mrbgems/mruby-random/src/random.c index 3dda341cb..b1d00d79e 100644 --- a/mrbgems/mruby-random/src/random.c +++ b/mrbgems/mruby-random/src/random.c @@ -17,6 +17,7 @@ static void mt_state_free(mrb_state *mrb, void *p) { + mrb_free(mrb, p); } static const struct mrb_data_type mt_state_type = { @@ -191,8 +192,6 @@ static mrb_value mrb_random_rand(mrb_state *mrb, mrb_value self) if (mrb_nil_p(seed)) { mrb_random_mt_srand(mrb, t, mrb_nil_value()); } - mrb_iv_set(mrb, self, mrb_intern(mrb, MT_STATE_KEY), - mrb_obj_value(Data_Wrap_Struct(mrb, mrb->object_class, &mt_state_type, (void*) t))); return mrb_random_mt_rand(mrb, t, max); } @@ -206,8 +205,7 @@ static mrb_value mrb_random_srand(mrb_state *mrb, mrb_value self) seed = mrb_random_mt_srand(mrb, t, seed); old_seed = mrb_iv_get(mrb, self, mrb_intern(mrb, INSTANCE_RAND_SEED_KEY)); mrb_iv_set(mrb, self, mrb_intern(mrb, INSTANCE_RAND_SEED_KEY), seed); - mrb_iv_set(mrb, self, mrb_intern(mrb, MT_STATE_KEY), - mrb_obj_value(Data_Wrap_Struct(mrb, mrb->object_class, &mt_state_type, (void*) t))); + return old_seed; } -- cgit v1.2.3