From 8b216995ccead9982ce3b9fbe507b68764483311 Mon Sep 17 00:00:00 2001 From: Varun Patil Date: Sat, 28 Apr 2018 14:40:59 +0530 Subject: [PATCH] Fix segmentation fault while passing data in mruby binding --- binding-mruby/binding-util.h | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/binding-mruby/binding-util.h b/binding-mruby/binding-util.h index b20427f..df97e47 100644 --- a/binding-mruby/binding-util.h +++ b/binding-mruby/binding-util.h @@ -28,6 +28,7 @@ #include #include #include +#include #include @@ -352,11 +353,13 @@ inline mrb_value objectLoad(mrb_state *mrb, mrb_value self, const mrb_data_type &type) { RClass *klass = mrb_class_ptr(self); - char *data; - int data_len; - mrb_get_args(mrb, "s", &data, &data_len); - C *c = C::deserialize(data, data_len); + mrb_value data; + mrb_get_args(mrb, "S", &data); + + int data_len = mrb_string_value_len(mrb, data); + + C *c = C::deserialize(RSTRING_PTR(data), data_len); RData *obj = mrb_data_object_alloc(mrb, klass, c, &type); mrb_value obj_value = mrb_obj_value(obj);